Java 互換性チェック


Java 8 を用いた実行可能jarを配布したいのですが、ユーザーのJavaが7以前であるときに、Java
8のダウンロードを促すメッセージを出したいのですが、このjarファイルを介してそのようなことは可能でしょうか？  
別にソフトウエアを用意する必要があるのでしょうか？




起動時にJava7以前には無くてJava8以降にあるクラスなりメソッドなりをチェックしてみるとか？  
それでなければダウンロードを促すメッセージを出力してプログラム終了。あれば通常動作とかいかが？




Javaのバージョンを取得するシステムプロパティはいくつか種類があります。

  1. `java.version`
  2. `java.specification.version`
  3. `java.vm.version`
  4. `java.runtime.version`

取得する方法は単純で、例えば以下のようなコードを実行するだけです。

[code]

    String version = System.getProperty("java.specification.version");
    
[/code]

手元の環境(Windows10/Java8)で試したところ、それぞれ以下のような値が取得できました。

[code]

    java.version : 1.8.0_51
    java.specification.version : 1.8
    java.vm.version : 25.51-b03
    java.runtime.version : 1.8.0_51-b16
    
[/code]

Java8かどうかだけを判定したいのであれば、`java.specification.version`の値をチェックするのが手っ取り早いでしょう。脆弱性の判定などのために細かいバージョンもチェックが必要ということであれば`java.version`か
`java.runtime.version`を見ればよいと思います。

なお、環境や使用されているvmによっては上記のプロパティが存在せずに取得できない場合があるかもしれませんので、戻り値のnullチェックは忘れずに。

