67139


[Spring
Initializr](https://start.spring.io/)でKotlinプロジェクトを生成したときにJavaのバージョンになにか意味があるのでしょうか？

具体的には下記画像の一番下のJavaのバージョンを選択するところです。

[![画像の説明をここに入力](https://i.stack.imgur.com/qT0Bj.png)](https://i.stack.imgur.com/qT0Bj.png)


CC BY-SA 4.0
2020-05-22T11:23:06.713
66885
2020-06-02T13:32:17.657
9008
question
java spring kotlin spring-boot
Spring InitializrでKotlinプロジェクトを生成したときにJavaのバージョンになにか意味があるのでしょうか？


Mavenが使用するJavaのバージョンを選択して下さい。バージョン8を選んだ場合と11を選んだ場合では、pom.xmlに以下の差異だけがあるはずです。

[code]

    <java.version>1.8</java.version>
    
[/code]

[code]

    <java.version>11</java.version>
    
[/code]

以下のコマンドでMavenが使用するJavaのバージョンが分かるので、それに合わせて下さい。

[code]

    mvn -v
    
[/code]


CC BY-SA 4.0
2020-05-30T06:36:47.873
67139
2020-06-02T13:32:17.657
2020-06-02T13:32:17.657
21092
21092
66885
answer


  1. 元来の意味としてはコンパイル対象のJavaバージョン指定。[`javac`](https://docs.oracle.com/javase/jp/13/docs/specs/man/javac.html) の `--source` 相当。
  2. しばしばGradle(Maven)エコシステム内でJava/JVMターゲットバージョンのデフォルト値として採用される
  3. (ただしkotlinプラグインでは参照していない)

のような理解で良いのかなと思います。

* * *

KotlinプロジェクトであってもJavaコードを含めることはできますが、その場合は1.の通り影響を受けます。

また、Javaを利用しない場合でも、2.のJVMターゲットバージョンとして利用されているような箇所では影響を受ける可能性はありそうです。

一例として、Gradleの場合 `gradle :outgoingVariants` コマンドで出力される情報のうち
[`org.gradle.jvm.version`](https://docs.gradle.org/current/userguide/variant_model.html)がデフォルト値としてこの値を採用しているようです。  
`java.sourceCompatibility = JavaVersion.VERSION_1_7` のようにSpring
Bootがサポートしていないバージョンまで下げると、依存先モジュールが非対応であるとしてビルド時エラーになります。


CC BY-SA 4.0
2020-06-02T08:11:28.173
67223
2020-06-02T08:11:28.173
2808
66885
answer