JavaとFlex/AIRをつなぐ「炎」のオープンソース
Tomcatを使ったサーバPushもできるBlazeDSとは?

クラスメソッド株式会社
友田 翼
2007/12/27


 2007年12月13日に米国アドビシステムズ社(以下、アドビ社)から「BlazeDS」というオープンソースプロジェクトが公開され、現在Adobe LabsからBlazeDSのパブリックベータ版がダウンロード可能になっています(参照「アドビ、「BlazeDS」はAjax+JSONの4倍速い〜リモーティング、メッセージングのOSS〜」)。ちなみに、Blazeは英語で「炎」の意味ですね。

 本稿では、オープンソースになったBlazeDSについて、付属されているサンプルアプリケーションを見ながら、いったいどんなものであるのかを紹介していきたいと思います。

「炎のデータ・サービス」? BlazeDSとは何なのか?

 BlazeDSとは、アドビ社が公開した新しいオープンソースプロジェクトで、従来LiveCycle Data Services(以下、LCDS)で利用可能であった機能であるRemotingとMessagingのソースコードが、LGPL v3ライセンスの下で公開されています。

編集部注LiveCycleLC)について詳しく知りたい読者は、「J2EEを拡張するAdobe LiveCycleの全容」をご参照ください。

 また、併せて「AMF(Action Message Format)という、プレーンテキストなどと比べると非常に圧縮率の高いバイナリデータフォーマットのスペックもついに公開されました(参照:「AMF 3 Specification」)。

 以下が、リモーティングとメッセージングの特徴になっています。

リモーティングの特徴

 リモーティングは、クライアントサイドのFlexAdobe AIRからサーバサイドのJavaオブジェクトのメソッド呼び出しが可能です。データを送受信する際に変換ロジックを用意する必要がないため、開発効率とコードの保守性が向上します。

 また、AMFに変換してデータの送受信を行うので、WebサービスなどのXMLデータ通信に比べて飛躍的な転送パフォーマンスの向上が期待できます。

メッセージングの特徴

 メッセージングは、サーバからのプッシュ配信やクライアント同士のメッセージのやりとりを実現するための機能です。ポーリングか、またはステートフル・セッションを利用します。

 従来のLCDSでは、RTMP(Real Time Messaging Protocol)を使用したチャンネルも利用可能でしたが、BlazeDSでは上記の2種のチャンネルしか利用できないようです。RTMPを使用したチャンネルはLCDS ES(Enterprise Suite)で利用可能になるようです。

BlazeDSとLCDS

 BlazeDSとLCDSシリーズの機能をまとめると、表1のようになります。

表1 BlazeDSとLCDSシリーズの機能一覧
  Remoting Messaging DMS PDF生成 PDFソリューション統合 備考
LC Forms
LCDS ES
LCDS Community Edition   1CPUのみ
BlazeDS オープンソース

BlazeDSはFlex/AIR版DWR?

 DWR(Direct Web Remoting) 2.0はJavaとAjaxJavaScript)との通信のためのフレームワークで、JavaとAjaxの連携が容易にできるようになります。BlazeDSと同じようにリモーティングとMessagingの機能を持っていますが、それぞれを比較すると、下記表2のようになります。

表2 BlazeDSとDWR 2.0
  BlazeDS DWR 2.0
クライアント Flex、Adobe AIR Ajax(JavaScript)
リモーティング 呼び出したいJavaのクラスがマッピングされたRemoteObjectのインスタンスに対してメソッド呼び出しを行う Javaの[クラス名].[メソッド名]で呼び出す
送受信するデータはAMF 送受信するデータはプレーンテキスト
メタタグをActionScriptBeanに指定することで、Beanマッピングが可能 設定ファイルに記述することでBeanマッピングが可能
メッセージング ポーリング、ステートフル・セッション ポーリング、CometPiggyback
編集部注DWR 2.0について詳しく知りたい読者は、@IT Java Solution連載「MyEclipseでAjax+Javaをやさしく開発」第4回「リバースAjax機能はAjax+Javaをもっとやさしくする?をご参照ください。

論より証拠! BlazeDSを使ってみよう

 では、BlazeDSに付属しているサンプルアプリケーションを見ながら、BlazeDSで実現できることを紹介していきたいと思います。

 Adobe LabsのBlazeDSのページからBlazeDSのベータ版(blazeds_b1_121307.zip)をダウンロードします。ダウンロードにはAdobe IDが必要になります。

 ダウンロードしたzipファイルを解凍すると、「tomcat」というディレクトリがあり、すでにサンプルアプリケーションのwarファイルがデプロイされたTomcatが用意されています(Tomcatのバージョンは6.0.14のようです)。

編集部注Tomcatについて詳しく知りたい読者は、@IT Java Solutuionのカテゴリ「アプリケーションサーバ(Tomcatなど)をご参照ください。

 このTomcatを起動し、Webブラウザで「http://127.0.0.1:8400/blazeds-samples/」にアクセスします。すると、「BlazeDS Samples」のページが表示されるので、ここからBlazeDSの各サンプルアプリケーションが実行可能になっています。

図1 BlazeDS Samplesのページ

 このページからはさらに、「30 Minute Test Drive」というページへリンクがあり、7つのサンプルアプリケーションが用意されています。それらを合わせると、計11個のサンプルアプリケーションが実行可能です。以下が用意されているサンプルアプリケーションです。

  • 30 Minute Test Drive
    • Sample 1:Accessing data using HTTPService
    • Sample 2:Accessing data using Web Services
    • Sample 3:Accessing data using Remoting
    • Sample 4:Flex Programming Model 101
    • Sample 5:Updating Data
    • Sample 6:Publish/Subscribe Messaging(Data Push Use Case)
    • Sample 7:Publish/Subscribe Messaging(Collaboration Use Case)
  • Other Samples
    • Collaboration Dashboard
    • Runtime Configuration
    • Adaptive Polling
    • Database Manager

 本稿では、「30 Minute Test Drive」からリモーティングとメッセージングを使っているSample3、Sample6、Sample7について、Flexを使用して動作を簡単に確認してみたいと思います(すべてのサンプルアプリケーションでは、アプリケーション上で右クリックをして表示されるコンテキスト内の「View Source」から、MXMLやActionScriptのソースを見ることができます)。

 それでは次ページより、サンプルを動かしながら、その仕組みを解説していきます。

  1-2-3

 INDEX
JavaとFlex/AIRをつなぐ「炎」のオープンソース
Page1
「炎のデータ・サービス」? BlazeDSとは何なのか?
論より証拠! BlazeDSを使ってみよう
  Page2
FlexからJavaメソッドを操作する
サーバからのプッシュを実現
  Page3
Flexのチャットアプリケーション
開発に便利なツール「blazeds-console」
BlazeDSやLCDSは今後、どうなる?




HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間