[tips] jshellでREPL [Java9]

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Java9でようやくREPLが使えるようになります

Java9の新機能「jshell」

Ruby、Python、Scala、Clojure、Javascript(node)などなど、
最近よく使用される言語ではだいたいREPL機能が使えます。  
Javaにはいままで公式なREPLを持っていませんでしたが、
来年登場予定のJava9ではjshellと呼ばれるREPLが使えるようになります。
Java9はEA版がすでに使用できるので、インストールして試してみましょう。  

環境

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.10.5
  • Java : 9-ea

jshellを使ってみる

1.インストール
ここからJDK9をダウンロードしてインストールします。
インストールしたら/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/binのパスを通します。

2.jshell起動
jshellコマンドで起動します。

% jshell
|  Welcome to JShell -- Version 9-ea
|  For an introduction type: /help intro

普通にJava構文が実行できます。手軽にちょっとした関数やStreamの動作を確認することができます。

jshell> String s = "hello";
s ==> "hello"

jshell> int n = 10;
n ==> 10

jshell> printf(s);
hello

jshell上で使用できるコマンドもあります。
/listコマンドは、jshellで実行した履歴を表示します。

jshell> /list

   1 : String s = "hello";
   2 : int  n = 10;
   3 : printf(s)

/editコマンドは履歴の編集(エディタが起動)、 /drop (もしくは/reset)で履歴の削除ができます。
また、/openを使用してファイルからコードを読み込むこともできます。

jshell上で定義されている変数を確認するには、/varsコマンドを使用します。

jshell> /vars
|    String s = "hello"
|    int n = 10

変数以外にも /methods(関数) /imports(import) /classes(クラス)で
それぞれ確認することができます。

/exitでjshellを終了します。

jshell> /exit
|  Goodbye

まとめ

ようやくJavaにもREPLがきますね。(まだ先ですが)
ちょっとしたコードを確認するためにわざわざmain関数を書いたり
JUnitテストクラスをつくったりしなくてもすみそうです。

参考サイトなど