[解決済み】OpenJDKとAdoptium/AdoptOpenJDKの違いについて
質問
最近の Oracle Java SE サポートロードマップ のポリシー更新(特に2019年3月以降のOracleからの$無料リリース更新の終了)により、Oracle Javaの代替品を探しています。OpenJDKがオープンソースの代替品であることを知りました。そして、私は以下を見つけました。 AdoptOpenJDKを採用する , 既知 をAdoptiumと呼ぶ。 プリビルドバイナリ . パズルをするのです。
OpenJDKとAdoptium/AdoptOpenJDKの違いは何ですか?
解決方法は?
要するに
-
OpenJDK
は複数の意味を持ち、参照することができます。
- Java Platform, Standard Edition (Java SE) のフリー・オープンソース実装。
- オープンソースリポジトリ - Java ソースコード、別名 OpenJDK プロジェクト
- オラクルが管理するプリビルドOpenJDKバイナリ
- OpenJDKコミュニティによってメンテナンスされているプリビルドOpenJDKバイナリ
- AdoptOpenJDK - コミュニティによってメンテナンスされているプリビルドOpenJDKバイナリ ( オープンソースライセンス )
説明します。
ビルド済みOpenJDK (またはディストリビューション) - バイナリで、以下からビルドされます。 http://hg.openjdk.java.net/ アーカイブまたはインストーラとして提供され、さまざまなプラットフォーム向けに提供され、サポート契約が結ばれる可能性があります。
OpenJDK、ソースリポジトリ (とも呼ばれます)。 OpenJDKプロジェクト ) - は マーキュリアル -ベースのオープンソースリポジトリで、ホストは http://hg.openjdk.java.net . Java のソースコードです。Java の機能の大部分 (VM やコアライブラリからコンパイラまで) は、このソースリポジトリのみをベースにしています。オラクルは、これの代替フォークを持っています。
OpenJDK、ディストリビューション (下記のプロバイダ一覧を参照) - は フリービール というような 言論の自由 しかし、問題があってもオラクルに電話することはできません。サポート契約もない。さらに、オラクルは、どのOpenJDK(ディストリビューション)バージョンに対しても、そのリリースがLTS(長期サポート)リリースを含む最新のJavaリリースである場合にのみ、アップデートをリリースすることになっています。オラクルがOpenJDK(ディストリビューション)バージョン12.0をリリースした日に、OpenJDK(ディストリビューション)バージョン11.0にセキュリティ問題があったとしても、オラクルは11.0用のアップデートをリリースすることはないでしょう。メンテナンスはオラクルのみで行っています。
いくつかのOpenJDKプロジェクト - 例えば OpenJDK 8 と OpenJDK 11 - は、OpenJDK コミュニティによってメンテナンスされ、いくつかのプラットフォーム用のいくつかの OpenJDK バージョンのリリースを提供します。コミュニティメンバーは、これらの OpenJDK バージョンに存在するセキュリティ脆弱性の修正版をリリースする責任を負っています。
AdoptOpenJDK、ディストリビューション は、Oracle の OpenJDK ディストリビューションと非常によく似ています (無料であり、OpenJDK ソースリポジトリのソースをコンパイルして作成されたビルドであるという点です)。つまり、上流と大きく異なるAdoptOpenJDKの「フォーク/バージョン」は存在しません(Win32サポートなどのためのいくつかのビルドスクリプトパッチを除く)。つまり、もしコミュニティのメンバー(オラクルやその他、ただしAdoptOpenJDKという組織ではない)が、セキュリティ修正をOpenJDK LTSバージョンの更新にバックポートするなら、AdoptOpenJDKはそれらのためのビルドを提供することになるでしょう。OpenJDKコミュニティによってメンテナンスされます。
オラクルJDK - は、また別のディストリビューションです。JDK12から、OracleJDKの無料版はありません。OracleのJDKディストリビューションは、商用サポートを目的としています。お金を払えば、Oracleのサポートに頼ることができるのです。OracleのOpenJDKの提供とは異なり、OracleJDKは、LTSバージョンのための長いサポートが付属しています。開発者であれば、この特定のJDKの個人/開発用ライセンスのみを無料で取得できますが、「バイナリのみ」は基本的にOpenJDKのバイナリと同じなので、これはほとんど無意味なことなのです。商業的に使用しないことを約束する限り、Oracleのウェブサイトからセキュリティパッチを適用したLTS JDKのバージョンをダウンロードすることができるということでしょう。
備考 . Oracle による OpenJDK ビルドを "Oracle OpenJDK builds" と呼ぶのがベストかもしれません。
オラクル社 Javaプロダクトマネージャー ドナルド・スミス氏 は書きます。 :
理想的には、すべてのOracle JDKビルドを単に"Oracle JDK"と呼びたいところです。 GPLまたは商用ライセンスのもとで、あなた次第です。 の状況です。しかし、歴史的な理由から、わずかながら残っている ここでは、両者を区別して、オラクルの OpenJDKのビルドとOracle JDKのビルド。
OpenJDKのプロバイダと比較
- AdoptOpenJDK - https://adoptopenjdk.net
- Amazon - Corretto - https://aws.amazon.com/corretto
- アズール・ズール - https://www.azul.com/downloads/zulu/
- ベルソフトリベリカ - https://bell-sw.com/java.html
- IBM - https://www.ibm.com/developerworks/java/jdk
- jクラリティ - https://www.jclarity.com/adoptopenjdk-support/
- OpenJDKアップストリーム - https://adoptopenjdk.net/upstream.html
- オラクルJDK - https://www.oracle.com/technetwork/java/javase/downloads
- オラクルOpenJDK - http://jdk.java.net
- ojdkbuild - https://github.com/ojdkbuild/ojdkbuild
- レッドハット - https://developers.redhat.com/products/openjdk/overview
- サップマシン - https://sap.github.io/SapMachine
---------------------------------------------------------------------------------------- | プロバイダ|フリービルド|フリーバイナリ|拡張版|商用|許可型 | ライセンス|ソースから|配布|アップデート|サポート|ライセンス|など |--------------------------------------------------------------------------------------| | AdoptOpenJDK | はい | いいえ | はい | Amazon - Corretto|はい|はい|いいえ|はい|||||||。 | アズール Zulu|いいえ|はい|はい|はい|いいえ|はい|はい|はい | ベルソフトリベリカ|いいえ|はい|はい|はい|はい | IBM|いいえ|いいえ|はい|はい|いいえ | jClarity|なし|あり|あり|あり|あり|あり|あり|なし | OpenJDK|はい|はい|いいえ|はい||||。 | オラクルJDK|いいえ|はい|いいえ**|はい|いいえ | オラクルOpenJDK|はい|はい|いいえ|はい||||です。 | ojdkbuild|はい|はい|いいえ|はい||||です。 | レッドハット|はい|はい|はい|はい|はい|はい|はい | SapMachine|Yes|Yes|Yes|Yes|Yes|Yes|Yes|Ye ----------------------------------------------------------------------------------------
<サブ ソースからの無償ビルド - ディストリビューションのソースコードは公開されており、自分でビルドを組み立てることができます。
<サブ 無料バイナリー配信 - ディストリビューションバイナリは、一般にダウンロードおよび使用することができます。
<サブ 拡張アップデート - LTS (長期サポート) - 6ヶ月のリリースライフサイクルを超えたパブリックアップデート
<サブ 商用サポート - プロバイダによっては、有償の顧客に対して拡張アップデートやカスタマーサポートを提供しています。例えば、Oracle JDK ( サポート詳細 )
<サブ パーミッシブ・ライセンス - 配布ライセンスが非保護的である場合(例:Apache 2.0
どのJavaディストリビューションを使うべきですか?
Sun/Oracle時代には、OpenJDKのソースをベースに、Sun/Oracleが独自のダウンストリームJDKディストリビューションを作成することが一般的でした。最近、Oracleは、商用サポートが付属した独自のビルドのみを行うことを決定しました。彼らは、快くOpenJDKのビルドも彼らの https://jdk.java.net/ のサイトをご覧ください。
JDK11から起こっていることは、シングルベンダー(Oracle)の考え方から、製品のディストリビューションを提供してくれるプロバイダーを、プラットフォーム、リリースの頻度と迅速さ、サポートの構成など、自分の好きな条件で選ぶという考え方へのシフトです。既存のベンダーのどれも信用できないのであれば、OpenJDKを自分で構築することも可能です。
OpenJDKの各ビルドは、通常、同じオリジナルの上流ソースリポジトリ(OpenJDK "the project")から作成されます。しかし、各ビルドは非常にユニークで、$フリーかコマーシャルか、ブランドかノーブランドか、純粋かバンドルか(例えば、BellSoft Liberica JDKは、JDK 11からOracleビルドから削除されたJavaFXをバンドルしている)などがある。
環境(例:Linux)やライセンス要件がなく、特定のディストリビューションが必要な場合、また、最も多くの 標準 JDKビルドの場合、おそらく最良の選択肢は、OracleによるOpenJDKまたはAdoptOpenJDKを使用することです。
追加情報
オラクルのJDKの先を見据える時 by Stephen Colebourne
Javaはまだ無料 by Java Champions コミュニティ(2018年9月17日公開)
Java is Still Free 2.0.0 by Java Champions コミュニティ(2019年3月3日公開)
アレクセイ・シピレフ氏 JDKのアップデートについて オプシアンによるインタビュー(2019年6月27日公開)
関連
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] Oracle JDKとOpenJDKの違いについて
-
[解決済み】HashMap、LinkedHashMap、TreeMapの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] init-paramとcontext-param
-
[解決済み] 文字列の巻き方
-
[解決済み] Javaコンパイラーエラー:ステートメントではありません
-
[解決済み] JRE 11のダウンロードが終了してしまったので、Java 11のランタイム環境を動作させるにはどうしたらいいですか?