Java の３つのエディションについてざっくりまとめてみた[Java 初心者]

## はじめに

こんにちは。
プログラミング初心者 Wakinoza と申します。
Java 勉強中に調べたことを記事にまとめています。

十分気をつけて執筆していますが、なにぶん初心者が書いた記事なので、理解が浅い点などあるかと思います。
記事を参考にされる方は、初心者の記事であることを念頭において、お読みいただけると幸いです。
間違い等あれば、指摘いただけると助かります。

## 対象読者

- Java を勉強中の初心者の方
- Java SE Bronze 試験を勉強中の方
- Java の３つのエディションについてざっくり知りたい方

## 目次

1\.Java の３つのエディション
2\.Java SE(Java Platform, Standard Edition)
3\.Java EE(Java Platform, Enterprise Edition)
4\.Java ME(Java Platform, Micro Edition)
5\.Java SE Bronze 試験対策用の補足情報

## 本文

### 1\. Java の３つのエディション

Java には、利用目的に応じて、３つのエディションが用意されています。

- Java SE(Java Platform, Standard Edition)
- Java EE(Java Platform, Enterprise Edition)
- Java ME(Java Platform, Micro Edition)
  
それぞれを一言でざっくり説明すると、SEが基本機能セット、EE がサーバーサイド用拡張セット、ME がリソースの限られる端末用セットと言ったものです。
３つのエディションでは、それぞれの目的に合ったクラスライブラリと、開発および実行環境が提供されます。

:::note info
Java EE の名称について
Java EE は、2017 年に策定主体をオラクル社から EclipseFoundationに移管した関係で、名称を「Jakarta EE」に変更しています。
ところが、「Java EE」という名称は現在もオラクル社が所有しているのため、Java SE Bronze 試験では「Java EE」という名称が使われています。
本記事は試験対策として、以後も「Java EE」という呼称で進めていきます。
:::

### 2\. Java SE(Java Platform, Standard Edition)

Java SE は、JDK や標準クラスライブラリ、その他各種開発ツールなど最も基本的な機能を提供しています。

Java SE は、JDK と JRE という２つのパッケージが提供されています。

#### JDK(Java Development Kit)

JDK には、コンパイラやデバッカなどの各種開発ツールが含まれています。

#### JRE(Java Runtime Environment)

JRE には、Java のプログラムの実行に必要な標準ライブラリ、JVM(Java Virtual Machine)、その他必要なコンポーネントが含まれます。

JRE に含まれる標準ライブラリは、さらに大きく３つの機能「基本ライブラリ」「 統合ライブラリ」「ユーザーインターフェースライブラリ」に分かれています。

##### 1\.基本ライブラリ

基本ライブラリは、Java.lang や Java.util など、Java の基本的な機能を提供するものです。
その他に、I/O・シリアライズ・ネットワーク機能・セキュリティ・国際化対応・JVM を監視するための JXM(Java Management Extensions)・XML を扱うための JAXP（Java API for XML Processing）・ネイティブアプリケーションとの連携を実現する JNI（Java Native Interface）などが含まれています。

##### 2\.統合ライブラリ

統合ライブラリは、応用的な機能を提供するものです。
データベース連携を実現する JDBC(Java Database Connectivity)・分散アプリケーションを開発するための RMI（Remote Method Invocation）・COBRA（Common Object Request Broker Architecture）といった機能が含まれます。

##### 3\.ユーザーインターフェースライブラリ

ユーザーインターフェースライブラリは、GUI を実現するフレームワークのAWT（Abstract Window Toolkit）やswing、画像処理するためのJava 2D、印刷サービスやテキスト変換などが含まれます。

### 3\. Java EE(Java Platform, Enterprise Edition)
Java EEは、大規模開発用の仕様やAPIを提供しています。

大規模システム開発では、何百何千ものソフトウェアが互いに連携しながら処理を進めていきます。
多くのソフトウェアを連帯させ、業務全般を効率化するソフトウェア群のことを「エンタープライズシステム」と呼びます。
「エンタープライズシステム」は便利ですが、新規事業のたびに１から開発するのは非効率です。
そのため多くの場合は、エンタープライズシステムの基盤機能が実装されているソフトウェアを利用しています。
この基盤機能を提供するソフトウェアを「アプリケーションサーバー」と呼びます。

利用可能なアプリケーションサーバーは数多く存在します。
選択肢があることは利点ですが、APIや仕様が違いによってサーバー同士が連携できないなどの欠点も存在します。
そこで、サーバーの性能や互換性を保証する仕組みがつくられました。
アプリケーションサーバーが実現しなければならない機能の仕様やAPIを定め、これらに準拠しているかどうかのテストをクリアした製品が流通するようにしたのです。
こうした仕様やAPIを定めたものがJava EEです。

現在、様々な会社がアプリケーションサーバーを提供していますが、Java EEの仕様を満たすものであれば、同じ機能が提供され、互換性があるものとして扱うことができるようになりました。

### 4\.Java ME(Java Platform, Micro Edition)
Java MEは、リソースの限られる端末用の機能を提供しています。

リソースの限られる端末とは、具体的には携帯電話・PDAなどの端末・工業用ロボット・プリンタなどです。
このような端末では、メモリサイズが限られていたり、ディスプレイが小さかったり、バッテリー容量が少ないなどの物理的な制約があります。
このような端末を制御するソフトウエアを開発する際には、コンピュータ用のライブラリの一部は利用できません。
そのため、Java SEの標準ライブラリから必要最低限のAPIを選び出し、Java MEとして提供しています。

Java MEは、３つの要素「コンフィギュレーション」「プロフェッショナル」「オプショナルパッケージ」から構成されています。

#### コンフィギュレーション
最も基本的なライブラリと仮想マシンが提供されています。
Java MEでは、JVMの他に「KVM」という仮想マシンも用意されています。
KVMは、コンピュータ用のJVMを実行できないようなリソースが少ない端末のために用意された小型仮想マシンです。

#### プロフェッショナル
デバイス向けのAPIセットが提供されています。

#### オプショナルパッケージ
技術をサポートするためのAPIセットが提供されています。

### 5\.Java SE Bronze 試験対策用の補足情報

- JavaEEは、Java SEを拡張して作られたものなので、JavaEEを利用する場合はJava SEが必要です
- Java EEは仕様の集合体として提供されるのみで、実装は各種ベンダーやオープンソースコミュニティが提供しています

---

記事は以上です。
最後までお読みいただき、ありがとうございました。

## 参考文献

この記事は以下の情報を参考にして執筆しました。

- [徹底攻略 Java SE Bronze 問題集]
- [スッキリわかる Java 入門 第４版]
- [1.3 Java のエディションとバージョン（Java SE、Jakarta EE、リリースモデル、LTS など）～ Java Basic 編](最終更新 2023-11-05)(https://qiita.com/KenyaSaitoh/items/c2f6ddda0125a149dbe2) (参照 2025-03-31)