Powłoka Java Shell – JShell (REPL)

Powłoka Java Shell – JShell (REPL)

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *