【ハウツー】
Javaを使ってAIRを制約から解放! - 新開発ツール「Merapi」β版を試す
2 MerapiによるAIR-Java連携の実装法
2009/03/18
MerapiによるAIR-Java連携の方法
Merapiのベータ版をダウンロードするには、まずプロジェクトサイトよりユーザ登録を行う必要がある。登録後、自動送信の確認メールが届くが、この時点ではまだアカウントは作成されていない。どうやらアカウントの作成は手動で行っているらしく、完了するまでにしばらく時間がかかるので気長に待つのがいいだろう(筆者の場合、申請から完了まで10日かかった)。
アカウントの登録が完了したらログインしてダウンロードすることが可能となる。ダウンロードページには「Merapi Beta 1」と「Merapi Alpha RC 01」があるが、Beta 1の方が最新版である。また、その他にMac OS X用のサンプルプログラムが公開されている。
Beta 1をダウンロードして展開すると、frameworkディレクトリ内にJava用とFlex用のそれぞれのライブラリが格納されている。これらのライブラリを利用してJavaとAIRアプリケーションの連携を実現する。なお、それぞれのAPIドキュメントはdocディレクトリ以下にある。
Merapiの簡単な利用方法は公式サイトにも掲載されている。例えばAIRのActionScriptからメッセージを送るには、MessageクラスとBridgeクラスを用いて次のように行う。
var message : Message = new Message();
message.data = "Hello from Merapi Flex.";
message.type = "Reply";
Bridge.instance.sendMessage(message);
Messageは交換するデータを格納するためのクラスで、typeプロパティには任意のメッセージタイプをString型で、dataプロパティには送りたいデータをObject型で指定する。上記の方法以外に、コンストラクタの第一引数にメッセージタイプを、第二引数にデータを直接指定してインスタンスを生成する方法もある。Bridgeはメッセージ交換のブリッジの役割を果たすクラスである。
Java側からメッセージを送信するには次のようにする。ActionScriptの場合と同様に、Messageクラスのコンストラクタに直接メッセージタイプとデータを指定する方法もある。
Bridge bridge = Bridge.getInstance();
Message message = new Message();
message.setData("Hello from Merapi Java.");
message.setType("Reply");
bridge.sendMessage(message);
一方、送られたメッセージを受け取るには、Flex側では次のように記述する。
<merapi:BridgeInstance id="bridge" result="handleResult(event)" />
<mx:Script>
<![CDATA[
private function handleResult(event : ResultEvent) : void {
var message : IMessage = event.result as IMessage;
........
]]>
</mx:Script>
BridgeInstanceクラスはEventDispatcherであり、これを利用してメッセージを受信した際に発生するイベント(merapi.events.MerapiEvent)を受け取るためのハンドラを登録する。あとはそのハンドラ内でイベントオブジェクトからデータを取り出せばよい。
Java側でメッセージを受け取るには次のようにする。
Bridge.getInstance().registerMessageHandler("Reply", messageHandlerInstance);
public void handleMessage(IMessage message) {
System.out.println(((Message)message).getData());
}
こちらはBridgeオブジェクトに対してハンドラクラス(IMessageHandlerインタフェースの実装クラス)のインスタンスを登録する。IMessageHandlerインタフェースには実際のイベントハンドラとなるhandleMessage()メソッドが定義されているので、これを実装して受け取ったメッセージを処理すればよい。
ヘッドライン
- Rambus、次世代携帯機器向けメモリ「モバイルXDR」を発表[21:16 2/9]エレクトロニクス
- Intel、基幹業務システム向け次世代プロセッサ「Itanium 9300」を発表[20:47 2/9]エレクトロニクス
- MicronとNanya、42nmプロセスを採用した2GビットDDR3を開発[20:07 2/9]エレクトロニクス
- ISSCC 2010 - 日立、1Gbpsあたり消費電力1mW以下のトランシーバ回路を開発[19:52 2/9]エレクトロニクス
- CSSを最適化する3つのツール[17:17 2/9]JavaScript / CSS / HTML
- TIOBEプログラミング言語人気 - Scratch/Erlang/Scala/JavaFX[17:17 2/9]プログラミング
- Microsoft、Red Hat Linuxサポートをひっそり追加[17:15 2/9]システム管理
- IBM、8コア/32MB eDRAM搭載の高速CPU「POWER7」を発表 - サーバも販売開始[17:02 2/9]サーバとストレージ
- 【レポート】UTM最新動向 - クラウドに耐えうる処理性能と管理性の強化が進む[14:42 2/9]セキュリティ
- あるコンパイラが重要なマイルストーンに到達、LLVM Clang[14:06 2/9]プログラミング






