今月から、Java SE 9で導入されるProject Kullaについて紹介していきます。Project KullaはOpenJDKのサブプロジェクトで、JShellというツールの仕様策定、実装を行っています。Project KullaのリードはOracleのRobert Field氏、また日本からは吉田真也氏がコミッタとして参加しています。
JShellはいわゆるREPL(Read-Eval-Print Loop)ツールで、Javaのコードをインタラクティブに入力し、その場で実行できるツールです。
Java SE 9は2017年7月にリリース予定ですが、既にEarly Accessは公開されています。本記事でも、Java SE 9のEarly Accessを使用していきます。Early Accessのビルドは毎週行われており、本記事ではBuild 153を使用しました。
JShellとは
前述したようにJShellは、JavaのREPLツールです。REPLツールは入力をその場で評価、実行を行い、結果を出力することを繰り返すツールです。多くの言語でREPLツールは提供されており、JVM言語であるScalaやGroovyでも提供されています。Java SE 9で、やっとJavaでもREPLが使えるようになるわけです。
こういうツールは、試してみるのが一番です。早速やってみましょう。
JShellはJDKだけの機能で、 JDKをインストールしたディレクトリーのbinディレクトリーに配置されています。必要に応じて、パスを通しておいてください。パスが通っていれば、jshellで起動します。
C:> jshell
| JShellへようこそ -- バージョン9-ea
| 概要については、次を入力してください: /help intro
|
jshell>
JShellを起動すると、プロンプトが表示されるので、ここにJavaのコードを入力していきます。
やはり、はじめは"Hello, World!"でしょうか。Javaで"Hello, World!"を表示させるには、クラスを作成して、mainメソッドを実装する必要があります。しかし、JShellではその必要はありません。
jshell> System.out.println("Hello, World!")
Hello, World!
jshell>
上図では分かりにくいですが、printlnメソッドのコールを記述した後に、[Enter]キーを入力して改行しています。改行すると、JShellはその行を評価し、実行します。
つまり、JShellでは、このようにJavaのクラスやメソッドを定義しなくても、式や文を記述することができます。また、行末のセミコロンも省略することができます。
さらに書いていきましょう。
jshell> int x = 10
x ==> 10
jshell> x++
$5 ==> 10
jshell> System.out.println(x)
11
jshell>
1行目で変数xを定義し、次の行でインクリメントしています。入力した変数は保持されていて、次行以降でも使用可能です。ここでも、変数xの値がインクリメントして11になっていることが分かります。
ここまでで示したように、JShellでは簡単にコードを試せます。JShellで扱うコードは、Javaのコードの断片という意味でスニペットと呼ばれます。
JShellを終了させるには[Ctrl]+[D]を入力します。また、"/exit"でも終了できます。