Java EE の向かう先
2010年12月24日 at 6:25 午後 2件のコメント
このエントリはJava Advent Calendar -ja 2010 の一環です。
Yamashiro0217さんに引き続き 12/24 の担当をさせて頂きます。
先日勉強会で GlassFish v3.1 の新機能をご紹介したばかりなので何を書こうかいろいろ悩んでいたのですが、やっぱり私は Java EE 関連のイメージが強いと思いますので、Java EE の最新情報についてお届けしようと思います。
ただし、「本日ご紹介する内容はまだ計画段階の内容を多く含みますので、今後大きく方針等が変更される可能性があります」のでその点だけご理解ください。Java EE 6 がリリースされて1年、本エントリではこれからの Java EE がどのような方向に進むのか概要を捉えて頂ければと思います。
さて、Java EE 6 は 以前のバージョン(Java EE 5)のリリースに比べて世界ではとても早いスピードで浸透してきています。我々は既に Java EE 6 対応のアプリケーションサーバ GlassFish v3 を提供していますし、また、多くのベンダーが Java EE 6 に対応したアプリケーションサーバの開発を進めておりリリース間近の製品もあります。
本日は Java EE 6 の後にリリースされる予定の 「Java EE 7」 について紹介します。
ずばり、Java EE 7 のメインテーマは「クラウド」対応です(PaaS)。
恐らく、この Java EE 7 の「クラウド」対応という言葉は、今年の JavaOne の報告等で目にされていらっしゃる方もいらっしゃるかと思います。それではどのあたりがクラウド対応なのか?という事について本エントリではすこし掘り下げて説明したいと思います。
まず、今まで提供してきた Java EE (Web コンテナ/EJB コンテナ) コンテナは、既存のエンタープライズ要件を十分に満たしてきたわけですが、今後 Java EE はクラウドに対応する必要があると考えています。
Java EE 6 までに提供してきたものは下記が上げられます、そしてこれらの内今すぐクラウド環境に適用できる物もあります。
- コンテナ(Web/EJB)
- サービス、インジェクト可能なサービス
- リソース管理
- 大規模クラスタ対応(Java EE インスタンスのスケール)
- セキュリティモデル
- 境界や規制が必要な環境への適用を可能とする。
しかし、クラウド環境に対応するためには上記では不十分で、追加で考慮しなければならない点があります。例えば下記のような点がクラウド対応に必要だと考えています。
- リソースと状態管理の厳密化
今までは、アプリケーションサーバのインスタンス毎に状態を管理でき、アプリケーション毎に状態管理を行う事はできませんでしたが、アプリケーション中で使用するスレッドの使用ポリシーの定義ができるようになる他、アクセスするリソースに対する定義がアプリケーション単位でできるようになります。またアプリケーションサーバは定義された内容について監視ができるようになります。
- アプリケーション間の独立性
特定のアプリケーションを起動する事によりスレッドやメモリが消費されますが、それが他のアプリケーションに対して影響を与えてしまうのは問題です。そこで、アプリケー ション間の独立性を確保し他への影響を及ぼさないようにする必要があります。このようにアプリケーションが他のサービスに影響しないように独立して稼働できるような定義ができる他、サービスの共有等も定義もできるようにしたいと考えています。
- NRDBMS,キャッシュアクセスに関する標準APIの提供
クラウドを考える際 Amazone の S3 といったストレージサービスのように、ストレージやキャッシュに対してデータを保存する仕組みが必要です。現在は、Java EE でこのようなクラウド環境のストレージサービスに対してデータを保存する共通 API が提供されておらず、個別の実装が必要です。そこで Java EE の API でこれらのストレージサービスに対してアクセスできる API を提供する必要があると考えています。
- 共通の管理、監視インタフェース
今までアプリケーションサーバのインスタンスの管理、監視用のAPI は提供されていましたが、クラウドのような環境ではアプリケーションレベルでの管理、監視用の API が必要と考えています。アプリケーションが起動された際に、その管理、監視用 API をコールする事で動的にアプリケーションの制御ができるようになります。
- アプリケーションのバージョニング
アプリケーションのバージョニングにおいては、同一アプリケーションの複数バージョンを扱えるようにし、柔軟にアプリケーションのバージョンアップができるようにする必要があると考えています。(GlassFish v3.1は既に一部対応)アプリケーションの更新に伴い、RDBMS のスキーマ等が変わった場合に、その定義ファイル等をマイグレーションするのはとても困難でした。同一アプリケーションで複数のバージョンを持たせる事で、よりかんたんにアプリケーションのバージョンアップ/ロールバックが可能になります。
現在上記のような点を改善しクラウド環境で利用できるように考えています。「現在 Java EE 7 は仕様を検討し始めた段階で、上記が全てではありません」。Java EE 7 のクラウド対応に関するコメント等を JCP/GlassFish コミュニティ等で受け付けています。ご意見、ご要望がある方は是非これらのコミュニティへフィードバックをお送りください。
また、クラウド対応以外の各種仕様に関するアップデートの一部も下記に記載します。この中で最も大きく変わりそうなのは JMS だと思われます、今までよりもかんたんに JMS の開発ができるような方向で改良が加えられる予定です。
- JavaServer Faces 2.1 (マイナーアップグレードで JavaEE 7 前に利用可能予定)
- UIData の瞬間的な状態保存
- XML ビューのクリーンアップ
- Facelet からのキャッシュAPI
- JavaServer Faces 2.2
- HTML 5 対応
- HTML 5 タグへの対応
- ブラウザ機能の検出
- HTML 5 用コンポーネント
- 音声/動画のサポート
- 頻繁に利用される API の標準化
- Apache MyFaces Trinidad PageRsolver
- Oracle ADF ApplicationContextManager
- JSR 276: Design-Time Metadata for JavaServerTM Faces Components サポート
- 既存機能の拡張
- モバイルレンダーキット
- コンポジットコンポーネント
- パフォーマンスの改善
- JMS 2.0
- API における曖昧さと、不確実性を解決
- 既存 API の複雑性を解決
- 不完全かつオプションの仕様のJava EEへの統合
- 共通のベンダ拡張/新機能の標準化
- 他言語や他の仕様の統合
- WebTier
- WebSocket プロトコルのサポート
- JSON API のサポート
- HTML 5 のサポート
- NIO.2 ベースの Web コンテナ
- JPA 2.1
- ※ コミュニティからの改善要望を受付中 ※
- JPA 2.0 に対する機能追加を予定
- モジュール化
Java EE におけるモジュラリティについてですが、Java EE のモジュール対応は Java EE 8 で対応する予定です。ご存知の通り、Java SE の Project Jigsaw のモジュール機能が、Java SE 8 で実装されるため、Java EE 7 のリリース時点では対応が (Java EE 7 の方が Java SE 8 より早くリリースする可能性が高いため) 困難でJava EE 8 での対応を予定しています。
- ロードマップ
- JAX-RS 2.0 と JPA 2.1 は近々登録予定
- JSF 2.2, Servlet 3.1, EJB 3.2, JMS 2.0は今後登録予定。
- 2012 年にリリース予定
最後に、
今まで (Java EE 6 まで) は企業環境で十分耐えられる技術や API を提供してきました。これらは現時点でもすぐクラウド環境に適応する事が可能な物もあります。一方、Java EE 7 は一から新しく仕様を再作成するのではなく、既存の技術に対してクラウド環境へ適用しやすい機能を追加で提供していく予定です。
また、今後の Java について若干触れておきたいとおもいます。
Java SE/EE に関して明確なロードマップを示されており継続して Java SE/EE を提供していく予定です。Java SE 7 は来年リリース予定ですし、Java EE も上記で記載したように提供に向けて今まさに議論が始まった所です。
Java に対する不安の声等もありますが、現時点で Oracle は Java をなくそうとか、コミュニティをおろそかにするという考えは一切なく、開発者の皆様の声を聞き、コミュニティを大事にしていきたいと考えています。例えば実際に、US Oracle では、GlassFish コミュニティも大事にしコミュニティ活動をおろそかにしてはいけない、それどころか逆にコミュニティを拡大するようにというメッセージもでているくらいです。また OpenJDK の開発に IBM 殿が参加された事も、OpenJDK のコミュニティ活動、成果物である JavaVM に対してとても良いニュースでした。
Oracle になった後、Oracle は Java を囲い込むのではないか?金儲けをしようとしているのではないか?という声も聞こえますが、Oracle の Java に対する開発・提供方針は Sun の頃から変えずにやっていこうと動いています。これだけ広く浸透した Java を Oracle が独占したりする事はありません(少なくとも現時点でそのようなメッセージは一切ないですし、例えば、OpenJDK を GPL v2 のライセンスでフォークして頂いてもいいです) ので今後も Java を安心してお使いください。
明日は、Java Advent Calendar -ja 2010 で Seacolor さんです。
Entry filed under: 未分類.
1.
Ogawati | 2010年12月25日 12:25 午後
今週、GlassFish・懇親会に参加させていただきました、
小川地です。メインフレーム中心のSEですけれども、
部外者の素朴な質問をさせて下さい。
今オラクル社で、NEetBeansで JavaEE6 の実装をするシステムの設計を行う場合、設計ツールは何を使うのでしょうか?
フェーズごとで、思いつくのは、
◎ ER図 ・・・ DB設計
◎ ユースケース図
◎ ロバネスト図
◎ シーケンス図 ・・・ リバース・フォワード
◎ クラス図 ・・・ リバース・フォワード
◎ コンポーネント ~ OSGi がらみの図表が頻繁に必要なのかどうかは、わかりませんが。。
などですが、実際は何を使っておられるのでしょう?
2. twitterまとめ2012/12/① | やっつけ仕事 | 2011年12月19日 11:30 午後
[…] JavaSE8は2013年ですか、了解です。こっちにはJ2EEの予定ですね。ただ、1ユーザとしてはVMの選択も悩ましいので、その点の情報も欲しい。OpenJDKがよく分からんし。 […]