JShell

Tabela przedstawia podstawowe polecenia JShell.

Polecenie Opis
/help lub /? Wyświetla listę poleceń JShell.
/help intro Wyświetla krótkie wprowadzenie do JShell.
/help shortcuts Wyświetla opisy kilku skrótów klawiaturowych JShell.
/list Domyślnie wyświetla listę poprawnych fragmentów wpisanych w aktualnej sesji. Aby wyświetlić wszystkie fragmenty, należy użyć polecenia /list -all.
/! Przywołuje i ponownie wykonuje ostatni fragment.
/identyfikator Przywołuje i ponownie wykonuje fragment o wskazanym identyfikatorze.
/-n Przywołuje i ponownie wykonuje wcześniejszy skrypt — przy n równym 1 to ostatni skrypt, przy n równym 2 przedostatni itd.
/edit Domyślnie otwiera okno JShell Edit Pad zawierające poprawne fragmenty wpisane w aktualnej sesji.
/save Zapisuje poprawne fragmenty aktualnej sesji do wskazanego pliku.
/open Otwiera wskazany plik z fragmentami, wczytuje je do aktualnej sesji i wykonuje jeden po drugim.
/vars Wyświetla aktualne zmienne sesji i odpowiadające im wartości.
/methods Wyświetla sygnatury metod zadeklarowanych w aktualnej sesji.
/types Wyświetla typy zadeklarowane w aktualnej sesji.
/imports Wyświetla deklaracje importu z aktualnej sesji.
/exit Kończy sesję JShell.
/reset Czyści aktualną sesję JShell, usuwając wszystkie fragmenty kodu.
/reload Ponownie wczytuje sesję JShell i wykonuje poprawne fragmenty
/drop Usuwa wskazany fragment z aktualnej sesji JShell
/env Dokonuje zmian w środowisku JShell, np. dodaje moduły i pakiety w celu ich użycia jako dodatkowych typów.
/history Wyświetla wszystko, co zostało wpisane w aktualnej sesji, w tym wszystkie fragmenty kodu (poprawne, niepoprawne i nadpisane) i polecenia JShell — polecenie /list wyświetla jedynie fragmenty kodu.
/set Ustawia różne opcje konfiguracyjne JShell, np. edytor wykorzystywany w odpowiedzi na polecenie /edit, tekst używany jako znak zachęty, importy stosowane w trakcie uruchamiania sesji itp.

 

Uzyskiwanie pomocy

Dokumentacja JShell jest dostępna bezpośrednio z poziomu poleceń /help i /?. Polecenie /? to skrót dla polecenia /help. Aby uzyskać krótkie wprowadzenie do JShell, wpisz:

/help intro

Aby otrzymać listę wszystkich poleceń JShell, wpisz:

/help

Aby uzyskać informację o opcjach konkretnego polecenia, wpisz:

/help polecenie

Na przykład:

/help /list

wyświetli szczegółową dokumentację polecenia /list. Podobnie:

/help /set start

wyświetli szczegółowe informacje na temat opcji start polecenia /set. Aby otrzymać listę skrótów klawiaturowych, wpisz:

/help shortcuts

 

Polecenie /edit — dodatkowe funkcjonalności

Opisaliśmy we wcześniejszej części rozdziału wykorzystywanie polecenia /edit do wczytania i wyświetlenia w oknie JShell Edit Pad wszystkich skryptów, skryptu o określonym identyfikatorze lub skryptu dotyczącego konkretnej metody. Można wskazać identyfikator dowolnej zmiennej, metody lub deklaracji typu. Jeśli w aktualnej sesji została zdefiniowana klasa Account, poniższe polecenie wyświetli ją w oknie JShell Edit Pad:

/edit Account

 

Polecenie /reload

W momencie pisania tego tekstu nie jest możliwe użycie polecenia /identyfikator do wykonania zakresu wcześniejszych fragmentów. Istnieje jednak polecenie /reload, umożliwiające ponowne wykonanie wszystkich poprawnych fragmentów
aktualnej sesji. Przyjrzyjmy się sesji z punktów 25.3.9 i 25.3.10:

jshell> /list
    1 : 45
    2 : 72
    3 : if ($1 < $2) {
            System.out.printf("%d < %d%n", $1, $2);
         }
    4 : if ($1 > $2) {
            System.out.printf("%d > %d%n", $1, $2);
         }
    5 : $1 = 100;
    6 : if ($1 > $2) {
            System.out.printf("%d > %d%n", $1, $2);
         }
jshell>

 

Poniższe polecenie powoduje przeładowanie sesji i wykonanie poszczególnych fragmentów:

jshell> /reload
| Restarting and restoring state.
-: 45
-: 72
-: if ($1 < $2) {
      System.out.printf("%d < %d%n", $1, $2);
   }
45 < 72
-: if ($1 > $2) {
      System.out.printf("%d > %d%n", $1, $2);
   }
-: $1 = 100
-: if ($1 > $2) {
      System.out.printf("%d > %d%n", $1, $2);
}
100 > 72
jshell>

 

Każdy fragment poprzedzają znaki -:, a w przypadku instrukcji if informacje wynikowe (jeśli istnieją) są prezentowane od razu po instrukcji. Jeśli nie chcesz widzieć treści fragmentów w momencie ich ponownego wczytywania, użyj opcji -quiet polecenia /reload:

jshell> /reload -quiet
| Restarting and restoring state.
45 < 72
100 > 72
jshell>


W takiej sytuacji wyświetlany jest tylko wynik działania poleceń wyświetlających pewne informacje w konsoli. Aby zobaczyć pełną treść wykonanych fragmentów, użyj polecenia /list.


Polecenie /drop

Możemy usunąć fragment z aktualnej sesji poleceniem /drop, wskazując identyfikator fragmentu lub jego nazwę. Poniższy zapis sesji JShell deklaruje zmienną x i metodę cube, a następnie usuwa x za pomocą identyfikatora i usuwa cube za pomocą jej nazwy:

jshell> int x = 10
x ==> 10
jshell> int cube(int y) {return y * y * y;}
| created method cube(int)
jshell> /list
    1 : int x = 10;
    2 : int cube(int y) {return y * y * y;}
jshell> /drop 1
| dropped variable x
jshell> /drop cube
| dropped method cube(int)
jshell> /list
jshell>

 

Tryby informacji zwrotnej

JShell oferuje kilka trybów informacji zwrotnej, które określają, co zostanie wyświetlone po każdej interakcji. Aby zmienić tryb, użyj polecenia /set feedback: 

/set feedback tryb

gdzie tryb to wartość concise, normal (domyślnie), silent lub verbose. Wszystkie prezentowane wcześniej interakcje JShell wykorzystywały tryb normal. Tryb informacji zwrotnej verbose W poniższej sesji JShell stosujemy tryb verbose, który może przypaść do gustu początkującym programistom:

jshell> /set feedback verbose
| Feedback mode: verbose
jshell> int x = 10
x ==> 10
| created variable x : int
jshell> int cube(int y) {return y * y * y;}
| created method cube(int)
jshell> cube(x)
$3 ==> 1000
| created scratch variable $3 : int
jshell> x = 5
x ==> 5
| assigned to x : int
jshell> cube(x)
$5 ==> 125
| created scratch variable $5 : int
jshell>

Zwróć uwagę na dodatkowe informacje zwrotne wskazujące, że:

  • zmienna x została utworzona;
  • zmienna $3 została utworzona przy pierwszym wywołaniu cube — JShell stosuje termin scratch variable dla niejawnych zmiennych;
  • wartość typu int została przypisana do zmiennej x;
  • zmienna niejawna $5 została utworzona w momencie drugiego wywołania metody cube.

 

Tryb informacji zwrotnej concise

Wykonaj polecenie /reset, ustaw tryb informacji zwrotnej na wartość concise
i powtórz te same polecenia:

jshell> /set feedback concise
jshell> int x = 10
jshell> int cube(int y) {return y * y * y;}
jshell> cube(x)
$3 ==> 1000
jshell> x = 5
jshell> cube(x)
$5 ==> 125
jshell>

 

W tym przypadku jedynymi wyświetlanymi informacjami zwrotnymi są wyniki wykonania metody cube. Gdyby wystąpił błąd, on również zostałby wyświetlony. 

 

Tryb informacji zwrotnej silent

Wykonaj polecenie /reset, ustaw tryb informacji zwrotnej na wartość silent i powtórz te same polecenia:

jshell> /set feedback silent
-> int x = 10
-> int cube(int y) {return y * y * y;}
-> cube(x)
-> x = 5
-> cube(x)
-> /set feedback normal
| Feedback mode: normal
jshell>


W tym przypadku znakiem zachęty zamiast jshell> jest ->. Wyświetlane będą tylko informacje o błędach. Tryb ten bywa przydatny, gdy chcemy skopiować kod z pliku źródłowego Javy i wstawić go do JShell, ale nie chcemy otrzymywać informacji zwrotnej dla każdego wiersza.

 

Inne opcje JShell konfigurowalne za pomocą /set

Do tej pory przedstawiliśmy możliwości polecenia /set związane z konfiguracją zewnętrznego edytora i wyborem trybu informacji zwrotnych. Polecenie /set obsługuje jeszcze kilka innych opcji:

  • /set mode
  • /set prompt
  • /set truncation
  • /set format

Polecenie /set mode umożliwia zdefiniowanie własnego trybu informacji zwrotnej. Pozostałe trzy polecenia dotyczą jego konfiguracji. Ich pełny opis wykracza poza ramy tego rozdziału. Więcej informacji znajdziesz w pomocy JShell po wpisaniu
poszczególnych poleceń.

 

Modyfikacja procesu uruchamiania JShell

Wcześniej zaprezentowaliśmy zbiór popularnych pakietów importowanych w trakcie uruchamiania sesji JShell. Wykorzystując polecenie /set start:

/set start nazwaPliku

posłużą do inicjalizacji sesji lub jej restartu poleceniami /reset i /reload. Można również usunąć kod startowy poleceniem:

/set start -none

lub powrócić do domyślnego zestawu instrukcji poleceniem:

/set start -default

 

Wszystkie trzy konfiguracje dotyczą tylko aktualnej sesji. Aby działały stale, użyj opcji -retain. Poniższe polecenie wskazuje, że wszystkie następne sesje JShell powinny przy inicjalizacji stosować następujący kod:

/set start -retain nazwaPliku

Aby przywrócić wartości domyślne dla przyszłych sesji, użyj polecenia:

/set start -retain -default

 

Programowanie w Javie. Solidna wiedza w praktyce. Wydanie XI, Autorzy: Paul Deitel, Harvey Deitel, Wydawnictwo: Helion

Podobne artykuły

Wątki w Javie »

Podziel się ze znajomymi tym artykułem - udostępnij na FB lub wyślij e-maila korzystając z poniższych opcji: