エンタープライズギークス (Enterprise Geeks)

企業システムの企画・開発に携わる技術者集団のブログです。開発言語やフレームワークなどアプリケーション開発に関する各種情報を発信しています。ウルシステムズのエンジニア有志が運営しています。

JavaEE7をはじめよう(1)

これから企業向けのWebシステムを作るとすれば、どのようなフレームワークを採用すればよいのだろうか。

10年ほど前であれば、Struts1 をベースにして、Spring のような他の OSS と組み合わせるのが一般的な選択肢だった。この記事を読んでいる人の中にも、当時に作成された Struts1 ベースのシステムを今も保守している方がいるのではないだろうか。
そのため、今年になって発見された Struts1 の脆弱性問題は非常に大きなインパクトがあったように思う。Struts1 系のメンテナンスはすでに終了しており、私にとっては、今後作っていくシステムをどのような構成にするかを、改めて考える機会になった。

そのようなわけで、これから数回にわたって JavaEE についての記事を書いていく。

ここでは必ずしも、 JavaEE こそがこれからのWeb開発にふさわしい唯一の選択肢だと言いたいわけではない。
とはいえ、J2EEという名前で重厚で複雑だった時と比較して、軽量かつ簡単に開発できるようになったことや、標準技術のために仕様が大きく変わったり、突然メンテナンスが終了したりする可能性が低い点で、以前に比べて有力な選択肢になったと考えている。

(個人的には、Scala や Play Framework も気に入っているので、そちらも記事もいずれは書いてみたい。)

JavaEE の仕様

Java EEJavaによる主に企業向けのサーバーシステム構築のための仕様集で、現在の最新バージョンは JavaEE7 である。

各バージョンに含まれる主な仕様の内容や更新内容を示す。

今後取り上げる内容

前述のJava EE の全てを取り上げると膨大な量になるので、主にWeb向けのシステムを構築するにあたって重要なものを、サンプルアプリケーションを通じて紹介していく。

現在予定している内容は以下の通り

サンプルアプリケーション

サンプルアプリケーションは以下に公開している。

アプリケーション

ソースコード

現在、JSFを使用したチャットアプリケーションを作成済みである。
なお、アプリケーションはとりあえず動けばよい程度なので、Herokuの無料プランで稼動している。 そのため、処理速度などに難があるかもしれないが、了承願いたい。 メールアドレスは、gravatar というメールアドレスから アバター画像を取得するサービスの利用ためのみに使用している。

gravatarに登録のないアドレスでも問題ないので、@を含む適当な文字列を入れてかまわない。 また、このアプリケーションはインメモリDBで稼動しているので、アプリケーションの停止(一定時間アクセスが無い場合、Herokuはアプリケーションを停止する) と同時にデータは破棄されるので、安心して使用いただきたい。

また、サンプルアプリケーションはDBを使用したWEBアプリケーションであり、 それぞれの仕様を以下のレイヤーに分けて使用し、各レイヤー間の依存性はCDIを用いている。

レイヤ 役割 仕様
View層 利用者へのUIを提供 xhtml(facelets), html(JAX-RS)
プレゼンテーション層 viewからのリクエスト受付、ビジネスロジック起動 CDIによるJSF管理Bean※(JSF), リソース(JAX-RS)
ロジック・サービス層 ビジネスロジックの提供 POJO(CDI Bean) または EJB
永続化層 DBへの入出力・同期 JPA

実行環境

Java EEの全ての機能を実行するには、Java EE に準拠しているアプリケーションサーバーが必要となる。 現状ではJava EE7に対応しているものは以下の通り。

なお、サンプルアプリケーションを公開している Heroku にはJava EE実行環境がないため、 組み込み版 GlassFish をライブラリとして取り込んだJavaアプリケーションとして実行している。

開発環境

次回

次回から数回に分けてJPAの解説を行う。

[前多 賢太郎]