阅读更多

19顶
13踩

编程语言

原创新闻 Smartrcp——Adobe AIR以外的另一选择

2010-05-05 10:05 by 见习记者 smartinvoke 评论(47) 有20465人浏览

项目背景:

 

      笔者曾经做过Adobe AIR的开发,深感其之不爽,无多线程支持,不能调用其他语音开发 的dll,扩展性非常差。所以经过一年多的时间开发了smartrcp平台,将Java与Flex整合于同一桌面程序中,使用Java与Flex开发桌面程序。Java负责后台逻辑,Flex负责界面显示。Java与Flex通过flash player接口实现进程内同步通信。

SmartRCP是什么


SmartRCP是一个使用Java与Flex 编写高度可扩展可配置可裁剪的桌面程序的开发平台。
它继承了java与flex的优势,并扬长避短,将它们的优势发挥得淋漓尽致。
整个系统构建在eclipse 插件体系之上,所以可以与现有的eclipse 插件体系融合;
同时充分利用flex module的优势,使整个程序的界面开发更具扩展性与配置性。

 

 

项目地址:http://code.google.com/p/smartrcp/

 

SmartRCP的目标


    保证SmartRCP平台的高扩展性
    保证SmartRCP平台的跨平台性
    保证SmartRCP程序开发的便捷性与高效性

 

SmartRCP运行环境

     1:jre1.6以上

    2:flash player activex版

SmartRCP的优势


项目经理:


使用SmartRCP,可以缩短项目开发周期与开发成本
使用SmartRCP,可以将项目逻辑部分与GUI部分媾和降到最低易于项目的维护与扩展
通过SmartRCP的接口机制,Java程序员与Flex程序员可以并行开发互不影响
SmartRCP的模块通信机制可以很好的实现模块重用

Java程序员:


用SmartRCP开发桌面程序开发效率非常高,界面美观
我再也可以不用开发效率低运行缓慢的swing做界面开发了
SmarRCP依靠Flex做的界面非常漂亮很不错
依靠Java做后端服务,功能非常强大,比Adobe AIR程序更具扩展性和维护性
把界面设计部分交给Flex程序员与美工,我可以专注于程序业务逻辑部分

Flex程序


用SmartRCP开发桌面程序开发效率非常高,界面美观,而且功能非常强大
Flex调用Java就像调用本地代码一样方便
将复杂业务逻辑交由Java处理我们可以专注于界面开发,分工明确
SmartRCP开发框架对Flex的模块机制支持非常好,代码重用与维护性高

SmartRCP对Flex模块的载入和销毁机制,很好的解决了Flex内存不易释放 的问题

 


大家有什么疑问可以在 http://smartrcp.group.iteye.com/  圈子进行讨论,我会及时的回复的

 

 

 完整版下载地址(包含JRE):

 

   http://smartinvoke.googlecode.com/files/smartrcp_1.0.a_20100429All.rar

 

 精简版下载地址(无JRE):

 

   http://smartrcp.googlecode.com/files/smartrcp_1.0.a_20100429.rar

 

smartrcp需要jre1.6以上的支持。

 

smartrcp开发入门系列:

 

   smartrcp开源平台使用Java与Flex构建桌面程序 一(smartrcp版hello world)

 

   smartrcp开源平台使用Java与Flex构建桌面程序 二(快速搭建程序整体布局)

 

   smartrcp开源平台使用Java与Flex构建桌面程序 三(使用eclipse插件扩展smartrcp平台)

 

   smartrcp开源平台使用Java与Flex构建桌面程序 四(smartrcp的运行原理)

 

运行示例程序:

 

  下载并解压smartrcp后,打开windows控制台,切换到解压smartrcp.exe所在的目录,运行

 

smartrcp.exe -app http://smartrcp.googlecode.com/svn/org.smartrcp.demo/src/Splash.swf

 命令就可以打开示例程序了,如下图:

 

 

 

 

smartrcp运行原理:

 

smartrcp的程序结构如下:

 

    

图片说明:

 

启动文件:继承自cn.smartinvoke.gui.SplashApp的mxml Application文件编译后
               所得的swf文件。该文件有点儿像eclipse插件中的plugin.xml文件的作用,
              它定义了整个应用程序的基本信息;菜单工具栏;与整体布局。

应用程序文件:继承自cn.smartinvoke.gui.RCPApplication的mxml Application文件编译后
                    所得的swf文件。该文件的主要作用是保存全局运行库,程序全局样式,嵌入资源等等
                    资源。Flex模块都是通过它进行加载的。


