Java 9 JShell (REPL): Interaktives Coding & Testen leicht gemacht
Was ist JShell?
JShell (Java Shell) bringt REPL (Read-Eval-Print Loop) nach Java: Code-Schnipsel eingeben, sofort ausführen, Ergebnis sehen – ohne javac/java Zyklus. Ideal für Exploration, Prototyping, Learning & schnelle Tests.
Starten & Grundlagen
$ jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell>
Wichtige JShell-Befehle
| Befehl | Funktion |
|---|---|
/help |
Hilfe anzeigen. |
/list [name|id|-all|-start] |
Eingegebene Snippets auflisten. |
/edit name|id |
Snippet im externen Editor bearbeiten. |
/drop name|id |
Snippet löschen. |
/save [-all|-history|-start] file |
Snippets in Datei speichern. |
/open file |
Datei als Snippets laden. |
/vars |
Deklarierte Variablen & Werte anzeigen. |
/methods |
Deklarierte Methoden & Signaturen anzeigen. |
/types |
Deklarierte Typen (Klassen, Interfaces, Enums) anzeigen. |
/imports |
Importierte Pakete anzeigen. |
/exit |
JShell beenden. |
Standard-Imports
jshell> /imports
| import java.io.*
| import java.math.*
| import java.net.*
| import java.nio.file.*
| import java.util.*
| import java.util.concurrent.*
| import java.util.function.*
| import java.util.prefs.*
| import java.util.regex.*
| import java.util.stream.*
Rechnen & Variablen
jshell> 3 + 1
$1 ==> 4
jshell> 13 % 7
$2 ==> 6
jshell> $2
$2 ==> 6
jshell> var x = 10
x ==> 10
jshell> x * 2
$4 ==> 20
JShell vergibt automatisch Variablennamen $1, $2 … für Ausdrücke ohne Zuweisung.
Funktionen definieren & nutzen
jshell> int verdoppeln(int i) { return i * 2; }
| created method verdoppeln(int)
jshell> verdoppeln(6)
$5 ==> 12
jshell> String begruessung(String name) { return "Hallo " + name; }
| created method begruessung(String)
jshell> begruessung("Welt")
$6 ==> "Hallo Welt"
Klassen & Interfaces definieren
jshell> class Punkt {
...> int x, y;
...> Punkt(int x, int y) { this.x = x; this.y = y; }
...> double abstand() { return Math.hypot(x, y); }
...> }
| created class Punkt
jshell> new Punkt(3, 4).abstand()
$7 ==> 5.0
Exceptions & Kontrolle
jshell> int div(int a, int b) { return a / b; }
jshell> div(10, 0)
| Exception java.lang.ArithmeticException: / by zero
| at div (#8:1)
| at (#9:1)
jshell> /reset
| Resetting state...
Externen Editor nutzen
jshell> /set editor vim
jshell> /edit verdoppeln
# öffnet vim, nach Speichern & Schließen wird Methode aktualisiert
Beenden
jshell> /exit
| Goodbye
Tipps für den Alltag
jshell --startup PRINTING– zeigt Ergebnisse automatisch an.jshell --feedback concise– kompaktere Ausgabe.- In IDEs (IntelliJ, Eclipse, VS Code) oft integriert als „Scratchpad“ / „REPL“.
- Für schnelle API-Exploration:
new ArrayList<>().Tab zeigt Methoden.
Java
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java Kommentare: Typen, Verwendung und Best Practices
- Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
- Java Strings meistern: Erstellung, Methoden und Best Practices
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
- Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList