1.

Java プラットフォーム完全ガイド — SE/EE/ME/JVM 言語

編集
この記事の要点
  • Java は単一の言語ではなくプラットフォーム群Java SE (デスクトップ/汎用)、Jakarta EE (旧 Java EE、エンタープライズ)、Java ME (組込) の 3 系統
  • Java SE: JVM + 標準ライブラリ + JavaFX (別配布)。Jakarta EE: Servlet / JSP / EJB / JPA / JMS (現在は Eclipse Foundation 管理)
  • Android は Java 言語を使うが、JVM ではなく独自の Dalvik → ART ランタイム。実質別プラットフォーム
  • サーバサイド主流: Spring / Spring Boot、Quarkus、Micronaut、Helidon。クラウドネイティブ向け Native Image (GraalVM)
  • JVM 言語: Kotlin (Android/サーバ)、Scala (関数型/データ)、Groovy (Gradle/スクリプト)、Clojure (Lisp 系)

Java プラットフォームの全体像

「Java」は単一の製品名ではなく、JVM (Java Virtual Machine) を中心とした技術エコシステムの総称です。用途別に複数のエディションがあり、さらに JVM 上で動く他言語 (Kotlin, Scala, Groovy など) も含めて Java プラットフォームと呼ばれます。

3 つの主要エディション

エディション用途含まれる主要 API
Java SE (Standard Edition)汎用・デスクトップ・サーバ基盤java.lang / java.util / java.io / java.net / java.time / Stream / Concurrency
Jakarta EE (旧 Java EE)エンタープライズ Web/サーバServlet / JSP / EJB / JPA / JAX-RS / CDI / JMS / WebSocket
Java ME (Micro Edition)組込・IoT・フィーチャーフォンCLDC / CDC / MIDP (一部のみ)

Java SE の構成

  • JVM (Java Virtual Machine): bytecode を実行する仮想マシン
  • JRE (Java Runtime Environment): JVM + 標準ライブラリ (実行用)
  • JDK (Java Development Kit): JRE + コンパイラ javac + ツール群 (開発用)
  • 標準 API: java.* パッケージ (Collections / Stream / NIO / Concurrent / Time)
  • JavaFX: GUI ツールキット (Java 11 以降は別配布、OpenJFX として OSS)
Java SE バージョンと LTS (Long-Term Support):

8   (2014)  ← LTS。長年の事実上標準
11  (2018)  ← LTS。モジュールシステム後の最初の LTS
17  (2021)  ← LTS。records / sealed classes / pattern matching
21  (2023)  ← LTS。Virtual Threads (軽量スレッド)
25  (2025予定) ← LTS

通常版は半年ごと (Java 12, 13, 14, ...) にリリースされるが、本番運用は LTS 推奨。

Jakarta EE

大規模 Web アプリ・基幹系で使われるサーバサイド仕様の集合。2018 年に Oracle から Eclipse Foundation に移管され、商標の都合で「Java EE」→「Jakarta EE」に改名されました。

仕様説明
Servlet / JSPHTTP リクエスト処理・テンプレート
JPAORM (Hibernate / EclipseLink が実装)
JAX-RSRESTful Web サービス
EJB分散トランザクション (現在は減少)
CDI依存性注入
JMSメッセージング
WebSocket双方向通信
Bean Validation入力値検証 (@NotNull など)

主な実装サーバ: WildFly (旧 JBoss)、Open Liberty (IBM)、Payara (Glassfish ベース)、TomEE (Tomcat + EE)。

Android プラットフォーム

Android は Java 言語の文法を使いますが、ランタイムが異なります:

  • ソースコードは Java / Kotlin で書く
  • javac で bytecode を作った後、d8 ツールで Dalvik bytecode (.dex) に変換
  • Android 5.0 以降は ART (Android Runtime) が AOT (Ahead-of-Time) コンパイル
  • JVM ではないので、java.awtjavax.swing など SE の一部は使えない
  • 代わりに android.* SDK が提供される

サーバサイドフレームワーク

Jakarta EE 直接利用より、軽量フレームワークが主流です。

