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ライセンスの下で公開されています。
編集部注:LiveCycle(LC)について詳しく知りたい読者は、「J2EEを拡張するAdobe LiveCycleの全容」をご参照ください。
また、併せて「AMF」(Action Message Format)という、プレーンテキストなどと比べると非常に圧縮率の高いバイナリデータフォーマットのスペックもついに公開されました(参照:「AMF 3 Specification」)。
以下が、リモーティングとメッセージングの特徴になっています。
■ リモーティングの特徴
リモーティングは、クライアントサイドのFlexやAdobe 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シリーズの機能一覧 | |||||||||||||||||||||||||||||||||||
|
■ BlazeDSはFlex/AIR版DWR?
DWR(Direct Web Remoting) 2.0はJavaとAjax(JavaScript)との通信のためのフレームワークで、JavaとAjaxの連携が容易にできるようになります。BlazeDSと同じようにリモーティングとMessagingの機能を持っていますが、それぞれを比較すると、下記表2のようになります。
表2 BlazeDSとDWR 2.0 | ||||||||||||||||
|
編集部注: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は今後、どうなる? |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|