JavaFXでAdobeと仲良く
         〜Adobe AIR連携とJavaFXでのAMF通信〜




                             yone098
第1回 JavaFX勉強会   2009/08/05
⾃⼰紹介
   名前
     ⽶林 正明(よねばやし まさあき)
   ID
     yone098
   所属
     T2 Project http://t2framework.org/
     株式会社Abby 代表取締役社⻑
        絶賛社員募集中


第1回 JavaFX勉強会   2009/08/05
Agenda
   Merapiの概要
   JavaFXとAdobe AIR連携
     Demo
   AMFの概要
   JavaFXでAMF通信
     Demo(BlazeDS, T2)
   まとめ
第1回 JavaFX勉強会   2009/08/05
Merapi




     Merapiの概要

第1回 JavaFX勉強会   2009/08/05
Merapi
   Adobe AIRとJavaアプリ連携
     インドネシアのジャワ(Java)島にあるムラピ⼭(Mount 
     Merapi)に由来
   JavaとActionScriptで実装
     jarファイルとswcコンポーネント
   OSS
     http://www.merapiproject.net/
     以前はソース⾮公開
         ユーザ登録後に数⽇間の承認期間
     LicenseはLGPL3
第1回 JavaFX勉強会    2009/08/05
Merapi
    以前と異なる点
       spring.jarが追加
           内部的にSpringを使⽤
       インターフェース変更
           以前のプログラムは動作しない
              例)Bridge
 Bridge br = Bridge.getInstance();
 br.registerMessageHandler("myType", new MyMessageHandler());

 Bridge.open();



第1回 JavaFX勉強会          2009/08/05
Merapi
   Merapi概要図




第1回 JavaFX勉強会   2009/08/05
Merapi
 Java
  Message
    merapi.message.Messageを継承
  Handler
    merapi.handlers.MessageHandlerを継承
    handleMessageメソッド作成
      引数にmerapi.message.IMessage



第1回 JavaFX勉強会   2009/08/05
Merapi
 public class MerapiMyClass extends MessageHandler {
   public MerapiMyClass() {
      super("yone098"); // msgtype
   }

     public void handleMessage(IMessage message) {
       if (message instanceof MyClassMessage) {
       }
     }
 }

 public class MyClassMessage extends Message {
   private MyClass myClass; // getter/setter
   public MyClassMessage() {
     super();
   }
 }


第1回 JavaFX勉強会             2009/08/05
Merapi
 Adobe AIR
  Message
    merapi.message.Messageを継承
  Handler
    merapi.handlers.MessageHandlerを継承
    handleMessageメソッド作成
      引数にmerapi.message.IMessage



第1回 JavaFX勉強会   2009/08/05
Merapi
<mx:Script>
<![CDATA[
private function handleResult2(e:ResultEvent):void
{
  var msg:Message=Message(e.result);
  if (msg is MyClassMessage)
  {
  }
}
]]>
</mx:Script>
<myclassMsg:MyClassMessage id="myClassMsg"/>
<merapiproject:MessageHandler id="myClassHandler"
  result="handleResult2(event)" type=“yone098"
  dataField="myClass"/>
<mx:Button label="AIR ‐ MyClass ‐ Java" click="myCalcMsg.send()"/>

第1回 JavaFX勉強会           2009/08/05
Merapi


    Demo
      Java             AIR

第1回 JavaFX勉強会   2009/08/05
Merapi



   JavaFXとAdobe AIR連携




第1回 JavaFX勉強会   2009/08/05
Merapi
 JavaFX
  ライブラリを追加
    flex‐messaging‐common.jar
    flex‐messaging‐core.jar
    merapi‐core‐0.x.x.jar
    merapi‐core‐dev.jar
    spring.jar


第1回 JavaFX勉強会   2009/08/05
Merapi


    Demo
      JavaFX                 AIR

第1回 JavaFX勉強会   2009/08/05
AMF




     AMFの概要

第1回 JavaFX勉強会   2009/08/05
AMF
  ActionMessageFormat
  Flash/FlexのObjectSerialize⽅法
  通信フォーマットに利⽤可能
  バイナリ形式で⼩さい!
    JSONの1/4、XMLの1/10



