<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
Web工具平台0.7的故事
J2EE开发的Eclipse之路:它的范围、设计原则、体系结构、生态系统(Ecosystem)和开发计划
作者:Arthur Ryman 时间:2005年7月18日下午1点30
翻译:王锐
文章出处:http://java.sys-con.com/read/111212_1.htm
Eclipse开源集成开发环境(IDE)(参考http://eclipse.org)在Java开发者中迅速获得欢迎,主要原因是它杰出的Java开发工具(JDT)和它高度可扩展的插件体系结构。事实上,可扩展性是Eclipse一个规定的特性。正如Eclipse主页上所说的,“Eclipse是一种通用的工具平台……一个对于任何东西都是开放可扩展的,没有任何专有成分的IDE。”虽然Eclipse自身是一个java应用程序,但是,所有工具,包括JDT,是在一个平等的立足点上,因为它们都是通过定义好的扩展点来扩展Eclipse平台。
当然,一个可无限扩展的但是空洞的平台对于工具提供商来说可能会比较感兴趣,但是对开发者来说就很烦恼了。因此,最初的Eclipse版本有JDT和插件开发环境(PDE),都附带有如何扩展平台的例子和非常有用的工具。JDT支持J2SE开发而PDE支持基于Java的Eclipse插件开发。JDT和PDE的组合为数以千计的用于Eclipse商业插件和开源插件诞生的提供了动力,这些插件当中有许多支持J2EE开发。例如,IBM发布了基于Eclipse的商业J2EE产品,包括WebSphere Studio Application Developer和Rational Application Developer,而在其它的厂商中,eteration、Jboss、Genuitec、Exadel和Innoopract也发布了开源的产品。但是,大量的J2EE插件使得开发商很难支持所有插件,用户很难把这些插件装配为一个集成工具包。
随着Eclipse普及程度不断增长,显然在它的进化过程中下一个符合逻辑的步骤就是在平台中加入对J2EE的支持。这种支持将会为所有J2EE插件提供一个通用的基础框架,以提高工具的集成度为目标,减少插件开发费用,并且为Eclipse用户简化J2EE开发过程。
2004年6月,以IBM的一个协议为基础,Eclipse管理组织(EMO)同意创建一个新的顶级(top-level)项目,称做Web工具平台(WTP)。但是,WTP要想真正成功还需要以众多开发商的支持作为基础。一项调查开始进行,目的就是让其它的开发商与IBM合作。在2004年2月举行的首届EclipseCon大会上,在一次BOF会谈中讨论了WTP,ObjectWeb同意承担这个项目的创建工作。ObjectWeb召集了一群开发商加入这个项目并且同意共同领导项目管理委员会(PMC)。WTP于2004年6月正式启动,最初的贡献来自于eteration、Lomboz和IBM Rational Application Developer。
今年年初,BEA加入这个项目并且宣布计划未来的一个WebLogic工作平台以WTP为基础,WTP获得了工业界更深入的认可。BEA与ObjectWeb共同领导PMC。在今年的EclipseCon大会上,Sybase公布了数据工具项目(DTP),这个项目将加入到WTP的数据工具中,并且要创建一个平台层用于数据访问。Oracle和Borland也宣布Eclipse项目与WTP紧密关联。有了主要的开发商,如IBM、BEA、Borland、Oracle和Sybase在这个共享开源工具基础架构上的合作,J2EE工具的重心已经明显地转移到Eclipse。
WTP 0.7现在已经稳步上路,并且已经发布了一系列的里程碑式的驱动程序,这些驱动程序可以从http://eclipse.org/webtools下载。WTP 0.7最终版本的发布定在2005年7月。下面给出WTP的概述、范围、设计原则、体系结构、生态系统(ecosystem)和开发计划。
WTP概述
理解WTP的一种方法是顺着二维方向扩展Eclipse,分别叫做执行环境和artifact types。执行环境维定义了代码在哪里运行。脱离了Eclipse,您可以开发运行在命令行模式下的Java应用程序,运行在Web浏览器中的applet,运行在Junit runner下的Junit test,以及运行在ANT下ANT任务。WTP通过加入通用的服务器和专用于J2EE和数据库的服务器来扩展Eclipse,作为新的执行环境。一般情况下,需要安装一个执行环境,在Eclipse中配置好,并且要保证development artifact也能够使用,因为这些artifact是要运行在这个环境中的。
development artifact维定义了开发者所创建的东西。显然,Eclipse主要以Java源代码作为重要的development artifact。但是也支持其它artifact,如PDE plug-in man manifests和Ant build scripts。每个artifact type都与它的构建者、创建向导、语法元素感知编辑器(syntax-aware editors)、校验器、语法搜索扩充和重构支持有关。Eclipse用户期望编辑器能够提供第一类编程辅助功能如代码完成、语法元素着色、错误标注和快速修复。WTP支持在J2EE开发中遇到的新artifact type的一个大集合,包括HTML、CSS、 JavaScript、XHTML、JSP、XML、XSD、WSDL、SQL和所有的J2EE配置描述器。
WTP的一个关键设计目标是无缝地扩展Eclipse,使其支持那些附加的执行环境和artifact types。Eclipse用户以前看到的Eclipse能够在Java源码中实现的所有功能对于新artifact来说也应该是适用的。比如,如果我选择一个Java应用程序,我能够运行和调试。同样对于一个JSP,当我选择它时,Run命令应当同样可用。
特别是对于一个我期望能够使用Run命令布署我的代码到J2EE服务器并启动一个Web浏览器的JSP。相似地,Debug命令也应当能够在debug模式下运行我的J2EE服务器且标准的Eclipse调试器应该可以单步调试我的Jsp源码。我的JSP编辑器应该为JSP标签和内联Java scriptlet提供代码完成功能。另外,我期望Java scriptlet的代码完成能够准确,就像Java 源文件的代码完成那样。我不想因为我要编辑一个新的artifact type就要去学习新的编辑命令。
WTP 0.7实现了许多这样的目标,但是要完全支持J2EE还有很多工作要做。考虑一下重构一个J2EE应用程序的问题。简单到重命名一个java类的操作都要产生一系列的操作。如果重命名没有充分波及整个应用程序,就会发生运行时错误。例如,除了来自其它java类的引用外,一个java类还可能被JSP和配置描述器所引用。所有的artifact都必须更新以反映新的名字。假设Java类配置成一个Web Service且由这个类产生WSDL。WSDL可能也需要重新产生。J2EE应用程序的第一类重构将是WTP不断前进的焦点。
现在让我们创建一个“Hello,world”版本的JSP。如果您想要跟着一起做,您需要做一些安装。从上面提到的Web站点中下载并安装最新的稳定的WTP驱动程序。WTP为许多流行的商业J2EE服务器和开源J2EE服务器提供支持,但是不包括运行时的支持。所以您还需要在您的机器上安装一个服务器。为了能够用图示进行说明,我使用Apache Tomcat 5.0.28,这个服务器可以从http://jakarta.apache.org/tomcat/获得。最后,由于JSP需要一个Java编译器,您需要有一个完整的JDK。我用的是Sun的J2SDK 1.4.2_06。
WTP为服务器提供了一个引用页(Preference page)。打开Preference对话框并进入Server页面。加入您的Tomcat 5.0服务器并且配置成使用您的JDK(如果您使用JRE,JSP编译会失败)。图一显示了Server Preference页。
图一
然后,创建一个叫做Project1 的Flexible Java Project并且在这个项目中创建一个叫做Web1的新J2EE Web模块。一个Flexible Java Project是一个可以容纳许多J2EE模块的J2EE项目。图二显示了在创建Project1和Web1后的J2EE项目浏览器。
图二
现在我们已经准备好创建我们的JSP了。选择Web1模块的WebContent文件夹并使用New File向导创建一个命名为hello-world.jsp的JSP。向导建好JSP文档的骨架且在JSP编辑器中打开文件。JSP编辑器为HTML和JSP标签提供了完全的内容协助(content assist)功能,如Java scriptlets。编辑这个文件使之能够输出“Hello,world”并保存。图三显示了JSP编辑器。
图三
我们现在已经准备好运行JSP。在Project Navigator中选择hello-world.jsp并从右键菜单中选择Run on Server命令。Eclipse会提示您由于这是第一次启动,您需要定义用于这个项目的服务器。选择您之前定义好的Tomcat服务器并把这个服务器设置为这个项目默认的服务器。Web1模块将加入到服务器配置中且服务器会启动。然后一个Web浏览器启动,地址栏中带着hello-world.jsp的URL。图四显示了由hello-world.jsp产生的Web页面的Web浏览器。
图四
调试JSP也很简单。为了演示调试机制,我们在JSP中加入一个Java scriptlet。这个scriptlet会取到一个叫做“user”的查询参数并显示一个欢迎消息。列表1显示了修改后的包含了Java scriptlet的JSP。
列表1:http://res.sys-con.com/story/jul05/111212/source.html
在“String user=…”那行双击左侧的页边以设置一个断点。在项目浏览器中选定hello-world.jsp文件并从右键菜单中选择“Debug on Server”命令。服务器将在debug模式下重启并且会打开Debug Perspective,执行到断点时暂停。图五显示了在url中给JSP传递了查询参数user=JDJ readers 后的Debug perspective。
图五
现在您可以像平常一样单步跟踪Java scriptlet并且浏览Java变量了。在图五中,在变量视图中显示变量user的当前值为JDJ readers。点击Resume图标完成JSP的运行。图六显示了Web浏览器中显示的最终Web页面。
图六
WTP 0.7特性
之前的概述描述了WTP 0.7的一小部分特性。WTP的全部特性包括服务器、Web、XML、Web Service、J2EE和数据工具。我现在做一个简短的描述。您可以访问WTP的Web站点获得更多细节。
服务器工具让您能够定义和控制服务器。服务器可以和项目关联起来,可以启动、停止、在调试模式下启动和在其它方式下受控。项目可以布署到服务器上,或服务器可以配置成直接访问您的Eclipse工作平台的内容。WTP包含了对Apache Tomcat、Apache Geronimo和Jboss的服务器支持,还有其它许多流行的商业或开源的J2EE应用服务器。服务器工具包括一个扩展点所以可以很容易地支持新的服务器类型。提供一个简单的XML配置文件或一个Java插件您就可以加入一个新的服务器类型。
Web工具让您能够创建静态的基于HTML、XHTML、CSS和JavaScript的Web页面。Web工具包括基于WTP结构化源代码编辑器(SSE)框架的源代码编辑器。WTP Web编辑器提供内容辅助、语法元素高亮显示、合法校验和其它标准的Eclipse编辑器功能。Web工具也包括一个嵌入的Web浏览器和一个TCP/IP管理器,TCP/IP管理器用来调试HTTP故障很困难。
XML工具包括基于SSE框架的源代码编辑器,这个编辑器用于XML、DTD和XSD。除了源代码编辑,对于XSD我们还提供了图像编辑。XML工具也包括代码生成器用来从DTD或XSD创建XML实例文档。
Web Service工具包括一个WSDL编辑器、一个Web Service浏览器、一个Web Service向导和一个WS-I测试工具。WSDL编辑器包括一个基于SSE的源代码编辑器和一个图像编辑器。XSD编辑与WSDL编辑是无缝集成的。Web Service浏览器令您能够搜索UDDI注册信息和向UDDI发布注册信息,还可以动态地测试基于WSDL的Web Service。Web Service向导和整个开发的生命周期捆绑起来,让您把Java类作为Web Service布署,从WSDL生成服务器和客户端代码,且生成测试客户端,而且还为发布和发现功能与Web Service浏览器进行了集成。Web Service互操作(WS-I)测试工具让您可以确认WSDL和SOAP是否符合WS-I规范。
J2EE工具让您像创建JSP、servlet和EJB一样创建J2EE项目和artifact,J2EE布署描述器和真正把应用布署到服务器上的操作也很相似。J2EE工具有一个基于SSE的JSP源代码编辑器和一个J2EE项目浏览器,这个浏览器把J2EE元件作为显示的对象。这样就提供了一个项目资源的高级别的视图,例如,把与某个EJB相关的所有文件作为单个的EJB对象显示。
数据工具包括支持基于JDBC连接的数据库,如Cloudscape、Derby和其它商业和开源的数据库,并支持数据表浏览。数据工具也包括一个SQL源代码编辑器,这个编辑器可以让您容易地执行SQL语句并查看结果。
WTP涉及的范围
在Eric Raymond的文章“Homesteading the Noosphere”中,他把开源开发者比作自耕农,他们只在自己的牧场干活。所以我把WTP开垦出的田地叫做Eclipse noosphere。
WTP元件是沿着开放的标准组织起来的。WTP把世界上的标准分为二维-技术和正规化(formality)。
技术维的范围从中立的标准到J2EE标准,两种标准分别代表两个极端。技术中立标准形成了Web的基础。事实上,由于定义了格式(如HTML和XML)和指定系统如何交互的但没有指定系统如何实现的协议(如HTTP),Web已经成功了。这种中立允许开发商选择最合适的实现技术并且基于他们实现的质量进行竞争。另一方面,J2EE标准为J2EE实现指定了应用的可移植性规范。两种标准本质上都是为了Web的生存。
正规化维定义了标准如何创建。一个极端是法定的标准实体如ISO和IEEE,另一个极端则是那些没有获得任何正式标准定义组织承认的技术,但是由于普遍受欢迎,这些技术已经成为事实上的标准。为WTP定义标准的组织,如W3C、OASIS和JCP,拥有正规的流程,快要成为法定的标准制定组织了。流行的开源技术如Struts和Hibernate已经成为事实上的标准了。
图七显示了世界上的标准按技术维和正规化维分类的情况。原则上,WTP覆盖的范围是所有与Web应用程序开发有关系的重要标准。但是,WTP宣言聚焦于那些由获得承认的标准定义组织正式定义的标准,如簇就是一个法定的定义。WTP由两个子项目组成,分别是Web标准工具(WST)和J2EE标准工具(JST),这两个子项目涵盖了正式定义的Web和J2EE标准。
图七
设定这样一个范围背后的原因是WTP瞄准的目标是一个许多开发商都能在上面开发产品的平台。正式的标准形成了大部分开发商都想要的building块(building block)。在某种意义上,对标准的基本层次进行的支持是所有工具的赌桌(table stakes)。开发商共同支付开发费用,在基本层合作并生产出高质量的通用元件。相反,如果不包括事实标准,WTP就为开发商留下了创新和相互区别的余地。开源软件要想战胜捐赠者就必须找到方法产生利润否则他们将不能继续作出贡献。我们希望这样的设计能够为用户带来许多出色的开源的J2EE核心工具和一个固定的平台,这个平台能够支持旺盛的扩充的后继市场。
标准的竞争很活跃,已存在的标准正在得到改进而新的定义WTP的标准将基于它们的市场占有率进行支持。可能会需要迁移事实标准到法定标准。WTP宣言可能在将来进行扩充以包括新的子系统。但是,目前WTP是由WST和JST子系统组成。
WTP生态系统
WTP有双重目标,分别是为开发团体提供开发工具和为工具开发商提供一个平台来进行扩展。满足开发商的需要要求WTP定义一个平台API集合。平台API的重要性在于未来的发布中也会保留它们。这就意味着一个运行在WTP 0.7下的插件将在没有重新编译的情况下运行在未来版本的WTP中。平台API的稳定性对于采用这些API的开发商来说是关键。很明显如果WTP在不同的发布版本中API不同,开发商将付出更多的努力以跟上这种变化,这就减慢了用户和开发商迁移到新版本的平台的脚步。
WTP非常依赖用户团体的测试、bug报告和性能增强请求,且用户团体的开发是今年我们主要的关注点之一。WTP Web站点有向导、文章、介绍和事件信息。今年的各种大会上WTP都会得到宣传。您可以看看即将来临的WTP的宣传事件,如EclipseWorld、JavaOne和the Colorado Software Summit。还有两本WTP的书您可以去读一读。一个成功的用户团体对于开发商是一块磁铁。由于WTP用户团体在增长,所以在其上构建的工具数量不断增加。
最后,WTP在教育中也起着重要作用。由于WTP是免费的开源软件且支持工业标准,对于入门级的J2EE开发者来说,它是一个理想的学习工具。我希望看到大学、学院团体,甚至高校都用它来进行教学。
WTP贡献者团体既包括开发商也包括用户。有许多方法可以投稿。您可以从下载WTP开始,然后解包,并告诉您的朋友关于WTP的事情。如果您发现一个问题或有个提议,请打开一个Bugzilla报告。管理新闻组,并且把您对问题的解决方案共享出来为其他人服务。如果您会写文章,提交个人使用手记或投稿到在线帮助系统。如果您已经修复了某个问题,请提交一个补丁。如果您有时间进行WTP的工作,到Bugzilla查找公开的问题或浏览WTP等待帮助页(WTP Help Wanted page)。当您已经有了一系列有价值的投稿记录后,您就可能被选举为我们的会员。
下一步要做什么?
WTP 0.7计划于2005年7月发布。我们计划今年晚些时候发布WTP 1.0。WTP 1.0关注的焦点将是平台API的深入开发,以使基于WTP的第一波产品都可用。在发布了WTP 1.0之后,WTP 1.5在2006年和Eclipse 3.2一起发布。候选的可能加入到WTP 1.5的节点包括支持主要规范的修订版本,如J2EE 5.0、SOAP 1.2和WSDL 2.0,就像要支持新的JSR和Web Service一样。
我们也期望在新的项目加入进来后WTP的形象得到改变,WTP也更加成熟。新的开发商正加入到Eclipse且项目正以很快的速度创建。例如,WTP中的数据工具将迁移到一个新的数据工具项目中。技术项目如那些通过提议的EJB 3.0和JSF,当它们成熟的时候,将可能迁移到WTP。
结束语
就像所有开源项目一样,WTP的成功依赖于有热情的团体的贡献。这个项目还处在形成阶段且还有很多工作要做。这个项目需要用户、测试人员、作家、开发者、发言人、培训人员、指导者、布道者、传播者、销售人员和领导者。如果您对J2EE开发感兴趣,请把这篇文章作为我们对您加入WTP团体的正式邀请。
关于Arthur Ryman
Arthur Ryman是IBM多伦多实验室的一名高级技术人员和开发管理者。他现在正领导着Eclipse Web工具平台项目的Web标准工具子项目。他以前开发的项目包括Rational Application Developer、WebSphere Studio Application Developer和VisualAge for Java。他是W3C Web Services Description Working Group的会员和Web Services Description Language 2.0规范的制定者。他是《Java Web Services Unleashed》的共同撰稿人之一。
图一
图二
图三
图四
图五
图六
图七
本文介绍了Eclipse Web工具平台(WTP)0.7版本的故事,涵盖其设计原则、体系结构和开发计划等内容。WTP旨在通过提供统一的基础框架,改善J2EE插件的集成度,降低开发成本,简化Eclipse用户的J2EE开发过程。
665

被折叠的 条评论
为什么被折叠?



