実行時にJavaバージョンを取得する
1. 概要
Javaでプログラミングする場合、使用しているJavaのバージョンをプログラムで見つけることが役立つ場合があります。 このチュートリアルでは、Javaバージョンを入手するいくつかの方法を見ていきます。
2. Javaバージョンの命名規則
Java 9までは、Javaバージョンはセマンティックバージョニングに準拠していませんでした。 形式は1.X.Y_Zでした。 XとYは、それぞれメジャーバージョンとマイナーバージョンを示します。 Z は、更新リリースを示すために使用され、アンダースコア「_」で区切られます。 たとえば、1.8.0_181です。 Java 9以降の場合、Javaバージョンはセマンティックバージョニングに従います。 セマンティックバージョニングは、XYZ形式を使用します。 メジャー、マイナー、およびパッチを指します。 たとえば、11.0.7です。
3. Javaバージョンの取得
3.1. System.getPropertyを使用する
システムプロパティは、Javaランタイムが提供するキーと値のペアです。 java.version は、Javaバージョンを提供するシステムプロパティです。 バージョンを取得するためのメソッドを定義しましょう:
public void givenJava_whenUsingSystemProp_thenGetVersion() {
int expectedVersion = 8;
String[] versionElements = System.getProperty("java.version").split("\\.");
int discard = Integer.parseInt(versionElements[0]);
int version;
if (discard == 1) {
version = Integer.parseInt(versionElements[1]);
} else {
version = discard;
}
Assertions.assertThat(version).isEqualTo(expectedVersion);
}
両方のJavaバージョン形式をサポートするには、ドットまでの最初の数値を確認する必要があります。
3.2. Apache CommonsLang3の使用
Javaバージョンを取得するための2番目のアプローチは、 Apache Commons Lang3ライブラリを使用することです。 まず、 commons-lang3Maven依存関係をpom.xmlファイルに追加する必要があります。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
SystemUtils クラスを使用して、Javaプラットフォームに関する情報を取得します。 この目的のためのメソッドを定義しましょう:
public void givenJava_whenUsingCommonsLang_thenGetVersion() {
int expectedVersion = 8;
String[] versionElements = SystemUtils.JAVA_SPECIFICATION_VERSION.split("\\.");
int discard = Integer.parseInt(versionElements[0]);
int version;
if (discard == 1) {
version = Integer.parseInt(versionElements[1]);
} else {
version = discard;
}
Assertions.assertThat(version).isEqualTo(expectedVersion);
}
java.specification.versionシステムプロパティから使用可能な値をミラーリングすることを目的としたJAVA_SPECIFICATION_VERSIONを使用しています。
3.3. Runtime.version()を使用する
Java 9以降では、 Runtime.version()を使用してバージョン情報を取得できます。 この目的のためのメソッドを定義しましょう:
public void givenJava_whenUsingRuntime_thenGetVersion(){
String expectedVersion = "15";
Runtime.Version runtimeVersion = Runtime.version();
String version = String.valueOf(runtimeVersion.version().get(0));
Assertions.assertThat(version).isEqualTo(expectedVersion);
}
4. 結論
この記事では、Javaバージョンを入手するためのいくつかの方法について説明します。 いつものように、このチュートリアルで使用されるすべてのコードサンプルはGitHubで入手できます。