第1回 JavaFX勉強会   2009/08/05
AMF
   例えば整数
 (数値hex)               :(binary)
 0x00000000 ‐ 0x0000007F : 0xxxxxxx
 0x00000080 ‐ 0x00003FFF : 1xxxxxxx 0xxxxxxx
 0x00004000 ‐ 0x001FFFFF : 1xxxxxxx 1xxxxxxx 0xxxxxxx
 0x00200000 ‐ 0x3FFFFFFF : 1xxxxxxx 1xxxxxxx 1xxxxxxx xxxxxxxx
 0x40000000 ‐ 0xFFFFFFFF : レンジ例外が発⽣

   0‐127までの値なら1byteに変換
   例えば⽂字列
 ⽂字列の参照テーブルがあるので、同じ⽂字列なら
 参照で済ます
  →サイズを⼩さくする仕掛けがされてます
第1回 JavaFX勉強会          2009/08/05
AMF
   AMFが利⽤できる型の⼀覧
  undefined Type         null Type
  false Type             true Type
  integer Type           double Type
  String Type            XMLDocument Type
  Date Type              Array Type
  XML Type               ByteArray Type
  Object Type(型ありObject, 型無しObject)




第1回 JavaFX勉強会    2009/08/05
AMF
  AMF0とAMF3
    AMF3:ActionScript3から利⽤可
    能(FlashPlayer9以降)
    Flex2/3ではAMF3を利⽤
  format仕様はOpen
    http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.
    pdf




第1回 JavaFX勉強会         2009/08/05
AMF
   AMF通信イメージ
                                                    サーバ
  クライアント




                 HTTP/HTTPS
                   で転送
 AS Object



                                AMF3でJava Objectに
                                    Deserialize
       AMF3でSerialize

第1回 JavaFX勉強会           2009/08/05
AMF



    JavaFX勉強会



第1回 JavaFX勉強会   2009/08/05
AMF
   AMF通信イメージ
                                                    サーバ
  クライアント




                 HTTP/HTTPS
                   で転送
Java Object



                                AMF3でJava Objectに
                                    Deserialize
       AMF3でSerialize

第1回 JavaFX勉強会           2009/08/05
AMF
  JavaFX with AMF
    既存のFlexからの乗り換え
      RIAとしてJavaFXを採⽤
    Flex時に使⽤していたサーバをそのま
    ま使⽤可能
    新規で作成する場合clientとserver側
    で複数の定義をする必要が無い
    Javaの資産を利⽤出来る
第1回 JavaFX勉強会   2009/08/05
AMF




第1回 JavaFX勉強会   2009/08/05
AMF
  JavaFXでAMF通信する⽅法
    BlazeDSのAMFConnectionを利⽤
      commons‐logging.jar
      flex‐messaging‐common.jar
      flex‐messaging‐core.jar
      flex‐messaging‐remoting.jar
    T2AMFを利⽤
      t2‐amf‐x.x.x.jar



第1回 JavaFX勉強会   2009/08/05
AMF
  補⾜
    BlazeDSのAMFConnection




第1回 JavaFX勉強会   2009/08/05
AMF


    Demo
     JavaFX           AMF    Server
       BlazeDS


第1回 JavaFX勉強会   2009/08/05
AMF


    Demo
     JavaFX           AMF    Server
       T2AMF


第1回 JavaFX勉強会   2009/08/05
JavaFX




      まとめ

第1回 JavaFX勉強会   2009/08/05
AMF
  JavaFXの可能性
    Adobe製品と仲良く出来る
      Adobe AIRとの連携
      BlazeDSでの通信
        JavaFX with AMF
  JavaFXは熱い!



第1回 JavaFX勉強会   2009/08/05
AMF


    Demo
     JavaFXプレゼンツール


第1回 JavaFX勉強会   2009/08/05
JavaFX




      まとめ俳句

第1回 JavaFX勉強会   2009/08/05
JavaFX


FX
DMMも
始めたよ❤

