`
smartinvoke
  • 浏览: 105817 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

关于smartinvoke开发工具的操作

阅读更多

关于开发工具的安装:

         在http://smartrcp.org/invoke/?page_id=16下载完cn.smartinvoke.ide.zip文件后,解压后得到:

cn.smartinvoke.ide.jar
cn.smartinvoke.ide.parse.jar
cn.smartinvoke.ide.update.jar
cn.smartinvoke.ide.util.jar

     这四个jar文件,他们都是eclipse的插件,所以将这些jar文件拷贝到eclipse的plugins目录中就可以成功安装smartinvoke开发工具了。

   注意:安装smartinvoke开发工具的前提必须是:

  1. eclipse必须为4.0版本

  2. eclipse必须安装有java开发工具jdt

  3. eclipse必须安装有flex开发工具flash builder 4

     安装成功后在eclipse.exe所在的目录下会多出一个cn.smartinvoke.libs目录,同时在eclipse的工具栏上会多出如图所示的三个按钮

    

 

cn.smartinvoke.libs目录下是什么东东:

       本目录下的.bat文件是smartinvoke的示例程序,双击可以运行.

       debug.exe为smartinvoke程序的debug连接器程序

       libs目录下为smartinvoke程序运行时所需的库文件,smartinvoke的核心库cn.smartinvoke.core.jar与cn.smartinvoke.core.swc就在

       本目录下。

 

smartinvoke项目为什么要由两个项目组成:

两个项目的命名规则:

点击新建smartinvoke项目按钮,填入对应信息后会新建一个java项目,与flex项目,这两个项目组成了一个完整的smartinvoke项目
 ,flex项目名称的命名规则为:在java项目的名称后加上一个下划线"_"。

运行原理:

smartinvoke的作用是实现java与flex同步互调,因为java运行于JVM,flex运行于flash player中,不是同一个运行环境

所以要达到java与flex互调,必须要写点儿中间代码才行,smartinvoke插件的基本功能是翻译java项目中的.java文件,

生成对应的.as中间代码文件 写入到flex项目的对应源代码目录下,这样在flex项目中通过自动生成的flex类就可以

访问到对应的java类了。

注意:并不是java项目中的所有的.java文件都被自动翻译为.as中间代码文件的,只有以下两种.java文件才可以

  1.  在类的定义部分有@AServiceType注解,并且实现了cn.smartinvoke.IServerObject接口
        如下java代码:
          package test;
     import cn.smartinvoke.IServerObject;
     import cn.smartinvoke.ide.declare.AServiceType;
     @AServiceType
     public class Ab implements IServerObject {
     public Ab() {
            //smarinvoke will call this default constructure.
     }
     public String hello(int code){
         return null;
     }
     public void gc(){
         //when this service object not be used smartinvoke call this method free memory.
     }
    }

     这里的Ab类就是一个标准的服务类,专门供flex调用,他的public 方法都可以被flex调用。这里必须有默认构造函数
     如下flex中间代码:
       package test{
    import cn.smartinvoke.RemoteObject;
    [RemoteClass(alias="test.Ab")]
    public class Ab extends RemoteObject{
     public static function CreateInstance0():Ab{
    var instance:Ab=new Ab();
    instance.createRemoteObject(arguments);
    return instance;
     }
     public function hello(code:int):String{
      var ret:Object=this.call('hello',arguments);
     return ret as String;
     }
    }
    }

     这里就是开发工具自动生成的中间代码,flex通过调用var serv:Ab=Ab.CreateInstance0();
    方法就可以调用到java创建test.Ab类的实例servObj,这里的serv对象就与java端的servObj服务类对象一一对应,
    所有对serv对象方法的调用都会通过调用java服务类对象servObj实现。 
      
  2.  在类的定义部分有 @ABeanType注解
     如下java代码:
       package test;
     import cn.smartinvoke.ide.declare.ABeanType;
     @ABeanType
     public class BeanT{
     public String name;
     public BeanT() {
     }
    }
     生成对应的flex中间代码:
     package test{
    [RemoteClass(alias="test.BeanT")]
    public class BeanT{
    public function BeanT(){

    }
     private var _name:String;
     public function set name(val:String):void{
       this._name=val;
     }
     public function get name():String{
       return this._name;
     }
    }

     这里的@ABeanType类表示本类的作用为数据Bean对象,只起着组织数据的作用,不能像服务类一样被调用,
    所以只能出现在方法参数或方法返回对象的位置上。

  3. 注:smartinvoke开发工具是根据这两个注解来翻译中间代码的,所以如果你不希望开发工具翻译出的中间代码,
    可以将该注解删除
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics