jshellとは?
java9からの新規機能で、javaのREPLツールです。
REPLとは?
Read Eval Print Loop の略で打ち込まれた命令を読み込み(Read)評価し(Eval)出力し(Print)、また命令待ち状態に戻る(Loop)ものです。
java以外の言語ではすでに備わっているものも多いです。
jsehllの導入
https://jdk9.java.net/download/
こちらからjdkをダウンロードしてパスを通すだけです。
ですが、私の場合はこちらからダウンロードしたものにパスを通し、jshellを起動しても「現在のフィードバック・モードと異なります」なるwarningが大量に流れて、起動自体はちゃんとするのですが、評価した値が表示されませんでした。
そこで、ジェンキンスから最新の成功ビルドをダウンロードしてパスを通すことに・・・
これでwarningログなしに起動し、評価した値をコンソールに表示させることができました。
https://adopt-openjdk.ci.cloudbees.com/view/OpenJDK/job/openjdk-1.9-linux-x86_64/lastSuccessfulBuild/
jshell
| Welcome to JShell -- Version 9-internal
| Type /help for help
jshellで何ができるの?
簡単なコードを即時評価できるので簡単なコードを書きたいときに使えます。
-> 1+1
| Expression value is: 2
| assigned to temporary variable $4 of type int
値を評価し、更に一時変数に格納してくれます。
なので変数宣言しなくても評価した値を使うことができます。
-> System.out.println($4)
2
jshellによりjavaの学習コストは下がるのか?
javaに限らずプログラミングの基礎を教える研修ってなぜか頑なにIDEを使わせようとしないですよね。
私も最近研修を担当したので、その件を講義したのですが無駄でした。
なので、生徒はいままでHello Worldを出力するまでに
1. mainクラスが書いてあるファイルを作成
2. コードを書く
3. javacコマンドでコンパイル
4. javaコマンドで実行
という手順を踏まないといけませんでした。
それが、jshellを使うと
1. jshellを起動する
2. コードを書く
これだけでいけてしまうのでとても楽ですし、今までコンパイルするまでわからなかった変数名の間違いなど(IDEを使わないのでとても多かった)が即時フィードバックされるので、そういうつまらないところでつまずき、プログラミングに苦手意識を与えられる生徒が減ってくれると思います。
さらに自動保管機能もあるのでタイプミスはほとんどなくなります。
最初からIDEを使えばいいだけなんですけどね・・・
まとめ
- jshellは簡単なコードを確認するのに便利
- jshellはIDEを使えない初心者にとって学習コストが減る
jshellではクラスを作成したり、起動時にimportを構成する設定を行ったりいろいろなことができるので、次回jshellで便利なコマンド集を作りたいと思います。