1. 概要

Javaでプログラミングする場合、使用しているJavaのバージョンをプログラムで見つけることが役立つ場合があります。 このチュートリアルでは、Javaバージョンを入手するいくつかの方法を見ていきます。

2. Javaバージョンの命名規則

Java 9までは、Javaバージョンはセマンティックバージョニングに準拠していませんでした。 形式は1.X.Y_Zでした。  XYは、それぞれメジャーバージョンとマイナーバージョンを示します。 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で入手できます。