フレームワーク特徴用途
Spring Boot圧倒的シェア。Auto Configuration。Spring エコシステム業務系全般
QuarkusGraalVM Native Image 前提。起動 0.01s、メモリ最小サーバレス・コンテナ
Micronautコンパイル時 DI、Quarkus 同様の高速起動マイクロサービス
HelidonOracle 製、SE/MP 2 バリアントクラウドネイティブ
Vert.x非同期・ノンブロッキング高スループット I/O
Play FrameworkScala/Java、Akka ベース関数型寄りの Web

デスクトップ / GUI

ツールキット状態用途
JavaFX (OpenJFX)現役。Java 11 以降別配布業務デスクトップ・教育
Swingレガシー (Java SE 同梱)既存システム保守
AWT低レベル (Swing の下層)ほぼ直接使わない
SWTEclipse プラグイン用Eclipse IDE / RCP
Compose Multiplatform新興。Kotlin で Desktop + Android + Web新規 GUI 開発

JVM 言語 (代替言語)

言語特徴主な用途
KotlinJetBrains 製。Null 安全・拡張関数・コルーチンAndroid / サーバサイド (Spring + Kotlin)
Scala関数型 + OOP。型システム強力Spark / データエンジニアリング
Groovy動的型・スクリプト寄りGradle スクリプト・Jenkinsfile
ClojureLisp 系・不変・REPL 開発関数型サーバ・データ処理
JRuby / JythonRuby / Python の JVM 実装既存スクリプト統合

GraalVM と Native Image

GraalVM は Oracle が開発する高性能 JVM で、特に Native Image 機能が注目されています。Java アプリを事前コンパイルしてネイティブ実行ファイル化することで:

  • 起動時間: 数秒 → 数十ミリ秒
  • メモリ使用量: 数百 MB → 数十 MB
  • Lambda / Cloud Run などサーバレス向き
  • 制約: リフレクション・動的クラスロードは事前設定が必要
# Quarkus + GraalVM の Native Image ビルド例
./mvnw package -Pnative

# 出力された native バイナリを直接起動
./target/my-app-runner
# → 起動 0.02s、メモリ 30 MB

Java SE の主な機能カテゴリ

カテゴリパッケージ
言語基本java.lang (String / Object / Math / Thread)
コレクションjava.util (List / Map / Set / Stream)
I/Ojava.io / java.nio (ファイル / ストリーム / Channel)
ネットワークjava.net (URL / HttpClient / Socket)
日時java.time (LocalDate / ZonedDateTime / Duration)
並行処理java.util.concurrent (ExecutorService / CompletableFuture / Virtual Threads)
セキュリティjava.security / javax.crypto
XML / JSONjavax.xml (JSON は外部ライブラリ Jackson 等)
SQLjava.sql / javax.sql (JDBC)

FAQ

Q: Java SE と Jakarta EE、何が違う?
A: Java SE は言語+標準ライブラリそのもの。Jakarta EE は SE の上に乗るサーバサイド仕様の集合 (Servlet / JPA / JAX-RS 等)。EE 単体では動かず、必ず SE+EE 実装サーバ (WildFly 等) が必要です。

Q: Java と Kotlin、サーバサイドはどちらを学ぶべき?
A: 既存資産が多いのでまず Java SE と Spring Boot。その後 Kotlin に移ると、Spring も Kotlin で書けるため移行が滑らかです。Android 開発を視野に入れるなら Kotlin 必須。

Q: Java ME はまだ使われている?
A: スマートフォン全盛で 大幅に縮小しましたが、組込分野 (古い決済端末、フィーチャーフォン残存市場、産業機器) では現役です。新規開発はほぼ無いと考えてよいでしょう。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. プラットホーム
  2. 環境構築
  3. 文法
  4. API
  5. Servlet(サーブレット)
  6. JSP
  7. Applet(アプレット)
  8. デザインパターン
  9. フレームワーク
  10. ライブラリ
  11. Androidアプリケーション
  12. Project Jigsaw
  13. エラー一覧
  14. 日付の加算、減算
  15. 文字列の数字チェック
  16. 改行コードの削除
  17. 先頭と末端の文字の削除
  18. warファイルの中身を確認する方法
  19. nullもしくは空文字の判定
  20. beanの中身を確認する方法
  21. org.apache.log4j.Logger のログ出力で printStackTrace() のエラー内容を出力する方法
  22. Javaのバージョン確認方法

最近更新/作成されたページ