はじめに
本連載は、Java Enterprise Edition 6の導入方法をはじめとして、新導入された仕様や概念を紹介していきます。
対象読者
- Java EE 6開発に興味ある方
- これからJavaのWebアプリケーション開発をはじめる方
必要な環境
動作環境は以下の通りです。
- Java SE 6
- NetBeans 6.9.1
Java Enterprise Edition 6とは
Java Enterprise Edition 6(以下、Java EE 6)は、JavaでWebアプリケーションを中心とした業務アプリケーションを構築するために選定された数々の仕様と、その実装です。Webアプリケーションに関連する機能が数多く提供されており、具体的に例を挙げますと、アプリケーションサーバ、Webサービス、データベースのトランザクション管理、メッセージサービス、電子メールなど...利用する頻度の高い機能を提供されています。既にJavaのWebアプリケーションでは当たり前になっている機能もいくつかありますが、それらは全てJava EEの仕様を元に実装されており、Java EEの仕様を満たした機能を提供するアプリケーションサーバがJava EEアプリケーションサーバと呼ばれています。Java EEアプリケーションサーバの例を挙げると、WebLogic、JBoss、WebSphere、Glassfish、Cosminexus、Geronimoなどがあり、いずれのサーバでも同じアプリケーションが動くことが前提となっています(※注)。
いずれのアプリケーションサーバも、独自拡張をしている箇所があり、それぞれに依存する設定項目までは互換性がありませんが、Java EEの実装部分に対しては互換性を保っています。
Java EE 5とJava EE 6で大きく変わった所は、Webサービスのサポートが増えたこと、プレゼンテーション層の充実、従来よりも実装するコードや設定を減少する試みがされていることです。従来までのJava EEと比較したJava EE 6の特徴は、以下の3点です。
- 仕様の軽量化
- 拡張性
- 開発のしやすさを向上
仕様の軽量化と拡張性
従来のJava EEは仕様の拡充を繰り返してきたため、その結果、仕様が徐々に肥大化してしまい、さらには現在は使われなくなった仕様も含むようになりました。Java EE 6では全ての仕様を利用するのではなく、必要な仕様のみを選択できるようになっています。これをProfile(プロファイル)と呼び、Java EE 6ではWebアプリケーション仕様に関するProfileをWeb Profileとしてまとめられています。こうすることで、Java EEアプリケーションサーバは必要な機能のみを使うようにでき、従来のJava EEアプリケーションサーバのように不要な機能も稼動させる必要がなくなるため、全体的に軽量化も可能です。
開発のしやすさを向上
従来懸念されていた、実装を始める前に設定しなければならない内容や、記述が必須となるコードが非常に多かった点、Webブラウザへ画面を出力する機能にあまり強力なサポートがなかった点が改善されています。アプリケーションを構築する際に、毎回似たような記述を繰り返し書かなくても済むようになったことも、改善点の1つです。
本連載では、この改善点を挙げるとともに、より実装面で強力にサポートするために提供された仕様や実装を、実装例を交えて紹介していきます。本連載ではWebアプリケーションを初めて学ぶ方から、Java EEの学習を始めてみたい方も対象にしています。
Java EE 6の規格一覧
Java EE 6で提供される規格・仕様は、大きく分けると4つのカテゴリに分類されます。この分類は、前バージョンにあたるJava EE 5と同じですが、細かい仕様の追加がなされています。
以下に、代表的な仕様の構成図と一覧を示します。
カテゴリ名 | 代表的な仕様 | 概要 |
Webサービス | JAX-RS | XMLデータを送受信する仕様から、AJAX、RESTのサポート |
JAX-RPC | JavaアプリケーションからJavaベースのWebサービスを呼び出す | |
Webアプリケーション | サーブレット3.0 | JavaのWebアプリケーションの基本仕様。設定の簡略化がなされている |
JSP2.2 | 動的HTMLを出力するプレゼンテーション仕様 | |
JSF2.1 | JSPに変わるプレゼンテーション仕様。Webアプリケーションのインタフェースを強化する | |
JSTL1.2 | JSPやJSFで利用できる汎用的な機能をタグで定義し、拡張する仕様 | |
エンタープライズ機能 | EJB3.1 | 業務ロジックを実装するクラス仕様。従来のEJBに比べ設定を減らし、Java EE 6で採用された他の仕様に対応 |
JSR-330 | Javaネイティブで依存性注入を行う仕様。JSR-330そのものはインタフェース集合 | |
JPA | EJBでデータベース接続とトランザクション管理を行う仕様。Java EE 6のリリースに伴い改良 | |
CommonAnnotation | Java5で採用されたアノテーションをさらに拡張し、汎用的な注釈を定義 | |
JMS | ネットワークを跨いでメッセージを送受信する仕様 | |
管理機能 | JSR-196 | 認証サービス仕様 |
JAAS | Javaアプリケーションの認証・認可仕様 | |
ApplicationDeployment | Java EEサーバへのアプリケーション搭載のための仕様 |
ここに挙げた以外にも、Java EE 6で策定された仮の仕様や、将来廃止予定の仕様もあります。最新の動向については随時紹介していくとともに、本連載では特に注目すべきものに絞って紹介していきます。
紹介予定の仕様
Java EE 6を構成する仕様はたくさんあるので、その中から特に注目されているものを選びました。本稿では以下のものを紹介していく予定です。
- サーブレット3.0
- JSF2.0、JSF2.1
- JSR-330とGuice、EJB3.1
- JAX-RS(RESTful API、Java EEでRESTを実現する仕組み。RESTについては後述)
各仕様についての詳細は、次回以降に紹介します。今回は、環境構築を行いましょう。