サーチ…


Java SE JREまたはJava SE JDKディストリビューションの違い

Sun / OracleリリースのJava SEには、JREとJDKという2つの形式があります。簡単に言えば、JREは実行中のJavaアプリケーションをサポートし、JDKはJava開発もサポートします。

Javaランタイム環境

Java Runtime EnvironmentまたはJREディストリビューションは、Javaアプリケーションの実行と管理に必要な一連のライブラリとツールで構成されています。典型的な現代JREのツールは次のとおりです。

  • JVM(Java Virtual Machine)でJavaプログラムを実行するためのjavaコマンドは、
  • Nashorn Javascriptエンジンを実行するためのjjsコマンド。
  • Javaキーストアを操作するためのkeytoolコマンド。
  • セキュリティサンドボックスのセキュリティポリシーを編集するためのpolicytoolコマンド。
  • Web配置用の「pack200」ファイルの梱包と開梱のためのpack200unpack200ツール。
  • Java CORBAおよびRMIアプリケーションをサポートするorbdrmidrmiregistryおよびtnameservコマンド。

「デスクトップJRE」インストーラには、一部のWebブラウザに適したJavaプラグインが含まれています。これは意図的に「Server JRE」インストーラーから除外されています.linux syscall read benchmarku

Java 7 Update 6以降では、JREインストーラーにJavaFX(バージョン2.2以降)が含まれています。

Java開発キット

Java Development KitまたはJDKディストリビューションには、JREツール、およびJavaソフトウェアを開発するための追加ツールが含まれています。追加のツールには、

  • javacコマンド。Javaソースコード( ".java")をバイトコードファイル( ".class")にコンパイルします。
  • jarjarsignerなどのJARファイルを作成するためのツール
  • 以下のような開発ツール:
    • appletviewerアプレットを実行するための
    • idlj CORBA IDLからJavaコンパイラへ
    • javah JNIスタブジェネレータ
    • Javaソースコードの文字セット変換用のnative2ascii
    • schemagen Java to XMLスキーマジェネレータ(JAXBの一部)
    • serialverは、Java Object Serializationバージョン文字列を生成します。
    • JAX-WSのためのwsgenwsimportサポートツール
  • 診断ツール:
    • jdb基本的なJavaデバッガ
    • jmapおよびjhatを使用してJavaヒープをダンプおよび分析します。
    • スレッドスタックダンプを取得するためのjstack
    • ".class"ファイルを調べるためのjavap
  • アプリケーション管理および監視ツール:
    • jconsoleは管理コンソール、
    • アプリケーション監視用のjstatjstatdjinfo 、およびjps

典型的なSun / Oracle JDKインストールには、Javaライブラリのソースコードを含むZIPファイルも含まれています。 Java 6より前は、公開されている唯一のJavaソースコードでした。

Java 6以降、OpenJDKの完全なソースコードはOpenJDKサイトからダウンロードできます。通常、(Linux)JDKパッケージには含まれていませんが、別のパッケージとして入手できます。

Oracle HotspotとOpenJDKの違いは何ですか?

JREとJDKの二分法と直交しているため、幅広く利用できるJavaリリースには2種類あります。

  • Oracleホットスポットのリリースは、Oracleのダウンロードサイトからダウンロードしたものです。
  • OpenJDKのリリースは、OpenJDKのソースリポジトリから構築されたリリース(通常はサードパーティ製のプロバイダ)です。

機能的には、HotspotリリースとOpenJDKリリースにはほとんど違いがありません。ホットスポットには、Oracle(有料)Javaの顧客が有効にできる「エンタープライズ」機能がいくつかありますが、ホットスポットとOpenJDKの両方に同じテクノロジが存在します。

OpenJDKに対するHotspotのもう1つの利点は、Hotspot用のパッチリリースが少し前にリリースされる傾向があることです。これは、OpenJDKプロバイダがどの程度機敏であるかによっても異なります。たとえば、Linuxディストリビューションのビルドチームが新しいOpenJDKビルドを準備してQAを作成し、パブリックリポジトリに入れるのにどれくらいの時間がかかるかなどです。

大部分のホットスポットリリースは、ほとんどのLinuxディストリビューションのパッケージリポジトリからは入手できません。これは、Hotspotを使用すると、通常Linuxマシン上でJavaソフトウェアを最新の状態に保つことがより効果的であることを意味します。

Java EE、Java SE、Java ME、およびJavaFXの違い

Javaテクノロジはプログラミング言語とプラットフォームの両方です。 Javaプログラミング言語は、特定の構文とスタイルを持つ高水準のオブジェクト指向言語です。 Javaプラットフォームは、Javaプログラミング言語アプリケーションが実行される特定の環境です。

いくつかのJavaプラットフォームがあります。多くの開発者は、長年のJavaプログラミング言語開発者であっても、異なるプラットフォームが互いにどのように関係しているかを理解していません。

Javaプログラミング言語プラットフォーム

Javaプログラミング言語には4つのプラットフォームがあります。

  • Javaプラットフォーム、Standard Edition(Java SE)

  • Javaプラットフォーム、エンタープライズ版(Java EE)

  • Javaプラットフォーム、Micro Edition(Java ME)

  • Java FX

すべてのJavaプラットフォームは、Java仮想マシン(VM)とアプリケーションプログラミングインターフェイス(API)で構成されています。 Java Virtual Machineは、Javaテクノロジアプリケーションを実行する特定のハードウェアおよびソフトウェアプラットフォーム用のプログラムです。 APIは、他のソフトウェアコンポーネントまたはアプリケーションを作成するために使用できるソフトウェアコンポーネントの集まりです。各Javaプラットフォームは仮想マシンとAPIを提供します。これにより、Javaプラットフォームの互換性、消費電力、安定性、開発の容易性、およびセキュリティ。

Java SE

ほとんどの人がJavaプログラミング言語を考えるとき、彼らはJava SE APIを考えています。 Java SEのAPIは、Javaプログラミング言語のコア機能を提供します。これは、Javaプログラミング言語の基本タイプとオブジェクトから、ネットワーク、セキュリティ、データベースアクセス、グラフィカルユーザーインターフェイス(GUI)開発、およびXML解析に使用される高級クラスまでをすべて定義します。

コアAPIに加えて、Java SEプラットフォームは、仮想マシン、開発ツール、デプロイメントテクノロジ、およびJavaテクノロジアプリケーションで一般的に使用されるその他のクラスライブラリとツールキットで構成されています。

Java EE

Java EEプラットフォームは、Java SEプラットフォームの上に構築されています。 Java EEプラットフォームは、大規模で多層でスケーラブルで信頼性が高く、安全なネットワークアプリケーションを開発し実行するためのAPIと実行環境を提供します。

Java ME

Java MEプラットフォームは、携帯電話などの小型デバイス上でJavaプログラミング言語アプリケーションを実行するためのAPIと小さなフットプリント仮想マシンを提供します。このAPIはJava SE APIのサブセットであり、小さなデバイスアプリケーションの開発に役立つ特別なクラスライブラリもあります。 Java MEアプリケーションは、多くの場合、Java EEプラットフォームサービスのクライアントです。

Java FX

Java FXテクノロジーは、Java FX ScriptTMで書かれたリッチインターネットアプリケーションを作成するためのプラットフォームです。 Java FXスクリプトは静的型宣言言語で、Javaテクノロジバイトコードにコンパイルされ、Java VM上で実行されます。 Java FXプラットフォーム用に作成されたアプリケーションは、Javaプログラミング言語クラスを含み、それにリンクすることができ、Java EEプラットフォームサービスのクライアントでもよい。


Java SEのバージョン

Java SEのバージョン履歴

次の表は、Java SEプラットフォームの重要なメジャーバージョンのタイムラインを示しています。

Java SEバージョン1 コード名廃止(無料2発売日
Java SE 9(アーリーアクセス) 無し 未来 2017-07-27(推定)
Java SE 8 無し 未来 2014-03-18
Java SE 7 イルカ 2015-04-14 2011-07-28
Java SE 6 マスタング 2013-04-16 2006-12-23
Java SE 5 2009-11-04 2004年10月4日
Java SE 1.4.2 マンティス 2009年11月4日より前 2003-06-26
Java SE 1.4.1 ホッパー/グラスホッパー 2009年11月4日より前 2002年9月16日
Java SE 1.4 マーリン 2009年11月4日より前 2002-02-06
Java SE 1.3.1 レディバード 2009年11月4日より前 2001-05-17
Java SE 1.3 チョウゲンボウ 2009年11月4日より前 2000-05-08
Java SE 1.2 遊び場 2009年11月4日より前 1998年12月8日
Java SE 1.1 スパークラー 2009年11月4日より前 1997-02-19
Java SE 1.0 オーク 2009年11月4日より前 1996年1月21日

脚注:

  1. このリンクは、オラクルのWebサイトにある各リリースのドキュメントのオンライン・コピーへのリンクです。多くの古いリリースのドキュメントはオンラインではなくなりましたが、通常はOracle Javaアーカイブからダウンロードできます。

  2. Java SEのほとんどの歴史的なバージョンは正式な "end of life"の日付を過ぎました。 Javaバージョンがこのマイルストーンに合格すると、Oracleは無料でアップデートを提供しなくなります。サポートは、サポート契約を結んでいるお客様にも利用できます。

ソース:

Java SEバージョンのハイライト

Java SEバージョンハイライト
Java SE 8 ラムダ式とMapReduceにインスパイアされたストリーム。 Nashorn Javascriptエンジン。型の注釈と繰り返しの注釈。符号なし算術拡張。新しい日付と時刻のAPI。静的にリンクされたJNIライブラリ。 JavaFXランチャー。 PermGenの除去。
Java SE 7 文字列スイッチ、 リソースの試行 、ダイヤモンド( <> )、数値リテラルの強化、例外処理/再解析の改善並行性ライブラリの拡張。ネイティブファイルシステムのサポートが強化されました。ティムソート。 ECC暗号アルゴリズム。改良された2Dグラフィックス(GPU)サポート。プラッガブルな注釈。
Java SE 6 JVMプラットフォームとSwingのパフォーマンスの大幅な向上スクリプト言語APIとMozilla Rhino Javascriptエンジン。 JDBC 4.0。コンパイラAPI。 JAXB 2.0。 Webサービスのサポート(JAX-WS)
Java SE 5 注釈、自動ボクシング、 enumクラス、varargs、 forループと静的なインポートのfor拡張。 Javaメモリモデルの仕様。スイングとRMIの拡張。 java.util.concurrent.*パッケージとScanner追加。
Java SE 1.4 assertキーワード。正規表現クラス。例外チェーン。 NIO API - ノンブロッキングI / O、 BufferChanneljava.util.logging.* API。イメージI / O API。統合されたXMLとXSLT(JAXP)。統合されたセキュリティと暗号(JCE、JSSE、JAAS)統合されたJava Web Start。プリファレンスAPI。
Java SE 1.3 HotSpot JVMが含まれています。 CORBA / RMI統合Java命名とディレクトリインタフェース(JNDI)。デバッガフレームワーク(JPDA)。 JavaSound API。プロキシAPI。
Java SE 1.2 strictfpキーワード。 Swing API。 Javaプラグイン(Webブラウザ用)。 CORBAの相互運用性コレクションフレームワーク。
Java SE 1.1 内部クラス。反射。 JDBC。 RMI。 Unicode /文字ストリーム。国際化対応。 AWTイベントモデルのオーバーホールJavaBeans。

ソース:



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow