Oracle JDKから他のJDKへの移行しても問題ないか考える
Java9以降、無償で長期にJDKを使い続ける場合Oracle JDKから他のJDKに変更することになるが、変更しても問題ないかを機能およびサポートの面から考える
結論からいうと、機能およびサポートから考えるとOracle JDKから他のJDK(Open JDKビルド)に移行しても問題ないと考えることができる。
機能的にほぼ同じなので問題ない
まずは機能的差異の話。もちろん全く一緒ではないが差はわずかである。
Java 11以降であればOracle JDKとOpenJDKの差は限定的
-
最新(Java 11時点)の差分を知りたい場合はこちらを参照
-
Oracle JDKにしかなかった商用機能は順次OpenJDKへ移行された(されている)
-
例えば「Java Flight Recorder」「Java Mission Control」など
-
-
ただ限定的ではあるがまだ若干差がある様子
-
一部のモジュールや証明書関連など
-
ここら辺が気になる場合は、Oracle JDKを使い続けることになる
-
-
それを除けばほとんど差が無いはず
TCKにパスしているはずである
-
JDKプロバイダが大々的にJavaを名乗るにはTCKをパスしなくてはいけない
-
TCK(Technology Compatibility Kit)とは実装が仕様を満たしているかテストするためのコード群。なのでこれが通っていればJava SE仕様の要件は満たしていると考えられる
-
「Java Is Still Free」の方にもそのような主旨の話が書かれている
-
原文: https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo
-
翻訳: https://docs.google.com/document/d/1HtUnuAkUEDGL2gwUOkrDrmLe_zrD6wpAyqYBZxRmHv4
-
7ページ目の「WHAT DOES LTS MEAN WITH REGARDS TO JAVA / OPENJDK?(Java / OpenJDKでのLTSは何を意味するのか?)」のところ
-
-
-
有名どころのJDKプロバイダはやってくれるはずなので、TCKによっても担保されるはず
-
ほんとにやっているかが気になる場合は各JDKプロバイダのドキュメントなどで確認する
-
サポートも大差ないJDKがあるので問題ない
続いてサポートの話。これはJDKプロバイダによるところが大きいが、Oracle JDKが以前行っていたのと同等のものもを提供してくれるJDKプロバイダがあるので問題ない。
サポートを3つで分けて考える
そもそもサポートと一口に言っても広く、人によって想像するものが異なる場合がある。 ここではKUBOTA Yuji(@sugarlife)さんの資料の考え方を引用させてもらい、サポートを次の3つで考えることとする。
-
開発サポート
-
配信サポート
-
問合せサポート
開発サポート、配信サポート、問合せサポート
それぞれのサポートについてのこれまでとこれからをまとめる。
- 開発サポート
-
-
開発サポートは(リリース済みバージョンの)バグ修正、セキュリティ対応、機能拡張などの維持管理開発のこと
-
これは基本的にOpenJDKが行っている
-
(特にJDK 11以降)Oracleが独自で行っていることはない
-
ただ過去においてはほんの少しやっていた様子
-
参考: https://www.slideshare.net/oracle4engineer/jdk-ver-22
-
「従来のセキュリティ・アップデートの提供」のところ
-
-
-
-
OpenJDKの開発サポートにもサポート期間はあるので注意する
-
LTSに相当するものは長期でサポートされる予定。
-
-
- 配信サポート
-
-
配信サポートはバイナリの(ビルドも含め)配信・提供のこと
-
これはOracle JDKがこれまで長くしっかりやってくれていた
-
おそらくここが一番欲しいところで、他のJDK選択で重要なポイントになる
-
注意しなければいけないのはOpenJDKは配信をサポートはしていない
-
OpenJDKはあくまでも開発と維持管理のみ
-
OpenJDKトップページのDownloadのリンクは、Oracle提供のOpenJDKビルドのダウンロードページ
-
なので、サポート期間に注意(1つのバージョンは6ヶ月間のみのサポート)
-
-
-
- 問合せサポート
-
-
問合せサポートはSLA(Service Level Agreement)で定められるレベルの問合せ対応などのこと
-
これまでのOracle JDKでも無償ではやっていない
-
無償でOracle JDK使っていた人も、ちゃんとした問い合わせサポートはしたこと無いはず。
-
有償であれば存在していた
-
-
これを無償でやってくるJDKプロバイダは今も昔もないので、これをJDKプロバイダに求める場合は有償と考えられる。
-
まとめて考えると
結論として3つのサポートを総合して考える。
「開発サポート」「問合せサポート」はOracle JDKでもどのJDKプロバイダでも差が無い。
-
「開発サポート」はOpenJDKが行うのでどのJDKプロバイダでも変わらない。
-
「問合せサポート」はそもそも(Oracle JDKでも)無償では提供されていない(もちろんサポートの内容の差はある。ここでは有償無償という意味で差が無い)。
なので「配信サポート」がポイントになる。「配信サポート」が無償でそれなりに長いJDKプロバイダが存在すれば、以前のOracle JDKと同等のサービスが受けられることになる。そして、そういったJDKプロバイダは存在する(Adopt Open JDKなど)。
よって、サポートの視点から考えてもOracle JDKから移行しても遜色ないと考えられる。
Appendix A: 改訂履歴
-
v1.0, 2019-01-04: 初稿