対話式のシェル環境を起動する – jshellコマンド
jshell option
option:コマンドオプション
jshellコマンドは、Javaコードをコマンドライン上で対話式に実行するためのREPL(Read-Eval-Print-Loop)環境を起動します。Java 9で追加されています。
Java 9以前では、簡単なコードを利用するにもコンパイル&実行という手順を踏む必要がありましたが、JShellを利用することでその場で即座に実行できます。
指定できるコマンドオプション(option)には、以下のようなものがあります。
| jshellコマンドの主なオプション | |
|---|---|
| オプション | 概要 |
| –-classpath パス | 関連するクラスファイルの検索先。複数指定時は、セミコロン(Windows)、またはコロン(Unix)区切り |
| –-module-path パス | モジュールの検索先 |
| –-enable-preview | プレビュー機能を有効化 |
たとえば以下はJShellを起動して、簡単なコードを実行する例です。
- PS C:\jdk-23.0.1\bin> jshell
- | JShellへようこそ -- バージョン23.0.1
- | 概要については、次を入力してください: /help intro
- jshell> import java.util.ArrayList; (①インポート)
- jshell> new ArrayList<String>(); (②リストを定義)
- $2 ==> []
- jshell> $2.add("おはよう"); (③リストを操作)
- $3 ==> true
- jshell> $2.add("こんにちは");
- $4 ==> true
- jshell> $2.get(0);
- $5 ==> "おはよう"
- jshell> /exit (④JShellを終了)
- | 終了します
JShellのプロンプトは「jshell> 」です。ライブラリを利用する際には、普通のコードと同じくimport命令でクラスをインポートします(①)。
以降のコード(②~③)は、暗黙的にmainメソッド配下のコードと見なされます。また、変数の宣言も不要です。生成されたオブジェクトは、そのまま自動変数$1、$2…に順に代入されるからです。③でも②で生成したArrayListオブジェクトに変数$2経由でアクセスできています。
JShellを終了するには、/exitメタコマンドを利用します。
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。