Java EE 7は何がどう新しくなったのか? 習得の近道は?──先行者からのアドバイス

Oracle Java & Developers編集部
2013-09-19 15:50:00
  • このエントリーをはてなブックマークに追加

Java EE 7ではJavaのバッチ処理も標準化


NTTコムウェア 品質生産性技術本部技術SE部 OSS・AP技術担当の上妻宜人氏

 続いて登壇したのは、NTTコムウェアの上妻宜人氏(品質生産性技術本部技術SE部OSS・AP技術担当)だ。上妻氏は、Java EE 7で新たに導入された標準のバッチ・フレームワークである「Batch Applications for the Java Platform(jBatch)」について、そのアーキテクチャと活用方法を紹介した。

 上妻氏によれば、jBatchでは「バッチに関する用語と各要素間の関連性」、「ジョブXML」、そして「API」が定義されている。その狙いは、さまざまなシステムで使われている「バッチ処理」に関して、共通化できる部分については標準のAPIを用意することで、より効率的にシステム開発が行えるようにすることにある。

 またjBatchには、具体的な機能として次のようなものが用意される。

  • 順序制御
  • チェック・ポイントによるレコード単位でのコミット
  • 壊れたデータが存在する場合でも処理を止めずに継続できるスキップ処理

 一方、スケジューリングや実行権限の管理といった機能は提供しない。そのため、一般のジョブ・スケジューラなどとは機能が重複する部分としない部分が出てくる。これについて上妻氏は、「アプリケーション・サーバの実装に含まれるjBatchを使えば、Java EEのコードから簡単にバッチ処理を起動できるようになります。既存のジョブ・スケジューラなどと機能が重複する部分に関しては、必要に応じて使い分けていくことになるでしょう」と説明した。

 なお、jBatchのアーキテクチャに関して、上妻氏は「メインフレームにおけるバッチ処理をJava EEベースへと移行することを視野に入れた構成であり、JCLやCOBOLの開発者にもなじみやすいものになっている」と評価する。

 「jBatchは、Spring Frameworkに含まれるSpring Batchの影響を強く受けており、多くの部分を参考にしています。機能に関しては、まだSpring Batchのほうが充実していますが、Spring Batchでも次期バージョンの3.0でjBatchへの対応が予定されています。またGlassFish 4には、すでにjBatchが実装されているので、ぜひ試してみてください」(上妻氏)

リアルタイムWebアプリケーションをJava EEで実現するWebSocket


日本オラクル Fusion Middleware事業統括本部 ソリューション本部 Cloud Application Foundationソリューション部 シニアセールスコンサルタントの松林晶氏

 最後のセッションでは、Java EE 7で追加された「Java API for WebSocket」について、日本オラクルの松林晶氏(Fusion Middleware事業統括本部 ソリューション本部 Cloud Application Foundationソリューション部 シニアセールスコンサルタント)が解説を行った。)

 WebSocketはHTML5の構成技術の1つであり、クライアント/サーバ間で単一のTCPチャネルを介した双方向/全二重通信を可能にする。このWebSocketを活用することで、これまでのWebアプリケーションでは擬似的にしか実現できなかった、サーバ側からクライアント(Webブラウザ)側に対するリアルタイムのプッシュ配信を実現する。

 「従来のWebアプリケーションでは、ポーリングなど通信の無駄が多く複雑な仕組みを使わなければ、サーバ側からのプッシュ配信を行うことはできませんでした。これを学校の出欠確認に例えるなら、毎朝、先生が生徒ひとりひとりに電話をかけて出欠を確認するような仕組みだったのです。

 これに対して、TCPベースで双方向/全二重通信が行えるWebSocketでは、生徒の側から欠席の電話連絡を入れるような、合理的な情報配信の仕組みをWebブラウザ上で実現することが可能になります」(松林氏)

 WebSocketによる通信では、初めにHTTPでコネクションを確立するため、プロキシやファイアウォール、ルータなどの環境を透過的に扱えるほか、任意のタイミングでクライアント側とサーバ側のどちらからでも通信を行えるというメリットがある。

 また、一度コネクションを確立した後、そのコネクション内でやり取りするデータは、ヘッダが大幅に簡略化された非常に軽量なものとなる。これは、パフォーマンスの向上やネットワーク負荷の軽減、アプリケーション・サーバの負荷軽減といったメリットを生む。

開発アプローチは「アノテーション・ベース」と「プログラミング・ベース」の2つ

 WebSocketを使ったアプリケーションの開発アプローチは、「アノテーション・ベース」と「プログラミング・ベース」の2つがあるという。松林氏は、それぞれのアプローチの特徴とメリット/デメリットも紹介した。

 それによれば、アノテーション・ベースで作る場合はPOJOとして実装できるため、コーディングも簡単かつ効率的に行える。それに対して、プログラミング・ベースの場合はインタフェースをコード上で実装する必要があるため、アノテーション・ベースの場合と比べて若干、手間が増えるという。

 「アノテーション・ベースで開発する利点は、既存のプログラム資産をある程度活用しつつ、それらをリアルタイムWebアプリケーション化できる点にあります。一方、プログラミング・ベースの場合は少し手間がかかるものの、メソッド名やシグネチャを固定化し、プログラムの可読性を高められるというメリットが生まれます。状況に応じてメリットの大きいアプローチを選択しながら、WebSocketによるWebアプリケーション開発が行えるようになっているのです」(松林氏)

 なお、NetBeansはバージョン7.3からJava API for WebSocket に対応しているという。松林氏は、「WebSocket を使ったWebアプリケーション開発に関心のある方は、ぜひNetBeansで実際に試してみてください」と呼びかけてセッションを締めくくった。

 以上、ここではJava EE 7のリリースを記念して開催された「リリース記念:今から始めるJava EE 7解説セミナー」の模様を紹介した。新機能の検証にいち早く取り組んできた新井氏と寺田氏がアドバイスするように、Java EE 7、さらにその先のJava EE 8を習得するうえで一番の近道は、すでに国内の現場で採用が進みつつあるJava EE 6から取り組むことだ。読者もぜひ今日から、Java EE 6で新しいJava EEの世界に踏み込んでいただきたい。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]