论坛首页 Java企业应用论坛

SmartInvoke——用java & flex 轻松构建CS程序,挑战JavaFX

浏览 5526 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-20   最后修改:2009-11-21

大家都知道用java写CS程序非常麻烦,开发效率远不如winform,但是
用flex来做UI不仅好看而且开发效率很高,所以幻想着能用flex来做
java桌面程序。
    经过大半年的摸索和测试,终于写出了SmartInvoke,它可以方便的实现
java与flex的互相调用,就像调用本地代码一样方便快捷。
   
    SmartInvoke (for java and flex)版构造于swt库之上。

    下面是一些简单的代码片段:
   
    java调用flex:

 //添加flash容器到shell窗体
			final FlashContainer container=new FlashContainer(shell);
			//flash容器加载完毕会自动调用ILoadCompleteListener接口的run方法
			container.completeListener=new ILoadCompleteListener(){

				public void run() {
					//传入一flash容器创建remoteObject代理对象
				   	RemoteObject remoteObject=new RemoteObject(container);
				   	//调用flex中demo.Test类的默认构造函数创建一对象,
				   	//并将该对象与本地remoteObject对象关联
				   	remoteObject.createRemoteObject("demo.Test", null);
				   	//调用关联类demo.Test的hello方法,并传入参数
				   	Object obj=remoteObject.call("hello", new Object[]{"Java"});
				   	//将flex返回的字符串转换为对应String类型,并打印出来
				   	System.out.println((String)obj);
				}
			};
			//加载具体的swf文件
			container.loadMovie(0, "E:/SmartInvokeTest.swf");
 

   
        flex调用java:

  //创建一代理对象
var remoteObject:RemoteObject=new RemoteObject();
//调用java中demo.JavaServer类的默认构造函数创建一对象,
//并将该对象与本地remoteObject对象关联
remoteObject.create("demo.JavaServer",null);
//调用demo.JavaServer类的hello方法,并传入字符串 flex
var ret:Object=remoteObject.call("hello",["flex"]);
//将java返回的字符串转换为对应String类型
Alert.show("java返回"+ret as String);
//回收关联类的内存
remoteObject.dispose(); 
 


      是不是很简单呀!而且以上的中间代码都可以用CodeTransform代码转换工具自动生成代理类,
    代理类与服务类名称相同,方法也互相对应,在调用本地代理类方法的时候,此代理类方法
    就会调用对应服务类的对应方法,并返回该服务类方法的返回值,这样就大大简化了java与flex
    之间的互调,真正的实现了调用的本地化。
   
    项目地址:http://smartinvoke.cn/
   
    国人自己写的,请大家支持下,多提意见

   发表时间:2009-11-21  
不错,国人当自强啊

0 请登录后投票
   发表时间:2009-11-22  
你这样是不是用户又得装jvm又得装flash插件呢?

客户端完全是flex写,不是更好点?没必要再跟java扯在一起
0 请登录后投票
   发表时间:2009-11-22  
直接用air不好吗?
0 请登录后投票
   发表时间:2009-11-22  
由于工作的原因用air做过几个程序,有很多不好的地方:
1:flex的编译速度不是一般的慢
       由于我们写的是图表分析程序,一个分析项有很多图表,所以将
   一个分析项目做成一个flex模块,这样可以动态加载。但是随着
   模块的增加,发现flex程序的编译速度出奇的慢,大半的时间都花
   在了编译与打包上面。
       有了smartinvoke就可以将业务逻辑部分代码都拿给java来做,flex
   只负责展示。
2:air就目前还很不成熟,表现在:
   类库不全面,与操作系统格格不入,很多C++,.net,java的类库都没法用
3:没有多线程的支持,在处理大数据的时候经常出现程序的假死
0 请登录后投票
   发表时间:2009-11-22  
这些问题都是我在从事flex开发一年多时间里遇到的,为了解决这些问题,所以写了SmartInvoke

希望后续者少走些弯路
0 请登录后投票
   发表时间:2009-11-22  
如果flex要访问本地资源需要air运行环境的,这个东东也是10多兆,比jre小不了多少
jre经过瘦身可以缩小到10MB左右
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics