JShell er et interaktivt verktøy som er nyttig for å lære Java, men også for rask testing av mindre kodebiter.
Vi viser her hvordan du kommer i gang med dette verktøyet. Nederst på siden finner du lenker til mer omfattende innføringer i JShell.
JShell følger med som del av JDK 9 (og seinere versjoner). Du finner programmet på bin-katalogen til JDK, samme sted som java og javac ligger. For enkel bruk av JShell bør du legge denne katalogen inn i PATH. Da kan du starte JShell som følger (der -v er valgfritt, men sørger for at JShell gir litt mer utfyllende beskjeder, v står for verbose):
jshell -v
Du får se en velkomstmelding, etterfulgt av en ledetekst:
jshell>
Dette betyr at JShell venter på en kommando fra deg. Prøv følgende:
jshell> /help intro
Det finnes en rekke kommandoer i JShell i tillegg til /help. Skriv /help uten intro etterpå for å se hele listen.
For å avslutte JShell:
jshell> /exit
Du kan skrive Java-setninger rett inn i JShell. For å skrive ut en melding:
jshell> System.out.println("Hei verden!"); Hei verden
For å slippe unna med en kortere utskriftssetning, slik det gjøres i boken, så støtter JShell (statiske) importsetninger:
jshell> import static java.lang.System.*; jshell> out.println("Hei verden!"); Hei verden
Noen av pakkene i Java-biblioteket er allerede importert. For å se hvilke:
jshell> /import | 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.* | import static java.lang.System.*
Du kan deklarere og initiere variabler, gi variablene nye verdier og skrive ut verdiene deres. JShell gir et svar for hver enkelt setning. Svar som starter med | er en utfyllende forklaring som bare blir vist når JShell kjøres i "pratsomt" modus (startet med opsjon -v).
jshell> int x = 2; x ==> 2 | created variable x : int jshell> x = x+1; x ==> 3 | assigned to x : int jshell> out.println("x er " + x); x er 3
Du kan få JShell til å regne ut uttrykk. Verdien til hvert nye uttrykk blir tatt vare på i en hjelpevariabel. Slike variabler får navn $1, $2, $3 osv. og kalles for "scratch-variabler".
jshell> 2+2 $1 ==> 4 | created scratch variable $1 : int jshell> $1+10 $2 ==> 14 | created scratch variable $2 : int
Du kan ta i bruk alle byggeklossene til Java i JShell, som f.eks. valg, løkker, metoder, klasser og objekt. Vi nøyer oss med å vise hvordan man kan definere og kalle en metode for å beregne fakultetsfunksjonen:
jshell> int fak(int n) { ...> int f = 1; ...> while (n>1) { ...> f = f*n; ...> n--; ...> } ...> return f; ...> } | created method fak(int) jshell> fak(5) $3 ==> 120 | created scratch variable $3 : int
Hver setning og hvert uttrykk du skriver inn blir til en såkallt "snippet". Du kan få JShell til å skrive ut alle slike snippets:
jshell> /list
Hvis du har behov for å gjenta en tidligere snippet, kan du bruke oppoverpil på tastaturet for å bla deg bakover.
For å se hvilke variabler du har deklarert:
jshell> /vars
For å se hvilke metoder du har deklarert:
jshell> /methods
Java Shell User’s Guide ☆ Java 9 – Exploring the REPL ☆ JShell: A Comprehensive Guide to the Java REPL ☆ Introduction to the first official Java REPL – JShell