Java 9 i interaktywny interpreter REPL

| 7 sierpnia 2015

Osoby nie przepadające za Javą często zarzucają jej, że stworzenie nawet bardzo prostej aplikacji wymaga w niej sporego nakładu pracy. Zasadniczo ciężko się z tym stwierdzeniem nie zgodzić, bo nawet do wyświetlenia Hello World nie ominie nas napisanie kilku linii kodu związanego z definicją klasy i wywołaniem metody main(). Jest to szczególnie uciążliwe, jeśli chcemy zademonstrować konkretną funkcjonalność – np. działanie wyrażań lambda z Javy 8 lub też wykorzystać podstawowe klasy z API do prostych operacji.

W Javie 9, której premiera planowana jest na wrzesień 2016 roku, planowane jest wprowadzenie kilku sporych modyfikacji, ale jednym z najbardziej oczekiwanych dodatków jest wprowadzenie interpretera REPL(read-eval-print loop), który znany jest zapewne każdemu, kto miał przynajmniej niewielką styczność z językami takimi jak Python, czy Ruby. Jego główne założenie to możliwość wpisywania komend i otrzymywanie wyniku bez konieczności definiowania typowego dla Javy, wspomnianego wcześniej kodu typu boilerplate.

Jeżeli więc będziemy chcieli wyliczyć wynik działania 2+2 nie będzie konieczne tworzenie klasy, metody main(), wywołanie metody System.out.println(2+2) – wystarczy wykonanie samej istotnej operacji. Ucieszą się więc z pewnością wszyscy, który prowadzą prelekcje, warsztaty, szkolenia, czy też wykładowcy i w zasadzie każdy kto Javę wykorzystuje na co dzień niekoniecznie do super skomplikowanych projektów.

kulla_powershell_min

REPL w Javie rozwijany jest w ramach projektu Kulla, który ostatecznie ma przybrać nazwę JShell. W internecie można znaleźć kilka anglojęzycznych artykułów na jego temat, niestety część z nich jest już nieaktualna. W większości przypadków pokazane jest jak pobrać kod projektu z repozytorium, jak go później zbudować i na końcu uruchomić. Problem w tym, że cały proces trwa stosunkowo długo, a tak naprawdę nie jest to konieczne. Dużo wygodniejsze będzie pobranie już skompilowanej i spakowanej wczesnej wersji projektu.

1. Instalacja

Java 9 pojawi się dopiero za ponad rok, jednak już teraz można skorzystać z niektórych jej elementów we wczesnej fazie rozwoju. Żeby to zrobić, musimy pobrać i zainstalować Javę(najlepiej JDK) 9. Jedyna uwaga z mojej strony jest taka, że Eclipse może mieć po tej operacji problemy z uruchomieniem z powodu reorganizacji niektórych elementów, dlatego na końcu warto wrócić do podstawowej konfiguracji i ustawić zmienne Path, czy JAVA_HOME z powrotem na JDK 8.

Aktualną wersję Javy 9 można pobrać z tej strony, instalacja odbywa się standardowo.

Skompilowaną wersję projektu kulla można z kolei znaleźć tutaj, co też czynimy.

Zmienną środowiskową musimy chwilowo przestawić na Javę 9, więc najprawdopodobniej musisz podmienić w zmiennej Path JDK z 8 na 9.

java9 pathjava version 9

2. Uruchomienie i testy

Pobrany plik uruchamiamy wywołując komendę:

java -jar kulla.jar

(uwzględniając oczywiście nazwę pliku jar)

Na Windowsie pojawi się co prawda pewien problem, jednak nie ma on znaczenia w kontekście działania interpretera.

kulla running

Poniżej można zobaczyć film z kilkoma prostymi rzeczami, które możemy zrobić w takim interaktywnym interpreterze. Bardzo dobre narzędzie do nauki np. programowania funkcyjnego i pracy ze strumieniami.

2 thoughts on “Java 9 i interaktywny interpreter REPL

  1. havoc

    Czy średniki działają tak jak w powłokach typu Bash, rozdzielając poszczególne komendy?

    Reply
    1. JavaStart Post author

      Cała sztuczka polega na tym, że średniki są tutaj w większości przypadków opcjonalne. Jeśli wpiszesz komendę /list to zobaczysz, że są one dodawane do instrukcji automatycznie. Dodatkowo w JShellu można definiować również tradycyjne metody, wtedy ich zasięg wyznaczony jest przez nawiasy klamrowe – w jej ciele średniki są już potrzebne.

      Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *