Eclipse RCP性能问题与解决方案

2004年开始,我开始让研发团队基于Eclipse插件技术开发通用管理软件(最近的一个产品是一体化企业管理软件CRM+OA+DSS+进销存的E-System)

选取RCP方式开发管理软件,我们的初衷是期望使得用户界面的丰富性和易操作,能够充分利用Eclipse本身丰富的SWT/JFACE/GEF/EMF等技术来完美我们的界面表现,应该说这方面Eclipse RCP确实不辜负我们的期望。

在四年的Eclipse RCP开发经历中,经历了很多坎坷和难以逾越的障碍,其中有一个至今仍在困扰着我们的问题就是Eclipse RCP的性能问题,它主要有以下几个方面问题:

1、如何高性能处理服务端与客户端的数据传递?

2、因为我们软件面向的用户是通用市场,用户机器环境良莠不齐(从最新的四核处理器到十年前的P3机都有人使用,内存从256M到2G都有)?如何克服Eclipse RCP对客户端应用的高性能要求(用过老机器使用Eclipse开发的都知道那导出Eclipse RCP漫长等待的滋味,2 hours,真是生不如死呀!)?并能尽量发挥机器的处理能力?

在这方面我尝试了很多方法,可以用于改善这两个问题:

1、选择最合适的数据传递方法,rmi、web-service、hessian、tcp client/server做了下对比,我觉得如何你需要传递的数据如果耦合层次比较低、业务关系简单其实完全可以模拟http方式,用自己的request/response对象进行传递。那rmi/web-service是蛮好的选择。但如果数据之间耦合关系紧密、业务关系复杂(我现在的系统有312个POJO,它们之间都有或紧或密的关系,而视图由于我让客户可以自定义,所以无法在设计阶段确定form view与action对象)这样显然无法使用web-service(web-service只支持最原始的几种数据类型)、而直接将对象序列化进行传递的方法也不可取(因为pojo对象均有关联,直接序列化的对象几乎就是整个数据库的内容,因为form不确定也无法构造对应的action对象来完成传递)。挣扎了很久,最后用了一种折衷的方法,数据传输采传值拷贝序列化方式(但默认只拷贝两层,即引用的对象中只包含原始属性,不再包括它引用的对象/集合属性),在特殊需应用到多层对象级联数据传递时才定制request对象中的约定参数来表明传递层次。传输方式使用自己定制的tcp client/server方式,选用这种方式主要是为了降低数据传输的尺寸(web-service中垃圾太多了),其中细节当然很多(如如何自动为request对象补充未传输数据、服务端hibernate对象如何将POJO代理对象拷贝成值对象...),每个问题都是我们的一个血泪史,嘿....

2、Eclipse对系统硬件的高要求地球人都知道,如何尽量降低它呢?我的原则是尽量不要使用非必要插件,RCP每加载一个插件自然就会多消耗。另外还有一个很重要的方法就是关掉不使用的perspective,NND,当初系统刚出街时,很快就有客户投诉早上打开系统很快,中午就慢如蜗牛了,一顿臭骂呀!当然也不能随用随开,那Eclipse要隋性加载干啥,一样客户臭骂(怎么我每点一次鼠标就要出去抽只烟呀?),没计,只好写个计数器,从客户登录开始就记录各perspective的使用频率,把超出范围(根据客户的内存选择,我认为有闲置256M内存不要超过5个,512M内存可以15个,1G以上就可以不关了)的perspective关掉,保持最高使用率的perspective可以随点随开。

BTW:千万记得要在eclipse rcp中加上运行参数(如果客户内存富裕你也可以在安装程序中调高它,我的程序默值是这样),不然内存被它吃光了,就听客户狂打你们客服电话吧!

-vmargs-Xverify:none-XX:+UseParallelGC-XX:PermSize=20M-XX:MaxPermSize=128M-Xms64M-Xmx128M

Eclipse RCP关于管理软件方法应用的开发资料很少,欢迎同道之人相互交流!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索eclipse
, 内存
, 对象
, rcp
, 方法
, 客户
方式
eclipse 解决方案、高性能计算解决方案、浪潮高性能解决方案、应用性能管理解决方案、http性能解决方案,以便于您获取更多的相关知识。

时间: 2024-09-12 06:28:59

Eclipse RCP性能问题与解决方案的相关文章

在Eclipse RCP中实现反转控制(IoC)

控制 Eclipse富客户平台(RCP)是一个功能强大的软件平台,它基于插件间的互连与协作,允许开发人员构建通用的应用程序.RCP使开发人员可以集中精力进行应用程序业务代码的开发,而不需要花费时间重新发明轮子编写应用程序管理的逻辑. 反转控制(Inversion of Control, IoC)和依赖注入(Dependency Injection, DI)是两种编程模式,可用于减少程序间的耦合.它们遵循一个简单的原则:你不要创建你的对象:你描述它们应当如何被创建.你不要实例化你的部件所需要对象或

Eclipse RCP+Spring建胖客户端Web程序

web|程序|客户端 摘要 Eclipse丰富的客户端平台(RCP)正在快速地成为构建胖客户端应用程序的框架选择.本文将向你详细介绍如何利用Eclipse RCP进行Spring Web开发. 一. 引言 尽管Web 2.0和丰富的因特网应用程序(RIA)如今极为风行,但是,当你真正需要胖客户端功能时构建一个丰富的Web前端可能并不真正满足你的要求. 但是,如果你确实想避开所谓RIA狂热而选择一种实际的胖客户端解决方案的话,那么你该怎样做呢?回答是:你可以选择一种丰富的客户端平台(RCP)来为你

Eclipse RCP技术和OSGi规范在客户端及服务器端的应用

导论 和其他行业一样,订做家具行业呈现出这样一个特点--日益变化的需求应当被反 映到从事该行业的公司使用的软件中.位于伊利诺斯州的芝加哥RPC Software公司在其产品 中通过使用开源软件从而在市场中获得了成功.该公司利用Eclipse RCP.DotProject以及 SugarCRM等技术快速地发布了一个更具有成本效益的解决方案, 从而击败了竞争对手.该案 例研究不但揭开了技术层面的面纱,而且总结了开发中获得知识以及经验教训. 业务 RPC Software公司为家具行业开发了ERP订单

eclipse rcp-如何打包Eclipse RCP?

问题描述 如何打包Eclipse RCP? 如题,按照以下方式,我创建了一个RCP项目开发"> 想请教一下有人熟悉RCP开发么,怎么将其导出为exe程序. 我尝试过网上所说的各种例子,总是出现各种问题. 在官网上也没用找出具体的导出实例. 解决方案 我也是这个问题,你找到解决办法了么?

Eclipse RCP中使用JasperReport制作报表

Eclipse RCP用来开发Java客户端应用非常爽,现在它本身也有BIRT报表项目 支持Eclipse RCP中使用报表.不过四年前我开始开发时,却没这么幸运,于是怎 么在RCP中生成报表成我一个头痛的事情. 琢磨了几天,终于让我想出一个在我的Eclipse RCP程序中使用JasperReport 报表的方法: 1.报表模版存放在服务端特定的一个资源目录下. 2.客户端获得客户输入的报表参数(查询范围.分组条件)及对应报表模版 名称(与服务端有命名约定) 3.客户端提交request对象至

NetBeans vs. Eclipse RCP:插件机制比较

NetBeans与Eclipse处理扩展点及扩展的方式是不同的.让我们看看这些不同 之处.请注意,本文仅针对那些对这两个平台的插件机制都具备相当知识的人. NetBeans Platform: 定义扩展点 创建一个接口,并将它置入一个公共模块包中. 创建扩展 创建上述接口的实现,并通过layer.xml文件将它注册到虚拟文件系统 中. 读取可用的扩展 使用org.openide.util.Lookup类去获取上述接口实现的实例. Eclipse RCP: 定义扩展点 创建一个扩展点的描述符方案,

如何在eclipse rcp中使用富文本编辑器(rich editor)

使用eclipse rcp开发自己的应用程序时,经常需要使用到格式文本的编辑与展示.但在SWT/JFACE组件中并未提供合适的组件来完成此任务,Text与我们的要求相差甚远.我的OA系统中公文的正文部分需要一个合适的rich editor来完成此任务. 于是蛮世界的寻找适合的java rich editor组件来完成这个需求,最后寻得两个比较容易在eclipse rcp中采用的技术方案,这两个方案我都在我的系统中应用过 1.使用ekit组件,ekit是不多的开源java rich editor组

Eclipse RCP:用于构建平台的平台

技术存在着一定的周期性.在经历了一段由瘦客户端统治的时期后,富客户端技术开始了它的回归.大量的组织正在将它们的应用程序构建成富客户端,其中许多组织将其应用程序建立在RCP(Eclipse Rich Client Platform)的基础上.术语富客户端首先表明此应用程序为用户提供丰富的体验;其次,它还表明此应用程序是某台服务器的客户端.虽然富客户端并不必须具有对应的服务器组件,但是它们通常会有对应的服务器组件. 富客户端在很多方面与胖客户端类似.它们两者都能为用户带来本地桌面体验,并提供那些通过

使用Eclipse RCP进行桌面程序开发(三):视图和透视图

Eclipse RCP开发中,和用户进行交互最多的界面,应该是视图了,而透视图就是将已有 的视图.菜单.工具栏.编辑器等等进行组合和布局.看完这一节,我们就可以建立如下图 这样的程序界面了. 首先我们来介绍一下视图,建立一个视图其实非常简单,只要从 org.eclipse.ui.part.ViewPart继承一个类,然后在plugin.xml中进行视图的配置.其中, 向视图中添加控件的操作,我们即可以手工编写,也可以使用Designer插件,我这里推荐大 家使用Designer插件,该插件对RC