`
wsc830719
  • 浏览: 163690 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

开篇:netbeans RCP介绍

阅读更多

netbeans platform 俗称RCP,因为eclipse把其平台称为eclipse RCP,他们是为了一样的目的,提供了基于IDE自身构建综合桌面应用的能力,为了不混淆概念,因此一般都统一称为RCP开发。

        有时候选择的依据很有可能就是根据swing还是swt来进行的。因为eclipse是建立在swt基础上的,而netbeans是建立在swing基础上的。两者很难共处,虽然有java框架做这些工作,但是基本没有成功的,而且这样用的人及其少。eclipse的RCP多以开发工具或插件存在。eclipse只能保证在win下运行良好,即便在win下,也会偶尔发生突然整个窗体消失(网上经常出现的词是crash)。因为它是通过一个层来调用本地操作系统来绘制界面的,其稳定性要依赖很多环境,如果其他软件或系统层次的东西影响到了它,就会出现不稳定的现象,另外,eclipse非常吃内存,尤其与win类似,经常占据着很多虚拟内存不放。它的优点就是具备本地的界面特征,其中一个特大的好处就是 当使用中文输入软件时显得和其他win的软件一致,而相比swing(包括netbeans平台),它会多出现一个小的窗口,永中office也是用swing做的,但是它的界面就能把这个小窗口去掉,应该做了一些修正工作,这个不太好说,不过总之,应该可以做到。不过,我觉得应该java自己做下修正最好。

       至于平台间的基本差别,网上很多相关文章都谈到了。不过相比来说没有谈到实质里面去,只是一个表面的对比。而我也只是在网上看了几篇eclipse的RCP教程,也没动手做做,我只是做过一些netbeans RCP。因此,我也无法准确对比两者。又由于我比较偏向netbeans 平台的RCP,因此我只能从netbeans的特点来说说了,因此本文的标题为netbeans RCP介绍:

 

      1 netbeans平台 与jdk有着紧密的联系,尤其jdk的swing部分,如果对swing比较熟悉,那么netbeans其实就是swing的扩展,它没有另起炉灶,而是完全构建于swing基础上。它基于完善的MVC结构,严格地划分了 视图(窗口API); 控制器(资源浏览器API);模型(数据对象API、文件系统API、节点API),然后是其他相关API如 动作API、文本API 、xml API 、项目API这些根据你的功能需求来选择。而底层就是核心API和模块API了,他们负责管理整个平台,这些底层的API我们一般不会直接接触到。

这是它的API列表:http://bits.netbeans.org/dev/javadoc/overview-summary.html

 

模型:  文件系统API 》《数据对象API 》《节点API  》《控制器:资源浏览器API 》《 窗口系统API

 

文件系统:可以代表任何以文件存在的资源,硬盘 zip jar 虚拟的目录 netbeans层描述目录(layer.xml文件)

操作的是文件本身(如 复制 粘贴 删除 重命名等)

数据对象:将文件系统上升为 表示其数据的对象,可以操作数据(即文件的内容)

节点API:当然数据对象只是表示了文件所表示的数据内容,但是不能展现给用户呀。因此必须再次提升,这就是节点(Node API)

上述三者都提供了详尽的API进行互操作以及相互获得对方,可以执行的功能获取所需对象,比如 一个项目的节点下,显示出了这个项目的所属的所有文件,这些就是由节点展现出来的,比如处理 拖拽、选择,这些都和下面要讲到的控制器联系起来

控制器——资源浏览器API :Explorer API,它带有一个ExplorerManager类,能够向窗口中展现数据,具体展现成什么样,取决于选择了何种视图。通过将动作以及绑定的能力与资源管理器相连,并提供给节点使用,从而决定了节点都能进行哪些操作,以及菜单和工具栏相关按钮的状态(可用还是不可用等,甚至动态的改变菜单工具条内容)。

视图——窗口API,提供了各种视图,这些视图使用了一致的模型,因此,达到了MVC式的完整的分离,模型不依赖具体

视图,可以随意更换,而不必更改模型,模型不用变,那么底层当然可以不变。

而视图只需被提供节点的根或一个子节点(作为根),就可以了。因此,数据改变了 如果视图无需变化,那么又不用管视图部分了,可以说一个解耦了的应用。

        2 API清晰   正如上面所述,各个API紧紧围绕MVC展开,并提供了与之相关的API,动作API,则提供给节点和数据对象,以表征他们有何操作,什么时候或条件下可用。关于如何做到这些,请参阅官方的API说明,以及相关教程。

        3 良好的继承层次  组件都基于swing组织起来的,swing比较抽象以及比较粗糙,不适合直接使用。而netbeans把swing有效的组织起来,只需很少的代码就可以做出高端的应用出来。我们只需根据要求做做核心的那部分业务代码就可以了,而关联以及展示 等都由内部机制关联起来了。

        与struts spring hibernate 非常类似,其中提供了lookup API,可以通过它来得到相关的对象,比如当前被选择的节点等,以及与之整个系统相关的侦听器系统。无不体现了面向对象的思想。

可以说netbeans 平台是世界上唯一也是最强大的swing平台框架。

        4 面向模块化    netbeans平台是完全面向模块的,包括组织以及运行。首先netbeans可以通过更新中心管理各个模块的升级,而底层有着严格的版本系统,依赖管理系统,Java有个扩展说明 ,netbeans严格按照这个说明来执行的。

jdk7将使用更好的模块化系统,到时候netbeans将会直接集成。当模块发生错误时会停止安装,已经安装的模块发现错误时会自动禁用。新安装的模块会马上启用并可以投入使用,而无需重启netbeans。那么到底有多模块化:举个情况来说明下:

    比如做个模块开发,例如做个netbeans插件,  我们可以通过两种方式来运行并测试它:

4.1 运行: 即使用一个单独的netbeans实例来安装并运行这个插件————需要再开启一个同样的netbeans

4.2 在当前IDE中安装   :可以直接安装在当前IDE中   ————这个无需额外的内存开销

        至于使用哪种,完全根据个人喜好。出现错误会停止安装 或自动禁用,不会危及netbeans。

当改动代码后,可以选择 重新安装 (根据上面所选有不同的选项):那么 改动的部分会生效,如果只改动一个类,那么部署时间不会超过5秒,至于需要多少重部署时间,取决于你改动了多少类,大致花费几秒的时间,至于多模块化,

那么重部署前,可以在启动的IDE里选择一段文本,当重部署完成之后,那段文本仍然是和原来一样的,包括那选择的内容。

 

因此,这些都保证了高速的开发效率。

5 基于标准JDK的   jdk的每次升级都会对netbeans平台的性能产生提升,并且

 

 

 其实写到这,我还真感觉词尽了,贴个官网的比较吧,这个算是很中肯的,且真实:

http://platform.netbeans.org/articles/diff-nb-eclipse.html

 

 

 

 

 

 

分享到:
评论
2 楼 wmx2003 2011-03-29  
你好,第一次使用Netbeans RCP,有问题想请教下。刚用NetBeans Platform配了一个java editor,支持编译,运行,但是没有语法高亮和智能输入,不知道怎么回事
1 楼 gml520 2010-02-20  
大哥,我也非常的喜欢netbeans ,以后有空多交流哈!~

相关推荐

Global site tag (gtag.js) - Google Analytics