さて、Java is still freeなわけですが
https://medium.com/@javachampions/java-is-still-free-2-0-0-6b9aa8d6d244
https://www.sakatakoichi.com/entry/javaisstillfree
どのJDKをどのバージョンで使うかねぇという話がありますよね。
JDK 8を使い続けるという選択肢もあります。
いろんなベンダーがLTS(long term support)としているJDK 11を使うということも出来ます。
色々考えてみましょう。
※ JDKも色々種類があったりで迷ったんですが、一旦バージョンを区別するだけのためにJDK 8などと表記しています。(Java SEとかいう言葉を使うかどうかも迷った)
※ 分かってる人は読まないで良い内容を書きます。
※ 分かってるけどお時間ある人は、読んで間違いなどあれば指摘もらえると嬉しいです。
※LTS https://en.wikipedia.org/wiki/Long-term_support
※いろんなディストリビューションのJDKがいつまでどのバージョンでサポートするかは各ベンダー次第ですが、大体JDK 11をLTSとしていると思います
どの言語においても大前提として
Java と JVM言語、どれを使用するにしても気にする大前提は
- JDK 8で大体のJVM言語は動くと思う(思う)
- しばらくこのままJDK 8 を使おうという場合は、OpenJDKのディストリがおすすめです
- バージョン上げるならJDK 11です。2019年04月現在、LTSだから
- JDK 9はLTSじゃないから忘れましょう(JEPやJSRは忘れないで)
- JDK 10はLTSじゃないから忘れましょう(JEPやJSRは忘れないで)
- バージョンアップ(or 何か変更)するということはテストが必要ということです
- 自分の開発プロジェクトの依存ライブラリ・フレームワークのバージョンごとの対応状況をまず見よう
- ビルドツールのバージョンごとの対応状況を見よう
- JAXBのことを考えよう
- 実行環境のバージョンごとの対応状況(サーバーサイド?Android?デスクトップ?マルチプラットフォーム?とか)を見よう
あたりだと思います。
Scala
ScalaのバージョンごとJDKのcompatibilityが公表されています。
このあたりScalaはドキュメントきっちりしていて良い。
https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html
sbtなどに関してはこの記事が今でも有用な気がします。
ScalaコンパイラやsbtとJava 9の対応表
これも重要そうですね。
https://github.com/scala/bug/labels/jdk9
https://github.com/scala/bug/labels/jdk10
https://github.com/scala/bug/labels/jdk11
その他、言語 + AkkaだとかPlay2だとかScalaの各ライブラリやフレームワークの対応状況を見つつということになると思います。
Clojure
大前提としても前述しましたが、順々にアップデートすれば良さそうですね。
- Leiningenのバージョン気にする必要がある。
- 各ライブラリのアップデートをする必要がある。
- JAXB気にする必要がある。
https://www.deps.co/blog/how-to-upgrade-clojure-projects-to-use-java-11/
この記事に良いこと書いてあって、ライブラリのバージョンを先にあげて、
JDKのバージョンアップ後から上げる方が楽というのは確かに…!!と思いました。
この他の情報はきっと、Clojure詳しい人たちが教えてくれる…!
Groovy
Groovy 3.0でJDK 11をサポート予定のようです。
しばらくはJDK 8にしといた方が良さそうですね。
https://www.infoq.com/jp/news/2018/08/apache-releases-groovy-2.5
http://groovy.329449.n5.nabble.com/Groovy-and-JDK-11-Compilation-issue-td5752777.html
Kotlin
Kotlinはコンパイラで JDK 6 or JDK 8 コンパチなビルドをするので
後方互換のあるJDK11でも大丈夫というスタンス。 ワイルドだろう?
https://stackoverflow.com/questions/52888341/does-kotlin-support-java-11
サーバーサイド
サーバーサイドだったらSpringとかあたりのフレームワークのバージョンとかを気にした方が良さそうですね。これはJava + Springであっても言えることだと思います。
Android
アンドロイド用途だったらJDK 8のまんまでも良い、というか無難な気はします。zuluやadopt open jdkとかをおすすめします。
Android SDKとの差が少ないという意味で開発しやすそうに思います。
でも開発はOpenJDK 11でするというのも出来るはず。
その他
OpenJDKの選び方としてはこれが参考になるっぽいです。 と、JDKソムリエが言っていたので良い資料のはず。 https://ipc.kyokyo-u.ac.jp/page/696
まとめ
自分のプロジェクトにあった計画を立てましょう。
(JDK云々の話は、今に始まった話ではなく1年前から公表されてたので、気にしているところはもう計画立ってるはず…)
1 件のコメント:
こんにちは。
常にバージョンを最新に保ちたいですが、なかなか大変ですね。
コメントを投稿