目次
はじめに
Javaを始めたばかりの方や、Javaの開発環境選びで迷っている方向けに、Javaの基本概念やJDKの種類、Java EEの役割、EclipseやLinux環境でのJDKの使い方についてまとめました。
Java開発を始めると「Java SE」「Java EE」「Oracle JDK」「OpenJDK」といった用語がたくさん出てきて、混乱してしまうことが多いのではないでしょうか。
この記事では、Java初学者の方が必ず通る道である、これらの概念について体系的に整理し、実際の開発現場でどのように使い分けられているかを解説していきます。
Javaの基本:Java SEとJava EEの違い
まずは、Javaプラットフォームの基本的な分類から理解しましょう。
Java SE(Standard Edition)
Java SEは「Javaの基礎」と考えてください。
- JVM(Java Virtual Machine): Javaプログラムを実行する仮想マシン
- コンパイラ(javac): Javaソースコードをバイトコードに変換
- 標準ライブラリ: 文字列操作、日付処理、ネットワーク通信などの基本機能
- 実行ツール(java): コンパイル済みプログラムを実行
適用例:
- デスクトップアプリケーション
- コマンドラインツール
- 基本的なWebアプリケーション(Spring Boot単体など)
- バッチ処理プログラム
Java EE(Enterprise Edition)→ 現在はJakarta EE
Java EEは「Java SEを企業向けに拡張したもの」です。
Java EE = Java SE + 企業向け拡張API
- Web開発: Servlet、JSP、JAX-RS(REST API)
- 永続化: JPA(データベース操作の標準化)
- トランザクション管理: JTA(複数データベース間の整合性保証)
- メッセージング: JMS(非同期メッセージ処理)
- セキュリティ: Jakarta Security(認証・認可)
- その他: WebSocket、バッチ処理、CDI(依存性注入)など
重要なポイント:
- 2019年にOracle社からEclipse財団に移譲され、Jakarta EEに名称変更
- Jakarta EE 9以降でパッケージ名がjavax.*からjakarta.*に変更された
混乱しやすいポイント
Q: Java SEだけでWebアプリは作れないの?
A: 作れます!Spring BootやPlay Frameworkなど、Java SEベースでも高機能なWebアプリを開発できます。Java EEは「標準化された企業向け機能」を提供するものです。
Java EE(Jakarta EE)はどんな役割?
大企業や公共機関で使われる大規模Webシステムの開発に適しています。
Java EEは仕様の集合であり、実装するアプリケーションサーバー(GlassFish、WildFlyなど)が必要です。
Java EEが「仕様」である理由
Java EEは「こういう機能を提供しましょう」という約束事(仕様)の集合です。実際に動かすには、その仕様を実装したソフトウェアが必要です。
Java EE仕様 ← 「設計図」
↓
実装(アプリケーションサーバー) ← 「実際の建物」
├── WildFly(旧JBoss)
├── GlassFish
├── WebLogic(Oracle)
└── WebSphere(IBM)
注意:Tomcatは一部の仕様(Servlet、JSP)のみを実装したサーバーで、完全なJava EE実装ではありません。
なぜJava EEの実装(GlassFishなど)が必要なのか
- Java EEはAPI仕様の集合体なので、動かすためにはその仕様を実装したサーバーが必要
- GlassFishやWildFlyなどの完全なアプリケーションサーバーがその役割を担う
- Tomcatは一部の仕様(Servlet、JSP)のみを実装したサーバーで、完全なJava EE実装ではない
- 開発やテスト時に
pom.xml
でこれらの依存を追加しておくことで、Java EEの機能が動く環境を作る
開発時の設定例(Maven)
<!-- pom.xmlでの設定例 -->
<dependencies>
<!-- Java EE API -->
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>9.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
scope="provided"の意味:
開発時はコンパイルに使用するが、実行時はアプリケーションサーバーが提供する
JDKとは何か?種類と違いを理解しよう
JDK(Java Development Kit)とは
JDKは「Javaプログラムを開発・実行するための統合ツールセット」です。
- javac: コンパイラ
- java: 実行環境
- jar: JARファイル操作ツール
- javadoc: ドキュメント生成ツール
- デバッガ: プログラムのデバッグ支援
- 標準ライブラリ: Java SEの全機能
Oracle JDK
- Oracle JDK: Oracle社の公式JDK
- 特徴: 商用サポートあり、長期サポート版で8年間のサポート
- ライセンス: 商用利用は有料(Oracle Technology Network License)
主要なOpenJDKディストリビューション
ディストリビューション | 提供元 | 特徴 | ライセンス | 適用場面 |
---|---|---|---|---|
Eclipse Temurin | Eclipse Foundation | 人気No.1、TCK認証 | 無料 | 初心者・一般開発 |
Amazon Corretto | Amazon | AWS最適化 | 無料 | AWS環境 |
Azul Zulu | Azul Systems | 高性能、サポート充実 | 無料/有料 | 企業での高性能要求 |
Microsoft OpenJDK | Microsoft | Azure最適化 | 無料 | Azure/.NET環境 |
Red Hat OpenJDK | Red Hat | RHEL統合 | 無料 | Red Hat環境 |
重要なポイント:
すべてのJDKは同じJava仕様に準拠しているため、基本的な動作は同じです。違いは「サポート体制」「最適化」「付属ツール」「特定環境での統合」などです。
初心者・多くの現場におすすめは
無料で使えるEclipse TemurinやAmazon Corretto。
開発環境と実行環境でのJDKの違い
これは初心者が最も混乱しやすい概念の一つです。
開発環境(ビルド時)のJDK
- 用途: ソースコードをコンパイルする
- 場所: 開発者のPC(Eclipse, IntelliJ)
- 重要なポイント: どのJDKでも結果は基本的に同じ
開発フロー:
Javaソースコード (.java)
↓ [JDKのjavacでコンパイル]
バイトコード (.class/.jar)
実行環境(ランタイム)のJDK
- 用途: コンパイル済みプログラムを実行する
- 場所: 本番サーバー(Linux、Windows Server)
- 重要なポイント: JDKの選択がパフォーマンスに直結
実行フロー:
バイトコード (.class/.jar)
↓ [JDKのJVMで実行]
実際のプログラム動作
実際の現場では...
開発時: Eclipse Temurin 17
本番環境: Amazon Corretto 17(AWSで最適化済み)
このように、開発と本番で異なるJDKを使うことは珍しくありません。
EclipseやIntelliJで使われるJDKについて
- EclipseはデフォルトでEclipse Temurinを使うことが多い
- IntelliJは自分でJDKを設定し、好きなOpenJDK系を指定できる
- どちらもプロジェクトごとにJDKのバージョンや種類を切り替え可能
実践的な設定例
プロジェクトA: JDK 8(レガシーシステム)
プロジェクトB: JDK 11(現行システム)
プロジェクトC: JDK 17(新規開発)
IDEでは、このような複数バージョンを同時に管理できます。
まとめ:初心者が知っておきたいポイント
この記事で解説した内容をまとめると、以下のようになります:
基本概念の整理
- Java SE:Javaの基本プラットフォーム(必須)
- Java EE/Jakarta EE:企業向け拡張仕様(オプション)
JDKの選択
- Eclipse Temurin:初心者におすすめの無料JDK
- 基本仕様は共通:どのJDKを選んでも基本的な動作は同じ
- 違いはサポート・最適化:商用サポートやパフォーマンス調整が主な差
開発環境
- IDE設定:EclipseやIntelliJでは複数JDKを管理可能
- プロジェクト別設定:案件に応じてJDKバージョンを使い分け
重要な注意点
- 実行環境の重要性:本番環境のJDKがパフォーマンスに大きく影響
- Jakarta EE移行:2019年以降、javax.*からjakarta.*への変更に注意
- Tomcatの位置づけ:軽量サーバーであり、完全なJava EE実装ではない
これらの基礎知識を理解することで、Java開発環境の選択や設定で迷うことが少なくなります。最初は完璧に理解する必要はありませんが、開発を進めながら徐々に深めていくことが大切です。
おすすめ書籍
Java学習をさらに深めたい方におすすめの書籍をご紹介します。
初心者向け
スッキリわかるJava入門 第4版 (スッキリわかる入門シリーズ)
Java初学者に最も人気の入門書です。プログラミング未経験者でも理解できるよう、基本から丁寧に解説されています。
- 基本文法から始められる
- 図解が豊富で理解しやすい
- 実際に手を動かしながら学べる構成
実践向け
プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書
現場で実際に使われる技術や考え方を学べる実践的な書籍です。基本を覚えた後のステップアップに最適です。
- 実務で求められるスキルが身につく
- 開発現場の実情を知ることができる
- プロのエンジニアになるための指針を提供
まずは「スッキリわかるJava入門」で基礎を固め、その後「プロになるJava」で実践的なスキルを身につけるという学習ルートがおすすめです。