マジセミドライブ

ウェビナー関連のニュースや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

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。