マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】OpenJDK

【OSS情報アーカイブ】OpenJDK

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「OpenJDK」とは

概要

OpenJDK(Open Java Development Kit)とは、JDK(Java Development Kit)のオープンソース実装です。OpenJDKは「Javaランタイムエディション」および「Java Development Kit」の起点を表すコミュニティアップストリームプロジェクトになっています。

経緯

OpenJDKの初期バージョンは、Sun Microsystemsが開発した結果として、2007年にリリースされました。

Java公式リファレンス実装

OpenJDKは「SE7以降のJava Standard Edition」の公式リファレンス実装です。

OpenJDKは定義以上のものとして「OpenJDK=Java」であり、Javaの他のすべてのバージョンが作成される基礎を形成します。

オフィシャルサイト情報

■オフィシャルサイト

→openjdk.java.net

■GitHub

→github.com →openjdk/jdk

■主要開発元

OpenJDKは、OpenJDKコミュニティが中心となり開発が進められています。

■ライセンス情報

OpenJDKのライセンスは「The GNU General Public License (GPL) Version 2」です。

詳細について、こちらを参照ください。
→github.com →openjdk/jdk →LICENSE

■インストール

→openjdk.java.net →install

Java言語

■概要

Java言語とは、汎用のクロスプラットフォーム言語です。

当時のソフトウェア開発における多くの問題を解決しました。
・オペレーティングシステムからの完全な抽象化
・どの環境でも実行可能なアプローチによる移植性
・単純化されたメモリ管理 など

→oracle.com →java

■経緯

Java言語は、1990年代半ばにSun Microsystems社のJames Gosling氏によって開発されました。

その後、Oracleによって買収されています。

■人気言語に成長

Javaは革新的な言語として「独立系ソフトウェアベンダー」「企業内開発セクション」「オープンソースコミュニティ」などの間で非常に人気になりました。

ちなみに2020年時点において、GitHubの人気言語レポートによると、「Java」は、「JavaScript」と「Python」に次いで、世界で3番目に人気のあるプログラミング言語としてリストされています。

■オープンソース化

2006年、Sun Microsystems社は、Javaのオープンソース化を決定しました。
そして、2006年11月に、Javaのソース コードの大部分がGPLの下でリリースされました。

この最初のリリースには、Java仮想マシン「JVM」+Javaコンパイラ「javac」が含まれていました。
Java開発者は、これらのコンポーネントを組み合わせることで、完全に無料のオープンソースJavaプラットフォームに対してコードを記述し、実行できるようになりました。

2007年までに、少数のプロプライエタリコードを除いたすべてのコードがコミュニティにリリースされました。

■Javaコンポーネント① Java仮想マシン(JVM)

仮想マシン

Java仮想マシン(JVM:Java Virtual Machine)は、Javaバイトコードを実行する仮想マシンです。

Java仮想マシンはJavaソースコードをそのまま認識しません。
そのため、「Javaソースコードファイル(*.java)」をコンパイルして、JVMが理解するバイトコードである「Javaクラスファイル(*.class)」を用意する必要があります。

ポータブル言語

Java仮想マシンは、各種実行環境(Windows、Linux、macOS)ごとの実装があります。

1つのJavaソースコードから作成されたバイトコードは、各種実行環境で動作し、同じ結果を得ることができます。

このポータブル性が、Java言語の大きな魅力となっています。

■Javaコンポーネント② Javaランタイム環境(JRE)

動作環境

「Javaランタイム環境(JRE:Java Runtime Environment)」は、Javaプログラミング言語で記述されたアプレットおよびアプリケーションを実行するための「ライブラリ」「Java仮想マシン」「その他必要コンポーネント」を提供します。

しかし、Javaランタイム環境には、アプレットやアプリケーションを開発するためのコンパイラやデバッガなどのツール(ユーティリティ)は含まれていません。

デプロイメントテクノロジー

Javaランタイム環境には、2つの主要なデプロイメントテクノロジーが含まれています。
①Javaプラグイン—主要ブラウザでアプレットを実行
②Java Web Start—ネットワーク経由でスタンドアロンアプリケーションをデプロイ

これらは、エンタープライズソフトウェア開発環境「J2EE(Java 2 Platform, Enterprise Edition)」のテクノロジー基盤でもあります。

JDKに統合

「Javaランタイム環境(JRE)」は、Javaを実行するために必要な「Java Development Kit(JDK)の一部コンポーネント」です。
以前、JREは、JDKから個別にダウンロードしていました。

Java 11以降、JREは個別のエンティティではなく、JDKの一部として統合されました。
そのため、JRE単体でのダウンロードはできなくなっています。

■Javaコンポーネント③ Java Development Kit(JDK)

JREのスーパーセット

Java Development Kit(JDK)は「JREのスーパーセット」であり、JREのすべてに加えて、アプレットやアプリケーションの開発に必要なコンパイラやデバッガなどのツールが含まれています。

Java SEプラットフォーム仕様の実装

Java Development Kit(JDK)は、さまざまなベンダーやオープンソースコミュニティなどによる「Java SEプラットフォーム仕様の実装」です。

