Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9 JShellの起動スクリプト(DEFAULT・JAVASE・PRINTING)の違いと使い方

JShellは、Java 9で導入された対話型のJavaシェルツールです。コマンドラインプロンプトから起動でき、入力したコードをその場で評価して結果を即座に表示します。いわゆるREPL(Read-Evaluate-Print-Loop:読み込み→評価→表示→繰り返し)ツールとして動作するため、コード断片の動作確認やAPIの学習に非常に便利です。

起動スクリプトの指定方法(--startupフラグ)

JShellでは、起動時にスクリプトを読み込むことで、あらかじめ定義済みのimport文や便利なメソッドを使える状態でセッションを開始できます。起動スクリプトを指定するには「--startup」フラグを使用し、スクリプトファイル名、または次の3つのキーワードのいずれかを渡します。

  • DEFAULT:デフォルトの動作を読み込みます。「--startup」を指定しない場合と同じ挙動になります。
  • JAVASE:Java SEのすべてのパッケージを自動的にインポートします。
  • PRINTING:print、println、printfメソッドが定義され、System.outを意識せずに出力できるようになります。

また、「/list -start」コマンドを実行すると、起動時に評価されるすべてのスニペットの一覧を確認できます。

DEFAULTを起動スクリプトとして使う例

C:\Users\User>jshell --startup DEFAULT
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

jshell> /list -start

s1 : import java.io.*;
s2 : import java.math.*;
s3 : import java.net.*;
s4 : import java.nio.file.*;
s5 : import java.util.*;
s6 : import java.util.concurrent.*;
s7 : import java.util.function.*;
s8 : import java.util.prefs.*;
s9 : import java.util.regex.*;
s10 : import java.util.stream.*;

「DEFAULT」を指定すると、java.ioやjava.utilなど、よく使われる主要パッケージ10個がインポートされた状態でセッションが始まります。

JAVASEを起動スクリプトとして使う例

C:\Users\User>jshell --startup JAVASE
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

jshell> /list -start

s1 : import java.applet.*;
s2 : import java.awt.*;
s3 : import java.awt.color.*;
s4 : import java.awt.datatransfer.*;
s5 : import java.awt.desktop.*;
s6 : import java.awt.dnd.*;
s7 : import java.awt.event.*;
s8 : import java.awt.font.*;
s9 : import java.awt.geom.*;
s10 : import java.awt.im.*;
...
s30 : import java.nio.file.*;
...(中略:java.rmi、java.security、java.sql、java.time、java.util、javax.swing、javax.xml などのパッケージが続きます)
s173 : import org.xml.sax.helpers.*;

「JAVASE」を指定すると、java.appletからorg.xml.sax.helpersまで、Java SEの全パッケージに相当する合計173個のimport文が自動的に読み込まれます。AWTやSwing、javax名前空間のクラスもすぐに試せるため、幅広いAPIの検証に適しています。

PRINTINGを起動スクリプトとして使う例

C:\Users\User>jshell --startup PRINTING
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

jshell> /list -start

s1 : void print(boolean b) { System.out.print(b); }
s2 : void print(char c) { System.out.print(c); }
s3 : void print(int i) { System.out.print(i); }
s4 : void print(long l) { System.out.print(l); }
s5 : void print(float f) { System.out.print(f); }
s6 : void print(double d) { System.out.print(d); }
s7 : void print(char s[]) { System.out.print(s); }
s8 : void print(String s) { System.out.print(s); }
s9 : void print(Object obj) { System.out.print(obj); }
s10 : void println() { System.out.println(); }
s11 : void println(boolean b) { System.out.println(b); }
s12 : void println(char c) { System.out.println(c); }
s13 : void println(int i) { System.out.println(i); }
s14 : void println(long l) { System.out.println(l); }
s15 : void println(float f) { System.out.println(f); }
s16 : void println(double d) { System.out.println(d); }
s17 : void println(char s[]) { System.out.println(s); }
s18 : void println(String s) { System.out.println(s); }
s19 : void println(Object obj) { System.out.println(obj); }
s20 : void printf(java.util.Locale l, String format, Object... args) { System.out.printf(l, format, args); }
s21 : void printf(String format, Object... args) { System.out.printf(format, args); }

「PRINTING」を指定すると、boolean、char、int、long、float、double、char配列、String、Objectといった各型に対応したprint/printlnメソッドと、Locale対応を含むprintfメソッドが定義されます。これにより、System.out.println(...)と記述する代わりにprintln(...)だけで出力できるようになり、JShell上での動作確認が格段に快適になります。

まとめ

JShellの「--startup」フラグでは、標準のimportのみを行うDEFAULT、Java SE全パッケージをインポートするJAVASE、出力用メソッドを定義するPRINTINGの3種類の起動スクリプトを選択できます。さらに、独自のスクリプトファイル(拡張子.jshなど)を指定することも可能なので、よく使う設定をテンプレート化しておけば、日々の開発や学習の効率をさらに高められます。

  1. Java 9のJShellにおける外部宣言のルールとは?修飾子の扱いを徹底解説

    JShellとはJShellはJava 9で導入されたコマンドラインツールであり、Java初の公式REPL(Read-Eval-Print Loop)ツールです。ユーザーが入力したコードを読み取り、評価し、その結果を即座に出力するという、手軽なプログラミング環境を実現します。通常のJavaプログラムでは、すべてのコードはクラスやインターフェースの中に記述する必要がありますが、JShellではクラスやインターフェースの外側に直接宣言を書くことができます。このような「外部宣言」には、以下のルールが適用されます。外部宣言のルール1)アクセス修飾子(public / protected / priva

  2. Java 9のJShellで使える「/edit」コマンドの種類と使い方

    JShellは、Java 9で導入されたコマンドラインツールです。main()メソッドを用意しなくても、宣言・ステートメント・式をその場で評価できるのが大きな特徴です。さらに、JShellにはJShell Edit Padという簡易テキストエディタが組み込まれており、「/edit」コマンドで起動することで、入力済みのコードを手軽に編集できます。 /editコマンドの3つの形式 JShellで利用できる「/edit」コマンドには、次の3つの形式があります。 /edit /edit [ID] /edit [コード名] /edit:引数なしで実行すると、現在アクティブなすべてのコードがテキストエデ