模块:可以被独立加载与运行的软件单元,在smartrcp平台中,模块可以为:

      
      1:继承自RCPModule的mxml Module,它的最终发布形式为编译后的swf文件。
      2:继承自cn.smartinvoke.gui.RCPApplication的mxml Application,它的最终发布形式
         也为编译后的swf文件。
      3:实现cn.smartinvoke.smartrcp.core.ISWTPartUnit接口的Java类。通过它实现的
         public void createPartControl(Composite parent)方法可以定义界面显示。此类型
         的模块为Java语音实现,通过ViewManager类实现与Flex实现模块的互调。它的最终发布
         形式为java的jar文件。通过它可将Java与Flex界面整合到一个程序中。
     
     smartrcp平台为每个运行的模块生成唯一ID号,同时创建一FlashViewer类型对象用于对相应模块的访问。
     smartrcp规定:所有模块定义类的public方法都可以被其他模块访问到。
     smartrcp保证所有运行的模块都有一FlashViewer类型对象与其对应,通过唯一ID号进行区分。
     ViewManager类专门负责对所有FlashViewer类型对象进行管理。不同模块实例之间的调用都是通过调用
     调用ViewManager的对应方法实现的。

  
smartrcp运行原理:

1:  smartrcp在启动时获取-app参数值作为启动文件,该值必须为一有效的
     swf文件绝对路径,该路径可以为本地文件路径,也可以是一完整的http
     地址。smartrcp通过调用该swf文件得到如下信息:

   
      1.1 应用程序根目录——当前smartrcp程序的运行目录,程序中的所有相对路径都是相对于该路径的。
      1.2 运行文件——启动文件所在类即cn.smartinvoke.gui.SplashApp子类的cn.smartinvoke.rcp.CPerspective类的runtimeSwfPath属性所指的swf文件。


2:通过解析启动文件返回的cn.smartinvoke.rcp.CPerspective类型对象定义整个程序的菜单;工具栏; 视图布局,窗口   大小,标题等应用程序信息。


3:通过第二步解析得到的视图布局信息加载指定的模块以初始化整个应用程序。

开发smartrcp程序就是开发不同的模块,主要是针对模块编程。smartrcp的这种架构特点充分保证了程序的高扩展性与可维护性。充分保证了模块的复用性,因为可以将一模块编译为独立的flex application或osgi bundle Jar文件。smartrcp的模块功能与com组件比较类似。

 

 

19
13
评论 共 47 条 请登录后发表评论
47 楼 fjraos 2011-08-04 09:02
现在smartrcp开发团队发展到程度了呢?
46 楼 Aaronic 2010-05-07 16:24
比PHPRPC如何?人家还跨多种平台呢
45 楼 twoheard 2010-05-07 13:19
结构图是用啥画的?
44 楼 smartinvoke 2010-05-07 13:18
croud 写道
探索精神值得鼓励,但不知道搞这东西出来干啥的
远程调用别人Adobe早就有BlazeDS、LiveCycle的解决办法了
Flex内存管理大多是编程技巧问题 不是没办法解决
smartrcp本身也是actionscript写的吧,既然这样还是得用Flash Player来跑



这个是针对桌面单机程序的。BlazeDS、LiveCycle是针对bs程序的,关注点不同。
43 楼 croud 2010-05-07 10:55
探索精神值得鼓励,但不知道搞这东西出来干啥的
远程调用别人Adobe早就有BlazeDS、LiveCycle的解决办法了
Flex内存管理大多是编程技巧问题 不是没办法解决
smartrcp本身也是actionscript写的吧,既然这样还是得用Flash Player来跑

42 楼 dawn023 2010-05-07 08:58
不看好Flex+RCP,到觉得Swing+RCP比较不错,只要开发一套组件和一套有效的UI设计工具,比这有前途。
41 楼 dualface 2010-05-06 21:37
smartinvoke 写道
dualface 写道
感觉这个项目技术上是行得通,但是市场恐怕不好接受。

Flex本身就不够成熟,比如窗口管理、输入焦点管理这些。虽然弄到Java里面去可以让开发者利用一大堆Java的第三方库,实现多线程等功能,但Flex本身的毛病还是没法用Java来解决的。

而且用了Flash ActiveX,就注定无法跨平台。那我觉得还不如直接用.NET好了,开发客户端的效率是Java+Flex的组合无法比拟的。


