Java開発が爆速に!超便利なJShellの使い方
JShellは、Java 9以降で導入されたREPL(Read-Eval-Print Loop)環境です。コンパイルなしで手軽にJavaのコードを試すことができ、開発やデバッグ、学習に非常に役立ちます。
本記事では、MacでJShellを使う方法と、実際に試せるサンプルコードを紹介します。
MacでJShellを使う方法
MacでJShellを使うには、以下の手順を実行します。
1. Javaがインストールされているか確認
java -version
Java 9以上がインストールされている場合、以下のようなバージョン情報が表示されます。
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.2+12)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.2+12, mixed mode, sharing)
もしJavaがインストールされていない場合は、brewなどでインストールしておきます。
brew install openjdk
2. JShellを起動
Javaがインストールされている場合、以下のコマンドでJShellを起動できます。
jshell
起動すると、以下のようなプロンプトが表示されます。
| JShellへようこそ -- バージョン14.0.2
| 概要については、次を入力してください: /help intro
jshell>
これでJShellの準備が完了です。 終了する場合は /exit を入力するか、または control + d でJShellを修了できます。
String.valueOf の挙動を確認する
JShellを使うと、メソッドの動作をすぐに確認できます。ここでは String.valueOf の挙動をチェックしてみます。
jshell> String.valueOf(null)
| 例外java.lang.NullPointerException
| at String.<init> (String.java:269)
| at String.valueOf (String.java:3402)
| at (#1:1)
jshell> String.valueOf("Hello")
$1 ==> "Hello"
jshell> String.valueOf(123)
$2 ==> "123"
jshell> String.valueOf(3.14)
$3 ==> "3.14"
文字列や数値を渡すと、それに対応する String 型の値が返ってきます。
Errorが発生する事例
JShellでは、即座にエラーの検証もできます。 例えば、未定義の変数を使おうとするとエラーになります。
jshell> System.out.println(undefinedVar);
| Error:
| cannot find symbol
| symbol: variable undefinedVar
| System.out.println(undefinedVar);
また、型不一致のケースもエラーになります。
jshell> int num = "text";
| Error:
| incompatible types: java.lang.String cannot be converted to int
private staticなメソッドの挙動を確認する
次に、private static なメソッドがインスタンス間で共有されるかを試してみましょう。
検証コード
class Test {
private static int counter = 0;
static void increment() { counter++; }
static int getCounter() { return counter; }
}
インスタンスを複数作成し、カウンターが共有されるか確認します。
jshell> Test t1 = new Test();
jshell> Test t2 = new Test();
jshell> t1.increment();
jshell> System.out.println(t2.getCounter());
1
ただし Testクラスとは別のクラスで static void increment() が実装されていた場合、たとえ同じメソッド名でも別クラスのインスタンス間では共有されません。
StringUtils.isEmpty のようなライブラリをJShellで実行する
StringUtils.isEmpty(null) を jshell で実行するには、まず StringUtils クラスを含む Apache Commons Lang ライブラリを jshell に追加する必要があります。1. ライブラリのダウンロード
Apache Commons Lang から commons-lang3-3.x.x.jar をダウンロード。
2. jshell を起動
ターミナル(コマンドプロンプト)で以下のように jshell を起動:
jshell --class-path /path/to/commons-lang3-3.x.x.jar
※ /path/to/commons-lang3-3.x.x.jar は、ダウンロードした JAR のパスに置き換えてください
3. StringUtils をインポートして実行
import org.apache.commons.lang3.StringUtils;
System.out.println(StringUtils.isEmpty(null)); // 結果: true
まとめ
JShellを使えば、簡単にJavaの動作検証ができました。わざわざ IntelliJ などのIDEでプロジェクト作成やテストコードを書かずとも、動作検証できて非常に便利です。開発のちょっとした確認や学習に、JShellをぜひ活用してみてください!