阅读更多

19顶
13踩

编程语言

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

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

项目背景:

 

      笔者曾经做过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 条 请登录后发表评论
7 楼 freej 2010-05-05 10:51
广告痕迹明显,鉴定完毕。
6 楼 yejienihao 2010-05-05 10:35
看完不明白为什么Adobe AIR是万恶的。标题党
5 楼 moyue 2010-05-05 10:35
对于这个项目 我很看好,也希望能好好学习一番,希望作者能把教程好好整理下,最近在je上有好多栏目都对这个项目进行了介绍,可见je对国人开发的项目支持力度还是很大的。有几个问题需要作者解答下:
1.flex是需要一个载体的,在网页中可以使用flash player activex,如果在桌面上应用可以使用air或者flash player,不知我说的对不对
2.air只是一个运行时,程序可以使用flex,也可以使用html+css+JavaScript开发,多线程支持是语言不支持还是运行时本身不支持,希望作者也给予一个充分的说明。
3.用flex可以构建漂亮的软件UI,java可以实现更强的功能,这基本算是完美的组合,但我这边有一个问题,如果用这个项目做的软件,能顶住一天使用12个小时以上吗,比如说自助终端,按照最近吵得比较热的话题,flash是系统崩溃的一个重要原因,不知作者对自己的这个项目这方面怎么考虑
暂时想到这么多吧,我的这些考虑是基于一个自助终端的查询系统,对界面这块一直在考虑使用swing还是flex 可以说你这个项目让我眼前一亮啊
4 楼 tedeyang 2010-05-05 10:29
是应该移动到论坛去。
明明是推广文章嘛,新闻新闻,你要是见到电视里记者煞有介事地拿起一瓶饮料告诉你:这是最新发明的xxx水,好喝一百倍。你会不会觉得不爽?
3 楼 fansofjava 2010-05-05 10:15
先说啊,俺不托!
2 楼 fansofjava 2010-05-05 10:14
这个有什么通不过的理由?为什么总是有那么些人看不起国人自主开发的软件?
1 楼 phenom 2010-05-05 10:10
这也算是新闻,也能审得过?

发表评论

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

相关推荐

  • 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 ...

  • python源码基于mediapipe设计实现人体姿态识别动态时间规整算法DTW和LSTM(长短期记忆循环神经网络.rar

    本项目基于Python源码,结合MediaPipe框架,实现了人体姿态识别功能,并进一步采用动态时间规整算法(DTW)和长短期记忆循环神经网络(LSTM)对人体动作进行识别。项目涵盖了从姿态估计到动作识别的完整流程,为计算机视觉和机器学习领域的研究与实践提供了有价值的参考。 MediaPipe是一个开源的多媒体处理框架,适用于视频、音频和图像等多种媒体数据的处理。在项目中,我们利用其强大的姿态估计模型,提取出人体的关节点信息,为后续的动作识别打下基础。DTW作为一种经典的模式匹配算法,能够有效地处理时间序列数据之间的差异,而LSTM则擅长捕捉长时间序列中的依赖关系。这两种算法的结合,使得项目在人体动作识别上取得了良好的效果。 经过运行测试,项目各项功能均表现稳定,可放心下载使用。对于计算机相关专业的学生、老师或企业员工而言,该项目不仅是一个高分资源,更是一个难得的实战演练平台。无论是作为毕业设计、课程设计,还是项目初期的立项演示,本项目都能为您提供有力的支持。

  • web期末大作业-电影动漫的源码案例.rar

    本学期末,我们为您呈现一份精心准备的电影动漫源码案例,它不仅是课程设计的优秀资源,更是您实践技能的有力提升工具。经过严格的运行测试,我们确保该案例能够完美兼容各种主流开发环境,让您无需担心兼容性问题,从而更加专注于代码的学习与优化。 这份案例资源覆盖了前端设计、后端逻辑处理、数据库管理等多个关键环节,旨在为您提供一个全面而深入的学习体验。无论您是计算机专业的在校学生,还是对编程充满热情的爱好者,亦或是希望提升技能的企业员工,这份案例都将为您提供宝贵的实战经验。 此外,我们还特别准备了详细的使用指南和在线支持,确保您在学习和使用的过程中能够得到及时有效的帮助。您可以放心下载和使用这份资源,让它成为您学习道路上的得力助手。让我们携手共进,通过实践探索编程的无限可能!

  • java图书管理系统毕业设计(源代码+lw).zip

    本设计是为图书馆集成管理系统设计一个界面,图书馆集成管理系统是用MICROSOFT VISUAL Foxpro 6.0 来建库(因特殊原因该用 MICROSOFT Access来建库)。它包括: 中文图书数据库; 西文图书数据库; 发行商数据库; 出版商数据库; 读者数据库; 中文期刊数据库; 西文期刊数据库; 中文非印刷资料库; 西文非印刷资料库; 典藏库; 流通库; 预约库; 流通日志库;

  • 项目实战+C#+在线考试系统+毕业项目

    该系统主要以在线模拟考试使用为出发点,以提高学生的学习效率和方便学生随时随地检测学习成果为目的,主要采用了DreamweaverMX、FireworksMX、FrontPage软件进行设计、使用ASP开发语言进行编程,所选用的数据库是微软公司开发的Access数据库。 ASP是通过一组统称为ADO的对象模块来访问数据库,ASP提供的ADO对象模块包含6个对象和3个集合,常用的有Connection、 Record set 、Command 、field等对象。 ASP是一种服务器端的指令环境,用来建立并执行请求的交互式WEB服务器端运行的应用程序, ASP程序只能在WEB服务器端执行,当浏览器向服务器要求运行ASP程序时,服务器会读取该程序,然后执行该程序并将结果转换为HTML文件 ,再将HTML文件传送给浏览器,待浏览器收到HTML文件以后,便会将执行结果显示在浏览器上。

  • 应用背景这个源码包非常适合研究蚁群算法的同学使用,

    应用背景这个源码包非常适合研究蚁群算法的同学使用,其中介绍了蚁群算法的基本程序,有利于各位从中吸取有益经验,也可以结合其它方法进行改善。关键技术蚁群算法应用广泛,在此提供一个可以运行的、完整的源码以供参考,各位可以在此基础上进行改进,改善其在不同场合中的应用效果Matlab.zip

  • 传递矩阵中矩阵元素的传递与变换.zip

    传递矩阵中矩阵元素的传递与变换.zip

  • numpy安装 python -m pip install -upgrade pip

    numpy安装 numpy安装 python -m pip install --upgrade pip

Global site tag (gtag.js) - Google Analytics