Java互換性テスト

多くのJDKが存在していますが、正式にJDKと呼ばれるためには、バイナリがそのリリースの「Java互換性キット(JCK)」に合格している必要があります。

これは、技術互換性キット(TCK) のコレクションであり、仕様の実装が期待通りに動作することを確認するために各Java仕様要求をテストします。

Java SE(Oracle JDK)

■概要

「Java SE」とは、Oracle社が提供するJDK「Java言語用開発ツールキット」です。

「OpenJDK」に対して、通称「Oracle JDK」と呼ばれます。

Oracle JDKには、コンポーネントとして多くの開発用ツールが含まれています。

→oracle.com →java →technologies →Java SE at a Glance

■経緯

当初のJava開発キットは、Sun Microsystems社が開発した「SUN JDK」を指していました。

2010年にOracle社がSun Microsystems社を買収した後、改名されています。

比較:「Oracle JDK(Java SE)」vs「OpenJDK」

開発元比較

■Oracle JDK

「Oracle JDK」は Oracle社によって開発されています。

■OpenJDK

「OpenJDK」は、「Oracle」「OpenJDK」「Javaコミュニティ」などが中心となる「OpenJDK開発コミュニティ」って開発しています。

また、次のグローバル企業も開発に積極的に参加しています。
・Red Hat
・Azul Systems
・IBM
・Apple Inc.
・SAP AG など

ライセンス比較

■Oracle JDK

商用ライセンス

Oracle JDKは「Oracle Binary Code License Agreement」で商用ライセンスされています。

アップデートに商用ライセンスが必要

2019年1月以降、「Oracle JDKソフトウェアアップデート」を入手するためには、Oracle社から商用ライセンスを購入する必要があるとされています。

→oracle.com →java →technologies →Oracle Java SE Support Roadmap(Updated April 2, 2021)

本番環境での無料使用は不可の見込み

Oracle社は『商用ライセンスなしで商業本番環境での使用はできないだろう』と発表しています。

>新しいライセンスでは、個人使用や開発使用などの特定の使用が無料で許可されますが、
>以前のOracle Javaライセンスで許可されたその他の使用は利用できなくなる可能性があります。

→java.com →download →release_notice →Oracle Java SE 8 Release Updates

■OpenJDK

完全オープンソース

OpenJDKは、一部の連結用コンポーネント部分を除き、「GNU一般公衆利用許諾契約書(GNU GPL Ver2)」でライセンスされています。

つまり、OpenJDKは「完全なオープンソースJava」として、自由に無料で使用できます。

Oracle JDKの優れた代替製品

OpenJDKは、まったく制限なく商用ソフトウェアプロジェクトで使用できます。

この点で、「OpenJDK」は「Oracle JDKの優れた代替製品」になり得ます。

人気比較

■以前:「Oracle JDK」が人気

以前は、「Android Studio」や「IntelliJ IDEA」などの開発ツールで「Oracle JDK」が好まれて使用されていました。

■最近:「OpenJDK」が人気

最近では、主要な開発ツールで、「Oracle JDK」から「OpenJDKベースのJetBrainsビルド」に切り替えられています。

また、主要Linuxディストリビューション(Fedora、Ubuntu、Red Hat Enterprise Linux)などでは、デフォルトのJava開発環境として「OpenJDK」が提供されています。

リリースサイクル比較

■Oracle JDK

「Oracle JDK」は、3年ごとにリリースしています。

そのリリースに対して長期サポートを提供します。

■OpenJDK

OpenJDKは、半年ごとにリリースされます。

次のバージョンがリリースされるまでの間は、リリースへの変更のみをサポートします。

ビルドプロセス比較

「Oracle JDKのビルドプロセス」は「OpenJDKのビルドプロセス」に基づいているため、この2つの間に技術的な差異はありません。

OpenJDKで、「従来では商用機能とされていた機能」を利用できるようになりました。
・Flight Recorder
・Java Mission Control
・アプリケーションクラスデータ共有
・Zガベージコレクタ など

したがって、Java 11以降では、両者のビルドは本質的に同一です。

参考サイト
→openlogic.com →What is OpenJDK?
→baeldung.com →Differences Between Oracle JDK and OpenJDK
→openlogic.com →OpenJDK vs. Oracle JDK: What the Java Experts Say
→openlogic.com →Latest OpenJDK Guide: Migration, Support, Expert Advice
→diarium.usal.es →Understanding Java Components like JVM, JRE, JDK and OpenJDK
→helenjoscott.com →The Java SE Ecosystem

この記事のタグ一覧

おすすめの記事

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

AIツール実験室

2023.12.27

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

各チャットAIの「添削能力」について比較確認をしています。 「ChatGPT4と同等の添削能力を発揮した無料チャットAI」にご注目ください。 また、 ChatGPTカスタマイズ機能「GPTs」を利用して作成した GPTs文章添削機能「添削師匠さん✍️」を紹介しています。 課金勢は試しに使ってみてください。

AIツール関連 記事リストポータル

AIツール

2023.10.05

AIツール関連 記事リストポータル

AI 関連の記事をまとめたポータルページです。

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。