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

Java 9のJShellでシステムプロパティを取得する方法【コード例付き】


JShellは、REPL(Read-Evaluate-Print-Loop)と呼ばれる対話型ツールです。main()メソッドを持つクラスを作成しなくても、簡単なJavaの文を入力するとその場で評価され、結果がすぐに表示されます。起動も簡単で、コマンドラインプロンプトで「jshell」と入力するだけでOKです。

システムプロパティを取得するには、System.getProperty()メソッドとSystem.getProperties()メソッドを使用します。

まずは、Systemクラスのstaticメソッドであるproperty()を使って、特定のシステムプロパティの値をJShell上で表示する例から見ていきましょう。

コード例1:getProperty()で個別のプロパティを取得する

jshell> System.getProperty("java.class.path")
$1 ==> "C:\\Program Files\\Java\\jdk-9.0.4\\lib;C:\\json-jars\\json.jar;.;C:\\json-jars\\json-simple.jar;.;C:\\json-jars\\gson.jar;.;C:\\json-jars\\commons-io.jar;.;C:\\json-jars\\jackson-core.jar;.;C:\\json-jars\\jackson-databind.jar; ..."

このように、getProperty()にプロパティ名(キー)を渡すだけで、対応する値が文字列として返されます。上記の例では、クラスパスを表す「java.class.path」の値を取得しています。

続いて、すべてのシステムプロパティを一覧表示する方法を紹介します。System.getProperties()が返すPropertiesオブジェクトはHashtableを継承しているため、forEach()メソッドとラムダ式を組み合わせることで、全プロパティをキー/値のペアとして順番に出力できます。

コード例2:getProperties()ですべてのプロパティを一覧表示する

jshell> System.getProperties().forEach((k, v) -> { System.out.printf("%s: %s\n", k, v); })
sun.desktop: windows
awt.toolkit: sun.awt.windows.WToolkit
java.specification.version: 9
file.encoding.pkg: sun.io
sun.cpu.isalist: amd64
sun.jnu.encoding: Cp1252
java.class.path: C:\Program Files\Java\jdk-9.0.4\lib;C:\json jars\json.jar; ...
java.vm.vendor: Oracle Corporation
sun.arch.data.model: 64
user.variant:
java.vendor.url: https://java.oracle.com/
user.timezone:
os.name: Windows 8.1
java.vm.specification.version: 9
sun.java.launcher: SUN_STANDARD
user.country: US
sun.boot.library.path: C:\Program Files\Java\jdk-9.0.4\bin
sun.java.command: jdk.jshell.execution.RemoteExecutionControl 54984
jdk.debug: release
sun.cpu.endian: little
user.home: C:\Users\User
user.language: en
java.specification.vendor: Oracle Corporation
java.home: C:\Program Files\Java\jdk-9.0.4
file.separator: \
java.vm.compressedOopsMode: 32-bit
line.separator:
java.vm.specification.vendor: Oracle Corporation
java.specification.name: Java Platform API Specification
java.awt.graphicsenv: sun.awt.Win32GraphicsEnvironment
user.script:
sun.management.compiler: HotSpot 64-Bit Tiered Compilers
java.runtime.version: 9.0.4+11
user.name: User
path.separator: ;
os.version: 6.3
java.runtime.name: Java(TM) SE Runtime Environment
file.encoding: Cp1252
java.vm.name: Java HotSpot(TM) 64-Bit Server VM
java.vendor.url.bug: https://bugreport.java.com/bugreport/
java.io.tmpdir: C:\Users\User\AppData\Local\Temp\
java.version: 9.0.4
user.dir: C:\Users\User\Desktop\Java 9 QNA
os.arch: amd64
java.vm.specification.name: Java Virtual Machine Specification
java.awt.printerjob: sun.awt.windows.WPrinterJob
sun.os.patch.level:
java.library.path: C:\Program Files\Java\jdk-9.0.4\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows; ...
java.vm.info: mixed mode
java.vendor: Oracle Corporation
java.vm.version: 9.0.4+11
sun.io.unicode.encoding: UnicodeLittle
java.class.version: 53.0

実行結果からは、OSの種類(os.name)、Javaのバージョン(java.version)、ユーザーのホームディレクトリ(user.home)、ファイルエンコーディング(file.encoding)など、実行環境に関するさまざまな情報を読み取ることができます。

このようにJShellを活用すれば、main()メソッドやクラス定義を書くことなく、System.getProperty()で個別のプロパティを、System.getProperties().forEach()で全プロパティを手軽に確認できます。JVMの設定内容や実行環境の調査を素早く行いたい場合に非常に便利なテクニックなので、ぜひ覚えておきましょう。

  1. Javaで現在の日付を取得する4つの方法|Date・LocalDate・Calendar・java.sql.Dateの使い方

    Javaで現在の日付(システム日付)を取得する方法は複数あります。古くから使われている java.util.Date や Calendar クラスから、Java 8以降で推奨される LocalDate など、状況に応じて使い分けが可能です。ここでは代表的な4つの方法を、サンプルコードと実行結果付きで解説します。 1. java.util.Dateクラスのコンストラクタを使う java.util.Date クラスの引数なしコンストラクタは、現在の日付と時刻を表すDateオブジェクトを返します。これに SimpleDateFormat を組み合わせれば、任意の形式で現在日付を出力できます。 サンプ

  2. Java 9でJavaFXを使ってJShellをプログラムから実装する方法

    JShellは、サンプル式を対話的に実行できるツールです。通常はコマンドラインから利用しますが、JavaFXアプリケーションの中でプログラム的にJShellを実装することも可能です。その場合、Javaプログラムに以下のパッケージをインポートする必要があります。import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;これらのクラスの役割は次のとおりです。JShell:評価エンジンの本体。式や文を評価(eval)するためのAPIを提供します。SnippetEvent:評価結果として