今月から、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"でも終了できます。

この先は会員の登録が必要です。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら