Javaを始めた時最初につまずいたのが様々な略称でした。J2EE,J2SE,JDK,JRE,JVM...等々。一体何のことを言ってるのかさっぱり。同じような言葉がたくさん出てきたり、むしろ同じ意味なのに呼び方が違ったりとずいぶん悩みました。今でも正確に説明出来る訳ではないですが大分理解も深まってきましたのでこの機会にまとめておこうと思います。
Java
これはそのままプログラミング言語の事ですね。
狭義ではオブジェクト指向プログラミング言語Javaであり、広義ではプログラミング言語Javaのプログラムの実行環境および開発環境をいう。
Java - Wikipedia
wikiにはこのように書かれてますがあまり深く考えず言語の事を指してると解釈しておきましょう。総称です。
JDK(Java Development Kit)
直訳するとJava開発キット(環境)。Javaでプログラムを作るとき必要です。
JDKにはJREが含まれています。
Java Development Kit (JDK) は、Solaris、Linux、Mac OS XまたはWindows上でのJava開発者向けのバイナリ形式でありオラクルによりリリースされる、Java SE、Java EEやJava MEの各プラットフォーム全ての実装である。
Java Development Kit - Wikipedia
JRE(Java Runtime Environment)
直訳するとJava実行環境。Javaで作られたプログラムを実行するとき必要です。
JDKに含まれているJREを非公開JRE(PrivateJRE)、単体でインストールするものを公開JRE(PublicJRE)といいます。ファイルの差異があったり非公開JREのjarはデバッグオプション付きでコンパイルされてたりするみたいです。
JREに含まれているもの
・JVM(Java virtual machine)
・API(Application Programming Interface)
このソフトウェア群はJava仮想マシン (JVM) とアプリケーションプログラミングインタフェース (API) から成り立っている。APIは標準Javaクラスライブラリのセットを提供する。仮想マシンとAPIは互いに互換性がなければならず、それゆえJREとして共にバンドルされている。これは仮想マシンがプロセッサであり、APIがユーザインタフェースであるような仮想的なコンピュータと考えることができる。
Java Runtime Environment - Wikipedia
JVM(Java Virtual Machine)
Java言語で作られたプログラムを実行するためのソフトウェアです。JREに含まれています。実行させるにはソースコード.java
をコンパイルしてクラスファイル.class
を作成する必要があります。
Java仮想マシン (Java virtual machine、Java VM、JVM) は、Javaバイトコードとして定義された命令セットを実行するスタック型の仮想マシン。APIやいくつかのツールとセットでJava実行環境 (JRE) としてリリースされている。
Java仮想マシン - Wikimedia
API(Application Programming Interface)
JavaでいうAPIは関数群の事です。クラスやインターフェースの形で提供されてます。String.class
とかList.class
ですね。これらは目的別に応じてパッケージにまとめて格納されています。それが拡張子.jar
のファイルです。APIは多数ありますので使い方は公式サイト等で調べます。
Java Platform, Standard Edition 7 API 仕様の日本語版 - ORACLE
JavaSE(Java Platform, Standard Edition)
wikiにある通り標準的な機能がまとめられたAPIの集合体です。JDKやJREというのはJavaSEの事を指しているのとほぼ同義です。また、webでJavaの事を調べているとよく出てきて混乱する原因の一つがバージョンの表記です。J2SEやJ2EEという表記を見たことがあると思いますが、これはバージョン2から5までの表記がJ2SE
で、6以降はJavaSE
と表されます。紛らわしいですよね。
Java SE(バージョン5.0までは Java 2 Platform, Standard Edition または J2SEと呼ばれていた)は多くのJavaプラットフォームプログラムで役立つJava APIの集合体である。Java仮想マシン、APIなどから構成される。
Java Platform, Standard Edition - Wikipedia
公式にJavaSEの概念図があります。よくわからないと思いますが見てみるとなんとなくイメージ出来るのではないでしょうか。
Java Platform Standard Edition 7 ドキュメント - ORACLE
JavaEE(Java Platform, Enterprise Edition)
JavaSEにサーバ関係のライブラリなどを追加したもので、ベースはJavaSEそのものです。JavaEE SDK(JDKじゃないよ)は、JavaSE+JavaEE用ライブラリ+標準JavaEEサーバ+各種ドキュメントからなります。
主に大規模システム(サーバ用途)向けに、Java Servlet(サーブレット)、JavaServer Pages (JSP)、Enterprise JavaBeans (EJB)、Java Transaction API (JTA)、Java Message Service (JMS)、JavaMail、Java EE Connector Architecture (JCA)、およびXML関連のAPI(JAXP等)などの機能をセットにして提供するもの。多層システムの構築ができ、EJBによりトランザクション管理・リモート接続などの自動化ができる。
Java Platform, Enterprise Edition - Wikipedia
以上、簡単ですがまとめてみました。
これも参考に。
JavaをSEとEEに分類するのは今では無意味になってきている? - 達人プログラマーを目指して
参考書籍
技術評論社
売り上げランキング: 9,661