Java 9のJShellで既存のスニペットを再実行する方法
JShellとは
JShellは、Java 9で初めて導入された公式のREPL(Read-Eval-Print Loop)ツールです。コマンドライン上でJavaのコードスニペットを手軽に実行・評価できるため、小さなロジックの検証や学習に非常に便利です。
基本的な操作は以下のとおりです。
- jshell — コマンドを入力してJShellセッションを開始
- /exit — セッションを終了
- /help — 特定のコマンドの使い方を検索
既存のスニペットを再実行する:/reloadコマンド
JShellで入力済みのすべてのスニペットを再実行したい場合は、「/reload」コマンドを使用します。このコマンドを実行すると、セッションの状態を保持したまま、これまでに入力したコードが順番に再度評価されます。
まず、いくつかのスニペットを作成してみましょう。
jshell> 2+10
$1 ==> 12
jshell> String s = "Tutorialspoint"
s ==> "Tutorialspoint"
jshell> System.out.println("Tutorialspoint")
Tutorialspoint
jshell> int num1 = 25
num1 ==> 25
JShellでは、スニペットID(/1、/2など)を指定することで、過去に入力したコードを個別に再実行することもできます。
jshell> /1
2+10
$5 ==> 12
jshell> /2
String s = "Tutorialspoint";
s ==> "Tutorialspoint"
jshell> /3
System.out.println("Tutorialspoint")
Tutorialspoint
jshell> /4
int num1 = 25;
num1 ==> 25
/reloadの実行例
続いて「/reload」コマンドを適用します。JShellは既存のすべてのスニペットを再実行し、その結果を出力します。
jshell> /reload
| Restarting and restoring state.
-: 2+10
-: String s = "Tutorialspoint";
-: System.out.println("Tutorialspoint")
Tutorialspoint
-: int num1 = 25;
-: 2+10
-: String s = "Tutorialspoint";
-: System.out.println("Tutorialspoint")
Tutorialspoint
-: int num1 = 25;
-: int num1 = 25;
セッションを初期化する:/resetコマンド
一方、セッション内のこれまでのコードをすべて削除したい場合は、「/reset」コマンドを使用します。実行すると「Resetting state」というメッセージが表示され、JShellはまっさらな状態に戻ります。
jshell> /reset
| Resetting state.
jshell>
このように、JShellでは「/reload」で履歴を保持したまま再実行でき、「/reset」で状態を完全にリセットできます。用途に応じて使い分けることで、対話的なJava開発をより効率的に進められます。
-
Java 9のJShellでシステムプロパティを取得する方法【コード例付き】
JShellは、REPL(Read-Evaluate-Print-Loop)と呼ばれる対話型ツールです。main()メソッドを持つクラスを作成しなくても、簡単なJavaの文を入力するとその場で評価され、結果がすぐに表示されます。起動も簡単で、コマンドラインプロンプトで「jshell」と入力するだけでOKです。 システムプロパティを取得するには、System.getProperty()メソッドとSystem.getProperties()メソッドを使用します。 まずは、Systemクラスのstaticメソッドであるproperty()を使って、特定のシステムプロパティの値をJShell上で表示
-
Java 9でJavaFXを使ってJShellをプログラムから実装する方法
JShellは、サンプル式を対話的に実行できるツールです。通常はコマンドラインから利用しますが、JavaFXアプリケーションの中でプログラム的にJShellを実装することも可能です。その場合、Javaプログラムに以下のパッケージをインポートする必要があります。import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;これらのクラスの役割は次のとおりです。JShell:評価エンジンの本体。式や文を評価(eval)するためのAPIを提供します。SnippetEvent:評価結果として