第1回 JavaFX勉強会   2009/08/05
謝辞



                      御清聴
                     ありがとう
                    ございました
第1回 JavaFX勉強会   2009/08/05

JavaFX-with-Adobe

  • 1.
    JavaFXでAdobeと仲良く 〜Adobe AIR連携とJavaFXでのAMF通信〜 yone098 第1回 JavaFX勉強会 2009/08/05
  • 2.
    ⾃⼰紹介 名前 ⽶林 正明(よねばやし まさあき) ID yone098 所属 T2 Project http://t2framework.org/ 株式会社Abby 代表取締役社⻑ 絶賛社員募集中 第1回 JavaFX勉強会 2009/08/05
  • 3.
    Agenda Merapiの概要 JavaFXとAdobe AIR連携 Demo AMFの概要 JavaFXでAMF通信 Demo(BlazeDS, T2) まとめ 第1回 JavaFX勉強会 2009/08/05
  • 4.
    Merapi Merapiの概要 第1回 JavaFX勉強会 2009/08/05
  • 5.
    Merapi Adobe AIRとJavaアプリ連携 インドネシアのジャワ(Java)島にあるムラピ⼭(Mount  Merapi)に由来 JavaとActionScriptで実装 jarファイルとswcコンポーネント OSS http://www.merapiproject.net/ 以前はソース⾮公開 ユーザ登録後に数⽇間の承認期間 LicenseはLGPL3 第1回 JavaFX勉強会 2009/08/05
  • 6.
    Merapi 以前と異なる点 spring.jarが追加 内部的にSpringを使⽤ インターフェース変更 以前のプログラムは動作しない 例)Bridge Bridge br = Bridge.getInstance(); br.registerMessageHandler("myType", new MyMessageHandler()); Bridge.open(); 第1回 JavaFX勉強会 2009/08/05
  • 7.
    Merapi Merapi概要図 第1回 JavaFX勉強会 2009/08/05
  • 8.
    Merapi Java Message merapi.message.Messageを継承 Handler merapi.handlers.MessageHandlerを継承 handleMessageメソッド作成 引数にmerapi.message.IMessage 第1回 JavaFX勉強会 2009/08/05
  • 9.
    Merapi public class MerapiMyClass extends MessageHandler { public MerapiMyClass() { super("yone098"); // msgtype } public void handleMessage(IMessage message) { if (message instanceof MyClassMessage) { } } } public class MyClassMessage extends Message { private MyClass myClass; // getter/setter public MyClassMessage() { super(); } } 第1回 JavaFX勉強会 2009/08/05
  • 10.
    Merapi Adobe AIR Message merapi.message.Messageを継承 Handler merapi.handlers.MessageHandlerを継承 handleMessageメソッド作成 引数にmerapi.message.IMessage 第1回 JavaFX勉強会 2009/08/05
  • 11.
    Merapi <mx:Script> <![CDATA[ private function handleResult2(e:ResultEvent):void { var msg:Message=Message(e.result); if (msg is MyClassMessage) { } } ]]> </mx:Script> <myclassMsg:MyClassMessage id="myClassMsg"/> <merapiproject:MessageHandler id="myClassHandler" result="handleResult2(event)" type=“yone098" dataField="myClass"/> <mx:Button label="AIR ‐ MyClass ‐ Java" click="myCalcMsg.send()"/> 第1回 JavaFX勉強会 2009/08/05
  • 12.
    Merapi Demo Java AIR 第1回 JavaFX勉強会 2009/08/05
  • 13.
    Merapi JavaFXとAdobe AIR連携 第1回 JavaFX勉強会 2009/08/05
  • 14.
    Merapi JavaFX ライブラリを追加 flex‐messaging‐common.jar flex‐messaging‐core.jar merapi‐core‐0.x.x.jar merapi‐core‐dev.jar spring.jar 第1回 JavaFX勉強会 2009/08/05
  • 15.
    Merapi Demo JavaFX AIR 第1回 JavaFX勉強会 2009/08/05
  • 16.
    AMF AMFの概要 第1回 JavaFX勉強会 2009/08/05
  • 17.
    AMF ActionMessageFormat Flash/FlexのObjectSerialize⽅法 通信フォーマットに利⽤可能 バイナリ形式で⼩さい! JSONの1/4、XMLの1/10 第1回 JavaFX勉強会 2009/08/05
  • 18.
    AMF 例えば整数 (数値hex)               :(binary) 0x00000000 ‐ 0x0000007F : 0xxxxxxx 0x00000080 ‐ 0x00003FFF : 1xxxxxxx 0xxxxxxx 0x00004000 ‐ 0x001FFFFF : 1xxxxxxx 1xxxxxxx 0xxxxxxx 0x00200000 ‐ 0x3FFFFFFF : 1xxxxxxx 1xxxxxxx 1xxxxxxx xxxxxxxx 0x40000000 ‐ 0xFFFFFFFF : レンジ例外が発⽣ 0‐127までの値なら1byteに変換 例えば⽂字列 ⽂字列の参照テーブルがあるので、同じ⽂字列なら 参照で済ます →サイズを⼩さくする仕掛けがされてます 第1回 JavaFX勉強会 2009/08/05
  • 19.
    AMF AMFが利⽤できる型の⼀覧 undefined Type         null Type false Type             true Type integer Type           double Type String Type            XMLDocument Type Date Type              Array Type XML Type               ByteArray Type Object Type(型ありObject, 型無しObject) 第1回 JavaFX勉強会 2009/08/05
  • 20.
    AMF AMF0とAMF3 AMF3:ActionScript3から利⽤可 能(FlashPlayer9以降) Flex2/3ではAMF3を利⽤ format仕様はOpen http://download.macromedia.com/pub/labs/amf/amf3_spec_121207. pdf 第1回 JavaFX勉強会 2009/08/05
  • 21.
    AMF AMF通信イメージ サーバ クライアント HTTP/HTTPS で転送 AS Object AMF3でJava Objectに Deserialize AMF3でSerialize 第1回 JavaFX勉強会 2009/08/05
  • 22.
    AMF JavaFX勉強会 第1回 JavaFX勉強会 2009/08/05
  • 23.
    AMF AMF通信イメージ サーバ クライアント HTTP/HTTPS で転送 Java Object AMF3でJava Objectに Deserialize AMF3でSerialize 第1回 JavaFX勉強会 2009/08/05
  • 24.
    AMF JavaFXwith AMF 既存のFlexからの乗り換え RIAとしてJavaFXを採⽤ Flex時に使⽤していたサーバをそのま ま使⽤可能 新規で作成する場合clientとserver側 で複数の定義をする必要が無い Javaの資産を利⽤出来る 第1回 JavaFX勉強会 2009/08/05
  • 25.
  • 26.
    AMF JavaFXでAMF通信する⽅法 BlazeDSのAMFConnectionを利⽤ commons‐logging.jar flex‐messaging‐common.jar flex‐messaging‐core.jar flex‐messaging‐remoting.jar T2AMFを利⽤ t2‐amf‐x.x.x.jar 第1回 JavaFX勉強会 2009/08/05
  • 27.
    AMF 補⾜ BlazeDSのAMFConnection 第1回 JavaFX勉強会 2009/08/05
  • 28.
    AMF Demo JavaFX AMF Server BlazeDS 第1回 JavaFX勉強会 2009/08/05
  • 29.
    AMF Demo JavaFX AMF Server T2AMF 第1回 JavaFX勉強会 2009/08/05
  • 30.
    JavaFX まとめ 第1回 JavaFX勉強会 2009/08/05
  • 31.
    AMF JavaFXの可能性 Adobe製品と仲良く出来る Adobe AIRとの連携 BlazeDSでの通信 JavaFX with AMF JavaFXは熱い! 第1回 JavaFX勉強会 2009/08/05
  • 32.
    AMF Demo JavaFXプレゼンツール 第1回 JavaFX勉強会 2009/08/05
  • 33.
    JavaFX まとめ俳句 第1回 JavaFX勉強会 2009/08/05
  • 34.
  • 35.
    謝辞 御清聴 ありがとう ございました 第1回 JavaFX勉強会 2009/08/05