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オプションを付ければ設定が永続化され、よく使う変数やメソッド、インポート文をあらかじめ用意しておくことで、日々の開発や検証作業をより効率的に進められます。
-
JavaのSwingUtilities.invokeLater()メソッドの使い方を徹底解説
invokeLater()メソッドとはinvokeLater()メソッドは、SwingUtilitiesクラスが提供するstaticメソッドの一つで、AWTイベントディスパッチスレッド(Event Dispatch Thread)上でタスクを非同期に実行するために使用されます。このメソッドはSwingUtilities.invokeAndWait()とよく似た動作をしますが、大きな違いは、処理のリクエストをイベントキューに登録した後、すぐに呼び出し元へ制御を返すという点です。つまり、invokeLater()は引数で渡されたRunnableオブジェクト内のコードブロックの実行完了を待ちません。
-
JavaでJComboBoxの項目をソートする方法!DefaultComboBoxModelのカスタマイズ例
JComboBoxはJComponentクラスのサブクラスであり、テキストフィールドと、ユーザーが値を選択できるドロップダウンリストを組み合わせたSwingコンポーネントです。ユーザーがコンボボックスを操作すると、ActionListener、ChangeListener、ItemListenerといったインターフェースを通じてイベントを受け取ることができます。 ただし、標準のJComboBoxにはアイテムを並べ替える(ソートする)機能は用意されていません。そこで本記事では、DefaultComboBoxModelクラスを継承した独自のモデルクラスを作成し、コンボボックスの項目を常に整序された