Jacek Furmankiewicz是加拿大Compuware公司一位资深的开发者/设计者。他具有12年的专业IT经验,范围涉及UNIX, PowerBuilder,C#/Microsoft .NET,Java,PHP,还有Microsoft SQL Server和Oracle。
一、Eclipse 3.2.2/MyEclipse 5.1.0 GA
供应商 |
Eclipse基金会 |
网站 |
[url]www.eclipse.org[/url] |
价格 |
免费(基本发布)/开源 |
|
|
供应商 |
Genuitec |
网站 |
[url]www.myeclipseide.com[/url] |
分发 |
MyEclipse IDE |
价格 |
$49/年订阅 |
安装
在Windows和Linux平台上,基本的Eclipse发行只是一个简单的.zip或.tar.gz文件―你可以解压到任何你认为必要的目录 下。注意,这只是提供给你一个基本的IDE―只能创建基本的“Hello World”式程序,其它功能却非常欠缺。为了把Eclipse变成一个真正可使用的环境,你必须从Eclipse网站(可以直接经由Eclipse的 “Help->Software Updates->Find And Install”进行操作)下载额外的插件。最令我感兴趣的几个插件是:Visual Editor(构建SWING GUI),Web Tools Project(支持JSP),JSF Tools,以及Dali(支持JPA)。其中,最后两个插件官方声称为“预览”式发行,还没有正式推出其1.0版本。
对于安装新插件而言,在Windows上是相当直接的。而在Linux平台上,是几乎不可能从一个标准仓库(大多数基于Debian的或面向RPM 的distros特征的Eclipse)下载Eclipse的,这十分自然地与通常的Linux应用程序安装方式集成到一起。然而,这种方法把 Eclipse安装到一个系统目录(例如Ubuntu/Kubuntu平台中的“/usr/lib/eclipse”路径)下,而这仅经由“sudo”且 作为根或使用根权限运行时才能得到更新。遗憾的是,Eclipse似乎不知道这一点,结果在下载插件时出现一个错误―因为当试图把它们安装到指定的 “/usr/lib/eclipse”文件夹下时Eclipse并没有向我提供根口令。如果Eclipse在其未来发行版本中改进这一点的话倒是不错的。 这仅是一个细节。作为一种简单方案,我干脆简单地把整个本地的Eclipse安装复制到我的home目录下的一个文件夹中,并且能够在没有任何更多问题的 情况下安装完所有其它的插件(我猜测,这也许是由于我以“root”身份登录到一个会话中,但是我的确不喜欢这样做)。
另外,MyEclipse发行中提供了一个基于Java的安装程序。这个安装程序十分友好地与Windows平台集成到一起(包括快捷方式),而在Linux平台上也提供了一种可以接受的安装方式(尽管它并不创建任何桌面快捷方式)。
总体特征
当初次接触Eclipse时,其令人惊讶的速度和特征丰富的Java编辑器一定会给你留下最为深刻的印象。具体说来,它具有如下特征:
◆速度快
◆强大的重构功能
◆快速错误修改功能
◆能够修改/组织导入信息
◆以细节方式呈现的大量闪光亮点(例如,在代码完成方面提供了吸引人的Javadoc弹出菜单)。
不管怎么说,Eclipse确实是一个相当优秀的编辑器。
另一方面,我并不太喜欢Eclipse中的窗口系统,特别是它的Perspectives/View概念(我讨厌这种与NetBeans 4.0系统一样的特征,但是NetBeans在后来的版本中非常明智地替换了这一点)。我比较喜欢把所有相关的编辑器/调色板/面板通过单个窗口进行配置 这种简单的方法―根本不容易混淆。无可否认,这仅是一种我个人的一种喜爱。
我还发现它所提供的窗口系统在一些方面不太符合逻辑。例如,最小化“Package Explorer/Hierarchy”视图并不会把它折叠到旁边去(而根据我的其它IDE使用经验―无论是NetBeans或是Visual Studio.NET,它们都能够友好地实现这样的功能)。代之的是,Eclipse仅把它折叠起来而留出未使用屏幕的一大部分―的确是一种极不寻常的设 计决定(图9展示了这种奇怪的窗口行为的一个示例)。除此之外,整个窗口系统完全可以接受,但是我更喜欢NetBeans的系统。
|
图9:Eclipse提供的一种极不常用的折叠式视图 |
Swing开发
Eclipse中的Visual Editor是目前(至少还有一段时间)主流Java IDE中功能最弱的GUI编辑器之一,主要因为它支持下的大多数高级布局还停留在GridBagLayout的水平。在使用过NetBeans的 Matisse之后,我简直无法想象自己还会再求助于那种古老而拖沓的Swing UI创建方法。幸好,如今一个围绕Eclipse成长起来的社区力量―MyEclipse―提供了把 Matisse GUI Builder功能直接集成进Eclipse的功能!并且它工作性能相当好,尽管它看上去明显是紧跟在NetBeans团队新性能改进之后才进行一些更新 (例如,据分析bean绑定特征将作为NetBeans 6.0的部分发行)。不过,Matisse成为Eclipse平台上唯一可用的最优秀GUI开发工具的事实(即使把它作为一种商业解决方案的一部分)足已 证明为什么它会成为Java IDE圈中“800磅的大猩猩”―没有哪一位竞争对手能拥有象它那么一批插件开发团队并甘心情愿地补充(或有时是完全代替)Eclipse的基本功能。
JSP/Struts开发
Web Tools Project(WTP)为Eclipse添加了web开发特征。它完全胜任基本的JSP开发―提供一个坚固的JSP编辑器。然而,在发布你的web应用 程序时,却使人看上去有点古怪。当我把它发布到Tomcat时,经常会发生伴随着错误出现某种锁定。这与其它IDE(它们根本没有表现出任何这方面的问 题)直接形成对比。
WTP还缺乏对Struts开发的任何内置支持,这看起来象是其功能的一个主要的缺憾(尽管快速搜索一下 [url]www.eclipseplugincentral.com[/url]会 出现超过24个以上的Struts支持插件―既有商业的也有开源的)。并不惊奇的是,MyEclipse以其全面的Struts支持(还包括图形化的 struts-config.xml编辑器,以及创建新的Action和FormBean的向导)填补了这个漏洞(图10展示了实战中的Struts编辑 器)。
|
图10:MyEclipse的struts-config.xml编辑器 |
值得注意的是,安装了MyEclipse的Eclipse仍然是目前唯一的为创建JSP/Struts页面而提供一种可视化编辑器的工具(图11提 供的示例展示了MyEclipse可以添加到一个web工程中)。遗憾的是,我还无法全面地测试它―由于一个Eclipse错误禁止它在Linux平台上 使用。
|
图11:MyEclipse的Web工程选项 |
JSF开发
基本Eclipse发行中提供了一个其对于JSF开发提供未来支持的预览版本。尽管它只是“预览”状态,但是它实际上已经相当稳定可用,并且,恕我 斗胆说一句,要比其竞争者宣传的对于JSF功能的支持更为成熟一些。这包括为文件faces-config.xml提供了一个可视化的编辑器,JSP页面 开发中针对托管的bean属性的代码自动完成功能,新的托管bean向导,以及建立Converters,RenderKits和Validators的 可视化编辑器。我很激动地听到,Eclipse开发小组正在计划发行一个可视化的JSP/JSF编辑器。MyEclipse所提供的JSF功能大致范围与 Eclipse非常相似;但是根据我的测试,基本Eclipse提供的JSF支持足已够用。
企业开发
Eclipse对JPA并没有提供正式支持。不过,的确有一个称为Dali的衍生工程能够实现这一功能,但是此工程仍然处于早期的开发阶段。然而, 尽管我能够利用它从一个数据库生成一组可用的实体,但是其生成的代码还远没有达到NetBeans当前所生成的代码的级别(例如,它并没有实现自动地创建 任何命名查询)。如果你的开发团队目前还没有使用到JPA而是直接使用了Hibernate,那么,不妨把MyEclipse作为一个备选方案,因为它提 供了相当丰富级别的Hibernate支持。
对于J2EE开发,Eclipse支持创建EJB和EAR模块,尽管为了避免J2EE的复杂性它看上去集中于经由XDoclet生成EJB―无可否 认,这是在Java EE 5和EJB 3.0出现之前能够极大地降低企业应用程序复杂性的可以利用的最佳方案。通过针对会话bean、消息驱动的bean以及容器管理器持久性bean提供相应 的向导,MyEclipse进一步扩展了这一功能―但仍然是Xdoclet驱动型的。
目前看起来,Eclipse和MyEclipse都没有提供对Java EE 5的支持;不过考虑到它还是一个相当新的规范,所以我假定Eclipse Foundation现在正忙于在未来的发行版本中添加对它的支持(图12展示了MyEclipse提供的J2EE 1.4 EJB向导)。
|
图12:MyEclipse提供的EJB代码生成支持 |
二、根据实际需要选择IDE
首先得承认,我在此所列结论绝对不可能无一差失。每一种IDE开发队员可能会对本文中的许多观点提出相反的意见。在此,我不可能评估所有可能的开发 需要(例如在本文中很少涉及RCP,UML,JUnit和报告支持),因此很显然,你的IDE选择应该主要基于你所熟悉的特定Java技术。
本文中所讨论的每一种IDE都能够胜任Java开发中的某一类工作。然而,其中的某几种可能更胜任某一类特定的工作,这要依赖于你是在进行Swing,web,或是企业开发而定。基于此,我把前面的讨论总结为下面几个方面。
Swing开发
如果你的团队擅长Swing开发,那么,NetBeans无疑是最恰当的选择,因为Matisse最易于使用。如果因公司原因你只能选择 Eclipse,那么,我会毫不犹豫地建议你使用MyEclipse并结合它的Matisse4Eclipse Builder。在推荐了这两种选择后,接下来我会建议你使用IDEA(由于它对JGoodies表单提供支持),而Eclipse位列最后―它提供的缺 省的Visual Editor性能并不好;应该尽可能避免选用这个工具。
JSP/Struts开发
至此,竞争变得相当激烈起来。IDEA表现出其突出的优点,其次当属MyEclipse,然后是NetBeans。注意,由于缺乏内置的Struts支持,Eclipse的基本发行尚无法加入这方面功能的争冠者之列。
JSF开发
在这一方面,这三个IDE紧紧相随。坦率地说,我感觉IDEA相对最好些,其次是Eclipse/MyEclipse,而列于第三位的当属对JSF 开发仅提供基本支持的NetBeans。无可否认,如果你也把NetBeans Visual Web Pack考虑在内的话(假定可以接受它的有限功能―这将会把它移动排队的最前面),那么,上面这种排序也许不些不同。
企业开发
关于JPA支持方面,我将首先推荐NetBeans(这主要是因为其代码生成的质量以及支持适当创建存储单元),其次应是IDEA,最后当属功能有 限的Eclipse的Dali工程。如果你愿意放弃标准的JPA方法而想使用更为直接的Hibernate的话,那么,MyEclipse也会成为一个有 价值的竞争者之一。
对于企业开发来说,我认为IDEA以其丰富的J2EE及Java EE 5支持而成为最佳侯选,其次应是NetBeans(它在这方面开发也给人留下不错的印象),列于第三位的才是Eclipse/MyEclipse(主要由 于它们当前缺乏对于Java EE 5的支持)。
三、小结
如果说Eclipse是Java IDE中一只800磅的大猩猩的话,那么,微软堪称是背后一只极具威胁力的10吨重的King Kong(电影《King Kong》中的巨型大猩猩的名字)。作为一位使用C#/.NET进行过多年开发的程序员,我跟随微软的新技术一直到现在的.NET 3.0和它的下一个版本的Visual Studio(确定代号为“Orcas”)。因此,我希望每一们Java IDE经销商都不会安逸于其目前所取得的成就,因为微软在库及开发工具方面一直在投入大量的精力进行研究和发展。因此,只有创造出与微软技术可以相匹敌的 产品时,Java生态系统才能够保持良好的发展势态(甚至更好一些―超过它,就象在产品Matisse,JPA及EJB 3.0所取得的成就一样)。
事实证明,任何忽略微软的重大影响的公司和技术通常都会以失败而告终。我现在很高兴地看到,以前陈旧的“先发行API,然后等待不同档次的开发工具 慢慢上市”的观念正在被“尽可能同时发行API及相应的世界级开发工具”的迅猛势头所取代,因为这也正是微软多年来所采取的开发策略。
本文出自 “青峰” 博客,转载请与作者联系!