的确flex不是很成熟,内存管理是最大的问题。但flex是同类型平台中(ms sl,
javaFX)中最成熟的。
smartrcp让每个flex模块都运行于独立的flash player容器中。有效的解决了内存的问题。

smartrcp是跨平台的,它对flash访问部分做了抽象,只要有flash与eclipse的系统中,就可以有smartrcp的身影。


每个模块一个独立的flash player进程?那得占多少内存啊。。。
再说内存占用只是一方面的问题,Flex最大的问题就是做出来的UI太多小bug。一会儿输入焦点丢失了,一会儿窗口层叠出问题了。

这些问题是靠外部无法解决的。根本原因在于人们给Flash这个平台赋予了太多职责。原本只是个显示动画的平台,现在非得加上一大堆与窗口管理有关的东西,不但效率没保证,成熟度也达不到要求。

我以前弄AIR,开始是觉得挺爽。默认的界面就很漂亮,而且开发起来也快。可是随着UI的复杂度增加,各种小问题就冒出来了,越到后面越折腾人。

做桌面应用还是用.NET好,又快又稳,而且能够充分发挥Windows桌面的能力。至于要实现RCP那样的远程交互,也是非常简单的事情。
40 楼 qxucc 2010-05-06 17:20
用Flash Player和Java,不都是老美的玩意吗?

再说用了FlashPlayer,性能还能好得了?
39 楼 dawn023 2010-05-06 16:00
解决了你的需求了吗?怎么解决的?
1.无多线程支持;
2.不能调用其他语音开发 的dll
3.扩展性非常差
38 楼 plutoxb 2010-05-06 15:50
不错,我也看好这个
37 楼 nwangwei 2010-05-06 15:47
        
36 楼 qssoft.cn 2010-05-06 13:40
不错.. 支持SmartRCP... 加油... 
35 楼 timshaw9791 2010-05-06 12:55
希望lz不要泄气,我们很多人都看好这个方向。加油
34 楼 janken 2010-05-06 11:34
作者加油! 从这个项目刚刚出来的时候就关注了
33 楼 xiaocheng882000 2010-05-06 10:05
人多口杂,希望作者别被影响,该怎么地就怎么地!
对个人做的研究和探索应该给予必要的尊重
一个标题而已,多点宽容
32 楼 qq123zhz 2010-05-06 09:47
可以看看。
31 楼 9527oooooo 2010-05-06 09:39
关注一下~
30 楼 smartinvoke 2010-05-06 09:19
mblmh2008 写道
请勿三番五次的把自己公司的广告贴成新闻。
这种东西在坛子里边炫炫就得了,
毕竟你公司的作品没有达到微软、苹果、谷歌那样的水平
应用范围和使用人数也没那么多。
起个吸引人的眼球的名字,然后再文章里打死渲染这玩意儿多好多好。
还发布到新闻里来就不要怕别人骂你。
骂你你就忍着,还回嘴别人是什么市井小民,那你是什么?
你市井老鼠吗?


