jshellを使って対話的にJavaのコードを実行する
JDK9から搭載された機能であるjshell
を実際に使って、以下についてまとめてみました。
- jshellについて
- 環境構築
- 基本的な使い方
jshellとは?
jshell = Java Shell
jshellはREPLであり、「一行書いて実行、一行書いて実行...」を繰り返す
REPL = Read / Evaluate / Print / Loop
jshellの実行環境構築
SDKMANのインストール
今回はSDKMANを使って実行環境を整備する。
インストール自体は公式で紹介してくれているのでそこを見れば大丈夫。今回はmacOSでjshellを使いたいので以下のような感じでインストールを進める。
$ curl -s "https://get.sdkman.io" | bash $ source "$HOME/.sdkman/bin/sdkman-init.sh"
現時点だと5.9.0
がインストールされた。
$ sdk version SDKMAN 5.9.0+555
Java11のインストール
Java9からjshellは搭載されているが、今回はJava11を使っていく。SDKMANがインストールされている状態なら以下のコマンドでインストールできる。
$ sdk install java 11.0.10.hs-adpt
インストールが完了したらバージョンを確認しておく。
$ java -version openjdk version "11.0.10" 2021-01-19 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)
もし過去にSDKMANでJavaをインストールしてる場合、Do you want java 11.0.10.hs-adpt to be set as default? (Y/n):
と聞かれるので、そこは各自で選択する感じで。
後からバージョンを変更したりしたい場合は
sdk use java <VERSION>
で切り替えられる。
jshellを使ってみる
ここまでできていればターミナルでjshell
を実行すれば起動するはず。
$ jshell | JShellへようこそ -- バージョン11.0.10 | 概要については、次を入力してください: /help intro jshell>
こんな感じで実行できる。(ちなみにセミコロン付けずに実行できる)
jshell> System.out.println("Hello, World")
Hello, World
ちなみにファイルを事前に用意しておき、/open
で記載されている内容を実行することも可能。
$ cat sample.java System.out.println("Hello, World")
jshell> /open sample.java Hello, World