前回の続きで実際にJShellをダウンロード~動かすまで試してみます。
まずは、JDK9を ダウンロード してインストール
※各自のOSに合わせてダウンロード
■JShellを起動
コマンドプロンプトを開き、以下のコマンドを実行
${JAVA_HOME}/binまでのPATHを通しておけば jshell のみでOK
${JAVA_HOME}/bin/jshell
起動に成功するとコマンドプロンプトに以下が表示されます。
jshell>
■JShellを終了
終了は、以下を打ち込むだけ。
jshell>/exit
■とりあえず動かしてみる
(変数に値を入れてみる)
jshell> String message = "こんにちは"
message ==> "こんにちは"
(変数を表示してみる)
jshell> System.out.println("message==>" + message)
message==>こんにちは
ちなみに、
jshell> System.out.println("message==>" + me
と、ここまで打ち込んでタブを押下すると
↓
jshell> System.out.println("message==>" + message
と、コードアシストしてくれる
■わざと間違った変数を入れてみる
jshell> System.out.println(matigai)
| エラー:
| シンボルを見つけられません
| シンボル: 変数 matigai
| 場所: クラス
| System.out.println(matigai)
| ^------^
打ち込んだ直後にすぐコンパイル結果が表示されます。
■ここまで何を打ち込んだか確認
打ち込んだら即時実行されるため、ここまで何を書いたかわからなくなります。そうした場合、以下を打ち込むとここまで打ち込んだソースコードが確認できます。
jshell> /list
1 : String message = "こんにちは";
2 : System.out.println("message==>" + message)
■エディタみたいに入力したい...
jshell> /edit
と打ち込むと Shell Edit Pad という専用テキストエディタ(?)が立ち上がり編集が可能です。(コードアシストはされなくなりましたが・・・)
■Mapを生成して値を入れて出力!
core apiの範疇ならインポートも不要!便利!
jshell> Map<String, Integer> map = new HashMap<>()
map ==> {}
jshell> map.put("key1", 100)
$5 ==> null
jshell> System.out.println(map)
{key1=100}
■困った場合は?
以下を打ち込み、ヘルプを見てみよう。
jshell>/help
=========== 実行すると以下が表示 ===========
| Java言語の式、文または宣言を入力します。
| または、次のコマンドのいずれかを入力します:
| /list [<name or id>|-all|-start]
| 入力したソースをリストします
| /edit <name or id>
| 名前またはIDで参照されるソース・エントリを編集します
| /drop <name or id>
| 名前またはIDで参照されるソース・エントリを削除します
| /save [-all|-history|-start] <file>
| ファイルにスニペット・ソースを保存します。
| /open <file>
| ソースの入力としてファイルを開きます
| /vars [<name or id>|-all|-start]
| 宣言された変数およびその値をリストします
| /methods [<name or id>|-all|-start]
| 宣言されたメソッドおよびその署名をリストします
| /types [<name or id>|-all|-start]
| 宣言された型をリストします
| /imports
| インポートされたアイテムをリストします
| /exit
| exit jshell
| /env [-class-path <path>] [-module-path <path>] [-add-modules <modules>] ...
| 評価コンテキストを表示または変更します
| /reset [-class-path <path>] [-module-path <path>] [-add-modules <modules>]...
| reset jshell
| /reload [-restore] [-quiet] [-class-path <path>] [-module-path <path>]...
| リセットして関連する履歴をリプレイします -- 現在または以前(-restore)
| /history
| 入力した内容の履歴
| /help [<command>|<subject>]
| jshellに関する情報を取得します
| /set editor|start|feedback|mode|prompt|truncation|format ...
| jshell構成情報を設定します
| /? [<command>|<subject>]
| jshellに関する情報を取得します
| /!
| 最後のスニペットを再実行します
| /<id>
| IDでスニペットを再実行します
| /-<n>
| n回前のスニペットを再実行します
本当にちょっと動かすだけなら、JShellの起動も一瞬ですし、
キーボードのみでコードの動きが確認取れるので、Eclipse(IDE)などを使うよりも便利かもしれませんね。