首先申明:并非公司项目,个人业余时间的创作。
29 楼 aninfeel 2010-05-06 08:58
原来又是山寨广告啊,拿分走人
28 楼 mblmh2008 2010-05-06 08:41
请勿三番五次的把自己公司的广告贴成新闻。
这种东西在坛子里边炫炫就得了,
毕竟你公司的作品没有达到微软、苹果、谷歌那样的水平
应用范围和使用人数也没那么多。
起个吸引人的眼球的名字,然后再文章里打死渲染这玩意儿多好多好。
还发布到新闻里来就不要怕别人骂你。
骂你你就忍着,还回嘴别人是什么市井小民,那你是什么?
你市井老鼠吗?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • zope.password:密码编码和检查实用程序

    zope.password 该软件包提供了密码管理器机制。 密码管理器是一个实用程序对象,可以编码和检查编码的密码。 文档托管在

  • plone高级安装与设置

    <br />1. ZEO ClusterPIL (Python Imaging Library)libjpeg (JPEG library, usually installed to target/Python2.4/lib)libz (compression, usually installed to target/Python2.4/lib)libxml2-python (required for Marshall support)Cheetah, Paste, PasteDeploy, PasteSc

  • zope的manage管理密码忘记怎么办

    zope的manage管理密码忘记怎么办? 1. 在你的Zope-Instance下新建一个文件,文件名为inituser, 注意没有后缀,不是inituser.txt。 2.在inituser文件里输入“admin:{SHA}QL0AFWMIX8NRZTKeof9cXsvbvu8=”,然后保存,注意:请不要输入双引号。 3.然后重启你的zope或plone,现在你的密码就是123

  • cocos_creator网上教程搜集

    1.//Cocos Creator v1.9.x 用户手册http://docs.cocos.com/creator/manual/zh/2.//Cocos Creator 入门http://docs.cocos.com/creator/manual/zh/getting-started/3.//教程司令部...

  • SVN使用教程之-分支/标记 合并 subeclipse

    由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作【某个模块】,小组2进行新需求的开发。那么此时,我们就可以为小组2建立一个分支,分支其实就是trunk版【主.....

  • python编程超市购物系统_Python自学之路:购物车程序

    作业要求:1、启动程序后,输入用户名密码登录2、显示用户余额3、打印商品列表4、允许用户根据编号购买商品(卧槽,没有看到,下次更新)5、用户选择商品后,检测余额是否足够6、扣除,不够就提醒余额不足7、扣除,...

  • C++无法输出txt文件全部内容以及输出出现乱码的解决方法

    the tangor and ponkan tangerine). Other cultivars are sweet orange x mandarin hybrids (e.g. clementines). Mandarin traits generally include being smaller and oblate, easier to peel, and less acidic. ...

  • 实验报告-导入导出数据

    课程:数据分析技术 实验室名称: 指导老师: 实训日期: 年 月 日 实训题目:导入导出数据 实训目的: 熟练掌握从一些包中读取数据。 熟练掌握csv文件的导入。...创建一个数据框,并导出为csv格式。...1,olive,54,41

  • 转载:如何给公司取英文名字

     Tangor或者TanG,根据田歌的音节造词,都是比较明快、易读的词。  4、组合创造词  组合创造词是最优的选择,例如Texong,其中,tex是纺织(textile)的缩写,发音又与“田”谐音,表示田歌专注于纺织行业,...

  • Android 明年将不再支持 32 位应用

    近日,Mishaal Rahman 在 Android 13 的代码仓库中发现了一个有趣的提交 —— “Move tangor to 64-bit only”。根据这个提交信息,似乎表明 Google 即将推出的 Pixel 平板电脑将仅支持 64 位的 Android 应用。 ...

  • 常见水果中英文名称对照表

    Tangor 哈蜜瓜 Honey-dew melon 核桃 Walnut 黑莓 Blackberry 红毛丹 Rambutan 花生 Peanut 黄香瓜 Melon 鸡头果 Foxnut ...

  • JAVA输入五中水果英文名称_用英语写所有水果的名称要附带汉语

    Sultana 苏丹葡萄:一种黄色的无核小葡萄原产于小亚细亚 Sweet acorn 甜栎子 Syrup shaddock 汁柚 字母T、V、W开头的水果类英文名称: Tangerine 蜜柑桔 Tangor 广柑 Teazle fruit 刺果 Tough pear 木梨 Vermillion ...

  • 有关于水果的英文单词

    Tangor 广柑 Teazle fruit 刺果 Tough pear 木梨 Vermillion orange 朱砂桔 Walnut 核桃 (Chinese walnut 山核桃) Warden 冬梨 Water Caltrop 菱角 Water-chestnut 马蹄、荸荠 Watermelon 西瓜 White shaddock ...

  • 基于主从博弈的共享储能与综合能源微网优化运行研究:MATLAB与CPLEX实现

    内容概要:本文详细探讨了在主从博弈框架下,共享储能与综合能源微网的优化运行及其仿真复现。通过MATLAB和CPLEX的联合使用,展示了微网运营商和用户聚合商之间的动态博弈过程。上层模型关注微网运营商的定价策略,旨在最大化利润,考虑售电收益、储能运维成本等因素。下层模型则聚焦于用户聚合商的响应,根据电价调整电热负荷并参与共享储能调度。文中还介绍了电热耦合约束、充放电互斥约束等关键技术细节,并通过迭代博弈实现了策略更新。最终仿真结果显示,在引入电制热设备后,用户侧热负荷弹性提升,博弈收敛速度加快,达到双赢效果。 适合人群:从事能源系统优化、博弈论应用、MATLAB编程的研究人员和技术人员。 使用场景及目标:适用于希望深入了解主从博弈在综合能源系统中应用的学者和工程师。目标是掌握如何通过数学建模和编程实现复杂的能源系统优化,理解电热耦合机制和共享储能的作用。 其他说明:文章提供了详细的代码片段和仿真结果,帮助读者更好地理解和复现实验。此外,还讨论了一些常见的调试问题和解决方案,如约束冲突等。

  • 【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

  • 【深度学习应用综述】多领域关键技术及应用场景汇总:从计算机视觉到金融风控的全面解析

    内容概要:深度学习在多个领域有着广泛应用。在计算机视觉方面,涵盖图像分类、目标检测、图像分割等任务,应用于自动驾驶、医疗影像分析等领域;在自然语言处理上,包括机器翻译、文本分类、文本生成等功能,服务于信息检索、内容创作等;语音识别与合成领域,实现了语音到文本的转换以及文本到语音的生成,推动了智能交互的发展;医疗领域,深度学习助力医学影像分析、疾病预测、个性化治疗及健康监测;金融领域,深度学习用于信用风险评估、欺诈检测、高频交易等,保障金融安全并优化投资策略;自动驾驶方面,环境感知与决策控制系统确保车辆安全行驶;娱乐与媒体领域,个性化推荐和内容生成提升了用户体验;工业与制造业中,质量检测和预测性维护提高了生产效率和产品质量。 适合人群:对深度学习及其应用感兴趣的初学者、研究人员以及相关领域的从业者。 使用场景及目标:帮助读者全面了解深度学习在不同行业的具体应用场景,明确各领域中深度学习解决的实际问题,为后续深入研究或项目实施提供方向指引。 其他说明:随着深度学习技术的持续进步,其应用范围也在不断扩大,文中提及的应用实例仅为当前主要成果展示,未来还有更多潜力待挖掘。

  • 【ARIMA-LSTM】合差分自回归移动平均方法-长短期记忆神经网络研究附Python代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

  • 周梁伟-大模型在融合通信中的应用实践.pdf

    周梁伟-大模型在融合通信中的应用实践

  • 基于S7-200 PLC与组态王的花式喷泉控制系统设计及应用

    内容概要:本文详细介绍了利用西门子S7-200 PLC和组态王软件构建的一个花式喷泉控制系统的设计与实现。首先阐述了系统的硬件组成,包括三个环形喷泉组、七彩LED灯带以及功放喇叭等组件,并给出了详细的IO分配表。接着深入解析了关键的梯形图程序逻辑,如自动模式循环、灯光控制、喷泉舞步等部分的具体实现方法。此外,还分享了一些实际调试过程中遇到的问题及其解决方案,例如电源隔离、电磁干扰处理等。最后展示了组态王界面上生动有趣的动画效果设计思路。 适合人群:对PLC编程和工业自动化感兴趣的工程师和技术爱好者。 使用场景及目标:适用于需要设计类似互动娱乐设施的专业人士,旨在帮助他们掌握从硬件选型、程序编写到界面美化的完整流程,从而能够独立完成类似的工程项目。 其他说明:文中不仅提供了理论知识讲解,还包括了许多实践经验教训,对于初学者来说非常有价值。同时,作者还在系统中加入了一些趣味性的元素,如隐藏模式等,增加了项目的吸引力。

  • 基于COMSOL的电弧熔池多物理场耦合仿真技术详解

    内容概要:本文详细介绍了利用COMSOL进行电弧熔池多物理场耦合仿真的方法和技术要点。首先解释了电弧熔池的本质及其复杂性,然后依次讲解了几何建模、材料属性设置、求解器配置以及后处理等方面的具体步骤和注意事项。文中提供了大量实用的MATLAB、Java和Python代码片段,帮助用户更好地理解和应用相关技术。此外,作者分享了许多实践经验,如分阶段激活物理场、使用光滑过渡函数处理相变、优化网格划分等,强调了参数选择和边界条件设定的重要性。 适合人群:从事电弧熔池仿真研究的专业人士,尤其是有一定COMSOL使用经验的研究人员。 使用场景及目标:适用于需要精确模拟电弧熔池行为的研究项目,旨在提高仿真精度并减少计算时间。主要目标是掌握多物理场耦合仿真的关键技术,解决实际工程中遇到的问题。 其他说明:文章不仅提供了详细的理论指导,还包括许多实用的操作技巧和常见错误的解决方案,有助于读者快速上手并深入理解电弧熔池仿真的难点和重点。

Global site tag (gtag.js) - Google Analytics