🍷

Oracle JDK 8にあってOpenJDKにない機能

10 min read

はじめに

この記事は、Qiitaとのマルチポストです。

  • Qiitaとは違って、現状は他サイトへのリンクが新規ウィンドウ(タブ)で開かれないようですので、Ctrl/Command+クリックするなどで対応ください。

Oracle JDK/JRE 8のPublic Updates[1]が商用ユーザーに対しては2019年1月までで終了し、2019年4月のリリースからライセンスが変更されたため、別のJDKディストリビューションへの切り替えを考えている方も多いと思います。
しかし、特にOracle JDK 8までは、素のOpenJDKにはない[2]機能が多く存在します。
安易に切り替えてトラブルにならないように、Oracle JDK 8にはあるが、一般的なOpenJDKディストリビューション[3]にはない機能を無償・有償別にまとめてみます。

Oracle JDK 8で無償利用できていた機能

  • Applets/JRE Browser plug-in [4]
  • Java Web Start [5]
  • JavaFX [6]
  • VisualVM [7]
  • Derby DB [8]
  • Font Rendering/Fonts [9]
  • Color Matching [10]
  • Anti-Aliased 2D Rendering [11]
  • Cryptography Extensions [12]
  • Timezone Updater Tool [13]
  • Error Report Transmission [14]
  • SNMP Protocol Adapter [15]

Oracle JDK 8でもともと有償利用する機能

  • Flight Recorder [16]
  • Mission Control [17]
  • Application Class Data Sharing [18]
  • Resource Management [19]
  • Advanced Management Console [20]
  • Usage Tracker [21]

補足

  • Oracle JRE 8(≠JDK)までは自動更新もありますが、他のJDKディストリビューションにはありません。[22]
    • JRE単体を多くのディストリビューション[23]で配布するようになっていますが、含まれない機能が多々ありますので、本記事の注釈を適宜参照ください。
  • インストーラについては多くのディストリビューションが対応するようになっています。[24]
  • SSL証明書用のデフォルトのキーストア(JRE_HOME/lib/security/cacerts)やタイムゾーン・データベース(JRE_HOME/lib/tzdb.dat)は、JDKディストリビューションによって異なる場合が多いです。

まとめ

  • JDKディストリビューションは有償版・無償版を含め数多く存在しますので、環境・状況に適したものを選びましょう。

参考リンク

脚注
  1. 参考リンクのサポート・ロードマップ(日本語)では、以前は"公式アップデート"と訳されていましたが、実際は"公開アップデート"の意味であり、英語原文の"Public Updates"のままとしました。 ↩︎

  2. OpenJDK 11では元々Oracle JDKで有償だった多くの機能が寄贈されているため、事情が異なります。また、それ以前であっても、JDKディストリビューションによっては代替機能が存在する場合もあります。 ↩︎

  3. JDK 8では、以前からRed Hat OpenJDKAzul Zuluがあり、JDK 9からのリリースモデル変更以降は、AdoptOpenJDKAmazon Correttoなどが正式リリースされています。 ↩︎

  4. ChromeやFirefoxでは2015年以降に順次利用できなくなり、Oracle JDK/JRE 9から非推奨となることが2016年頭に発表され、JDK 11から削除されました。(2018年9月のSafari 12でも利用できなくなりました。) ↩︎

  5. JDK 11から削除されましたが、KarakunがOpenWebStartをリリースしました。また、IcedTea-Webで開発されたWeb Startは、RHEL用のOpenJDK以外にWindows版も正式サポートされました。AdoptOpenJDK 8のWindows x64版でもインストール時にオプションとして選択できます。 ↩︎

  6. JDK 11に含まれていませんが、OpenJFXを独自に組み込むことはできます。また、BellSoft Liberica JDKAzul ZuluはOpenJFXをバンドルしているパッケージも配布しています。なお、Amazon Corretto 8はOpenJFXをバンドルしていますが古いバージョンのままであり、11には含まれません↩︎

  7. JDK 9から削除されましたが、オープンソースとして配布されています。 ↩︎

  8. Java DBとも呼ばれ、JDK 9から削除されましたが、実体はApache Derbyです。 ↩︎

  9. Red Hat OpenJDK Windows版ではRHELからインポートしたTrueTypeフォントのDejaVuセットが含まれています。Azul ZuluではCommercial Compatibility Kitとしてフォントライブラリを別途配布しています。AdoptOpenJDKはFreetypeを採用しています。Oracle JDK 11では固有だったT2KやLucidaフォントは削除されました。 ↩︎

  10. JDK 9までKodak Color Management System (KCMS)ライブラリが使われていましたが、JDK 10からOpenJDKで使われていたLittle CMS (LCMS)ライブラリに置き換わったようです。AdoptOpenJDKはLCMSを採用しています。 ↩︎

  11. JEP 265としてJDK 9からオープンソースのMarlinライブラリに置き換わりました。AdoptOpenJDK 8はPiscesを採用しています。 ↩︎

  12. JDK 9からはデフォルトで無制限の暗号化ポリシーとなっています。Oracle JDK 8u161以降は無制限の暗号化ポリシーが有効になっていますが、それ以前は 別途ダウンロードして設定する必要があります。 ↩︎

  13. Java SE DownloadsのAdditional Resourcesからダウンロードできます。また、Azul SystemsはオープンソースのZIUpdaterを配布しています。BellSoftもIANA Updaterを提供しています。 ↩︎

  14. OpenJDK 12で削除されました。 ↩︎

  15. 代替としてSNMP4Jを使う場合もあるようです。 ↩︎

  16. JEP 328としてOpenJDK 11からFlight Recorderが入っていますが、OpenJDK 8u262からバックポートされて利用できるようになりました。 ↩︎

  17. Oracle JDK 8u261からはバンドルされなくなりましたが、jdk.java.netで配布されたり、Java SE DownloadsのAdditional Resourcesからダウンロードできます。Red HatのOpenJDKでも利用できるようになりました。また、Azul SystemsはZulu Mission Controlとして配布したり、BellSoftはLiberica Mission Controlをリリースしています。AdoptOpenJDK用のページAmazon Corretto用のJMCも利用可能です。 ↩︎

  18. JEP 310としてOpenJDK 10から利用できるようになっています。 ↩︎

  19. Oracle JDK 10から非推奨となり、JDK 11でオプションが削除されました。 ↩︎

  20. Java SE DownloadsのAdditional Resourcesからダウンロードできますが、有償機能です。 ↩︎

  21. オープンソース化に向けての動きがありましたが取り下げられました。Oracle JDK/JREではAdvanced Management Consoleで使用状況を管理するのに用いられます。 ↩︎

  22. Red Hatの開発者向けOpenJDKのWindowsインストーラ 8u212以降ではUpdate Notifierが用意されています。 ↩︎

  23. java.comからの配布も2019年4月リリースからライセンスが変わり、商用ではサブスクリプションが必要となりました。無償でJRE 8を配布しているのはAzul ZuluAdoptOpenJDKBellSoft Liberica JDKAmazon Correttoがあります。 ↩︎ ↩︎

  24. 上記[23:1]以外ではRed Hat OpenJDK Windows版にもインストーラがあります。 ↩︎

  25. AdoptOpenJDKBellSoft Liberica JDKRed Hat OpenJDK Windows版(開発者向け)Azul Zuluでは、JRE 8のWindows MSIインストーラがあり、32ビット(x86)にも対応しています。 ↩︎