Każda nowa wersja języka Java dostarcza jakichś mniej lub bardziej interesujących nowości. Java 8 przyniosła ich dość sporo i choć w wersji 9 nie pojawiło się już tak wiele nowych rzeczy, to trudno byłoby nie wspomnieć o ciekawym narzędziu typu REPL (Read-Evaluate-Print Loop) o nazwie JShell (Java Shell). Jest to oprogramowanie, które w znacznym stopniu ułatwia sprawdzanie działania poszczególnych elementów języka (np. nowych bibliotek), ale pozwala też na „eksperymentowanie” z kodem, czy nawet pisanie całych programów.
Zacznijmy może od jakiegoś konkretnego przykładu. Co gdybyśmy przy użyciu Javy chcieli napisać i uruchomić klasyczny program „Hello World!”?
Najpierw wypadałoby stworzyć jakiś plik z rozszerzeniem .java. Niech w tym przypadku będzie to plik App.java. W jego wnętrz umieszczamy publiczną klasę o takiej samej nazwie zawierającą metodę uruchomieniową main i kod odpowiedzialny za wyświetlenie napisu „Hello World!”.
public class App { public static void main(String[] args) { System.out.println("Hello World!"); } }
W kolejnym kroku musimy skompilować nasz kod…
javac App.java
… i nareszcie uruchomić program.
java App
Z jednej strony przy odrobinie wprawy wykonanie wszystkich powyższych kroków nie powinno zająć więcej niż kilkadziesiąt sekund. Z drugiej jednak, to nadal dość dużo, jak na potrzebę wyświetlenia prostego ciągu znaków, czy przetestowanie jakiejś biblioteki.
Z pozoru proste narzędzie JShell wprowadzone w Javie 9 znacznie ułatwia sprawę, ponieważ w jego przypadku nie musimy już tworzyć całej klasy wraz z metodą uruchomieniową w celu sprawdzenia prostej funkcjonalności.
Jeśli mamy już zainstalowane JDK w wersji 9, narzędzie JShell uruchamiamy wpisując w terminalu:
jshell
Od teraz w terminalu możemy wykonywać praktycznie dowolny kod Javy.
Wróćmy więc do „Hello World!”. Dzięki wykorzystaniu powłoki JShell kod naszego programu wyglądać może następująco.
System.out.println("Hello World!");
W taki sposób definiować możemy nawet całe metody, czy klasy:
public int add(int... nums) { int sum = 0; for (int i : nums) sum += i; return sum; }
Teraz możemy wywołać taką metodę i przypisać jej wartość do zmiennej:
int i = add(1, 2, 3, 4); // 10.
Jeśli chcielibyśmy zobaczyć cały dotychczas wpisany przez nas kod, możemy wpisać w terminalu:
/list
Ja w tym momencie zobaczę:
jshell> /list 1 : System.out.println("Hello World!"); 2 : public int add(int... nums) { int sum = 0; for (int i : nums) sum += i; return sum; } 3 : int i = add(1, 2, 3, 4); // 10.
Powłoka JShell pozwala również na edytowanie kodu w edytorze JShell Edit Pad posiadającym jako takie GUI, co pod pewnymi względami może być wygodniejsze. By uruchomić edytor wpisujemy:
/edit