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

Java 9のJShellで起動時の設定をカスタマイズする方法

JShellとは

JShellは、Java 9から導入された対話型のREPL(Read-Eval-Print Loop)ツールです。変数宣言、ステートメント、式などの簡単なJavaプログラムをその場で実行・評価できるため、コードの動作確認や学習に非常に便利です。

起動時に読み込まれるデフォルトのコード

JShellを起動すると、デフォルトでいくつかのコードが事前に読み込まれています。このコードを確認するには、次のコマンドを実行します。

/list -start

また、/set startコマンドを使用することで、JShellの起動時に自動的に読み込む内容をカスタマイズできます。基本的な構文は以下のとおりです。

/set start [-retain] [Type]

オプション-retainを指定すると、指定した起動設定が記録され、次回以降のJShellセッションでも同じ設定が適用されます。-retainを省略した場合は、設定が保存されず、新しいセッションを開くとデフォルトの起動設定に戻ります。

/set startコマンドの種類

  • /set start [-retain] ファイル名: 指定したファイルの内容(変数、メソッド、クラスを作成するコードなど)をJShellの起動時に読み込みます。
  • /set start [-retain] -none: 起動時に何もコードやコマンドを読み込まないようにします。
  • /set start [-retain] -default: JShellの起動設定をデフォルト値にリセットします。

実行例1:ファイルを読み込む場合

まず、デフォルトで読み込まれているインポート文を確認してみましょう。

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.*;

次に、「save.jsh」というファイルを起動時に読み込むよう設定し、JShellを再起動して確認します。

jshell> /set start -retain save.jsh

jshell> /exit
|  Goodbye

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

jshell> /list -start

  s1 : int x = 20;
  s2 : double y = 30;
  s3 : public int sum(int a, int b) {
          return a + b;
      }
  s4 : String str = "TutorialsPoint";

このように、ファイル内に定義しておいた変数やメソッドが、起動時に自動的に読み込まれていることがわかります。

実行例2:何も読み込まない場合

-noneオプションを指定すると、起動時に一切のコードを読み込みません。

jshell> /set start -retain -none

jshell> /exit
|  Goodbye

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

jshell> /list -start

/list -startを実行しても何も表示されないことから、起動時のコードが空になっていることが確認できます。クリーンな状態で作業を始めたい場合に便利です。

実行例3:デフォルト設定に戻す場合

-defaultオプションを指定すると、起動設定が初期状態にリセットされます。

jshell> /set start -retain -default

jshell> /exit
|  Goodbye

C:\Users\User>jshell
|  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.*;

再び標準のインポート文群が読み込まれ、通常の環境に戻りました。

まとめ

JShellの/set startコマンドを使えば、起動時に読み込むコードを自由にカスタマイズできます。-retainオプションを付ければ設定が永続化され、よく使う変数やメソッド、インポート文をあらかじめ用意しておくことで、日々の開発や検証作業をより効率的に進められます。

  1. JavaのSwingUtilities.invokeLater()メソッドの使い方を徹底解説

    invokeLater()メソッドとはinvokeLater()メソッドは、SwingUtilitiesクラスが提供するstaticメソッドの一つで、AWTイベントディスパッチスレッド(Event Dispatch Thread)上でタスクを非同期に実行するために使用されます。このメソッドはSwingUtilities.invokeAndWait()とよく似た動作をしますが、大きな違いは、処理のリクエストをイベントキューに登録した後、すぐに呼び出し元へ制御を返すという点です。つまり、invokeLater()は引数で渡されたRunnableオブジェクト内のコードブロックの実行完了を待ちません。

  2. JavaでJComboBoxの項目をソートする方法!DefaultComboBoxModelのカスタマイズ例

    JComboBoxはJComponentクラスのサブクラスであり、テキストフィールドと、ユーザーが値を選択できるドロップダウンリストを組み合わせたSwingコンポーネントです。ユーザーがコンボボックスを操作すると、ActionListener、ChangeListener、ItemListenerといったインターフェースを通じてイベントを受け取ることができます。 ただし、標準のJComboBoxにはアイテムを並べ替える(ソートする)機能は用意されていません。そこで本記事では、DefaultComboBoxModelクラスを継承した独自のモデルクラスを作成し、コンボボックスの項目を常に整序された