eclipse知识点分析
在整个Java™开发人员社区,Eclipse因为行业领先的JavaDevelopmentTools(JDT)而广为人知。但Eclipse构建目的在于促进插件的使用,而且在这一方面,它获得了惊人的成功。探索已经构建到Eclipse插件中的一些能力,比如使用Ruby等其他语言编程,或者是使用OpenLaszlo等环境构建交互式多媒体。简介
越来越多的Java开发人员已经开始欣赏Eclipse的JDT提供的生产率和质量收益。Eclipse对编写Java代码的支持真是棒极了。它的Java编辑器提供了语法高亮显示、格式化、折叠、内容辅助、代码模板等许多功能,我们大多数人都无法想像离开它们会怎么样。它不断增长的可用重构和代码生成功能集合允许您在更高的级别上操作代码,并自动化通常的代码密集型任务和易错任务。而且,在开发完代码并使用JDT对编写和执行JUnit测试的内置支持对代码进行单元测试之后,可以使用Eclipse的一流Java调试器调试在运行时遇到的任何问题。
除了JDT之外,EclipseSDK——最流行的Eclipse.org下载——还包含Plug-inDevelopmentEnvironment(PDE)。PDE使用特定功能扩展了JDT以构建Eclipse插件——基于Eclipse的应用程序的基本构造块。事实上,使用由Eclipse本身提供的工具能够超越Java开发,可扩展现有Eclipse应用程序,或者甚至创建全新的应用程序。
所有插件的汇总
如果曾经使用过Eclipse,可能会遇到术语“插件”。在架构上,Eclipse由一个小运行时层构成,其中包含许多功能模块或Eclipse术语中所谓的“插件”。插件是在Eclipse应用程序中提供所有功能的组件。它们通过其API一起协作来交付最终结果。在Eclipse中,甚至最基础的功能,比如查找和启动安装的插件,都封装在插件中。
为了扩展现有Eclipse功能或在其上进行构建,插件将具体的扩展贡献给由其他插件暴露的扩展点。通常,插件专注于特定区域的责任,并通过一个或多个扩展点的方式将其他责任指派给其他插件。例如,一个插件允许您可视地并行比较两个文件的内容,但它不会关心如何读取这些文件甚至如何解释这些文件的结构;这是其他插件的工作。比较两个文件时,该插件首先检查是否有另一个插件可以解释这些文件的结构。如果找到一个,它就会向找到的插件询问有关文件结构的信息,并在比较过程中使用该信息。
可以看到,模块化架构为Eclipse提供了巨大的灵活性,并提供了一个可以支持原设计者没有预料到的大量应用程序的平台。
安装Eclipse插件
上网查找新插件时,可能会发现它们以可下载档案——zip或JAR文件的形式存在。插件的发布者应该提供安装说明。通常,以JAR文件发布的独立插件可以直接保存到Eclipse安装(eclipse目录)中的插件目录中。在一些情况下,多个插件可能打包在一起,档案文件可能将它们放在一个插件目录下。如果是这种情况,则必须将档案文件解压到您的eclipse目录中。在安装新插件之后,必须重新启动工作台以便更改生效。
注意:重新启动Eclipse工作台(eclipse-clean)时,确保将-clean添加到命令行中。这将确保您的Eclipse插件配置是最新的。
多个插件还可以发布为一个特性(feature)。EclipseUpdateManager是工作台的一部分,它使用特性概念作为分组相关插件的方式,以便于安装和配置。在这种情况下,您将注意到的惟一差别就是发布的档案文件中包含除插件目录之外的特性目录。
UpdateManager是一个功能强大的工具,用于管理Eclipse配置并使之保持最新。有关如何使用UpdateManager的详细信息,请参阅EclipseHelp中的WorkbenchUserGuide>Tasks>Updatingfeatureswiththeupdatemanager。
万能IDE
最初发行时,Eclipse被吹捧为一个万能的工具集成平台,并附带有一组功能丰富的Java开发工具。它的愿望是开发工具行业领头人能够采用Eclipse作为最佳血统工具的底层平台。
最终,Eclipse已经履行了它的承诺。可用EclipseIDE插件和甚至整个开发套件的数目在不断增长。EclipseFoundation独自监督了许多用其他编程语言和平台扩展原始EclipseIDE的项目的开发。越来越多的公司开始加入EclipseFoundation,越来越多的新项目被创建和贡献。
EnterpriseJava和WebApplicationDevelopment
虽然开发J2EE应用程序通常需要Java编程,但也需要其他技术。因此,构建企业级软件需要全新的工具集。
EclipseFoundation自己管理WebToolsProject(WTP),后者试图提供用于开发J2EEWeb应用程序的工具和工具框架。虽然许多基于Eclipse的J2EE开发套件在商业市场上出现的时间并不长,但WTP相对而言仍是一个新来者。它实际上是以下三个子项目的组合:WebStandardTools(WST)、J2EEStandardTools(JST)和JavaServerFaces(JSF)Tools。
WST为许多Web标准提供了功能丰富的编辑器,这些标准有HTML、XML、CSS、JavaScript、SVG、XMLSchema、XSLT、SOAP、WSDL、SQL,等等。它还支持在一系列HTTP服务器上部署和监控Web工件。
JST扩展了该功能集合,支持功能完整的多层J2EE应用程序的开发。使用JST,可以创建使用JSP和servlet的动态Web应用程序,以及EJB组件和Web服务。还可以编辑所有组件的部署描述符,并在许多受支持的J2EE应用程序服务器上的工作台中直接测试运行您的应用程序。
JSFTools旨在添加对开发基于JSF的Web应用程序的支持。它是只具有一个已发布里程碑的新子项目,但已经计划将其包括在WTPV1.5发行版中。
许多商业软件开发套件可用于支持J2EE应用程序的创建。IBM®Rational®ApplicationDeveloperforWebSphere®覆盖了企业软件开发生命周期的几个阶段,其中包括J2EE应用程序的设计、开发、测试、部署和配置管理。
为了支持动态Web应用程序的创建,BEA的WorkshopStudio利用其正在申请专利的AppXRay技术,来跟踪和验证应用程序的状态。它还包括Hibernate-to-EJB3orM映射工作台和对Spring框架的支持。
MyEclipseIDE由Genuitec开发,是大型开发套件的低成本备选项。它提供了一组完整的针对开放源码技术(比如Spring、Hibernate、Tapestry和Struts)的J2EE开发工具。
桌面应用程序开发
Java在桌面上的复兴在极大程度上归结于Eclipse。在还没有成为独占的Java桌面平台时,Eclipse似乎已经促进了Java平台本身的改进,并致力于对Java作为桌面应用程序可视平台的重新评估。
虽然可以(事实上是许多人的首选)直接在Java中创建接口,但使用合适的可视UI开发工具可以获得大的生产率收益。Eclipse空间在一段时间里(至少不是作为Open-Source项目时)不存在这种工具的事实被许多人认为是在更大比例上采用Eclipse作为富客户机应用程序平台的一个障碍。
VisualEditor项目的创建目的在于为GUI构建器提供框架,但还包括了功能完整的SWT和SwingUI构建器。VisualEditor允许程序员使用流行的拖放技术快速有效地创建基于SWT和Swing的用户接口。尽管这种方法将手工编程从UI开发中解放出来,但程序员不必牺牲对结果代码的控制。没有依赖一些外部UI描述符文件,VisualEditor实际上使用Java代码作为其UI定义格式。也就是说,它解析现有的Java用户接口创建代码,并基于开发人员的可视编辑动作对其进行修改或生成新的代码。
许多商业产品的目标是简化UI开发。Instantiations的WindowBuilder是这一领域的先驱。除了VisualEditor提供的基本功能之外,它还支持高级功能,比如EclipseFormsAPI。Matisse4Eclipse是MyEclipseIDE的一部分,是它实际上将SunMicrosystems的ProjectMatisseSwingUI构建器引入到Eclipse平台中。
其他平台和编程语言
忠于它作为万能工具集成平台的使命,Eclipse支持使用非Java语言的编程语言进行软件开发。EclipseFoundation自己管理C/C++DevelopmentTools项目(CDT),旨在为C/C++开发人员提供一个在功能和能力上不低于Java开发人员所使用环境的环境。目前,CDT提供了一个C/C++源代码编辑器,具有语法高亮显示、内容辅助、代码完成、基于GDB的编辑器、C/C++应用程序启动器、搜索引擎、Makefile构建器和其他许多功能。
由Eclipse.org管理的其他编程语言项目包括遗留语言,比如COBOL和Fortran(项目Photran),但还有现代语言和编程技术,比如AspectJ(它将面向方面编程引入Java技术中)、WebServicesBusinessProcessExecutionLanguage(WS-BPEL)、LaszloIDE(Laszlo是用于开发和交付富Internet应用程序的开放源码平台)和Lepido(ApacheCocoonWeb应用程序框架的工具)。创建用于开发Ajax应用程序(RichAjaxPlatform)的最佳血统工具的广泛倡议也正在被提出,新批准的EclipsePHPIDE项目的最新宣告意味着对流行PHP脚本语言的鼎力支持也在规划中。
对其他语言的支持可从第三方提供商获得。OmondoUML提供了一个UnifiedModelingLanguage(UML)建模工具集,与JDT良好集成。但是,因为UML独立于编程语言,它可用于不一定包括Java技术的项目中。PyDev项目是Python编程语言的开放源码开发工具集。xored软件在其TruStudioProfessional(它的TruStudioFoundation注册在EPL之下)中提供了对Python编程的商业支持。另一个开放源码项目RubyDevelopmentTools(RDT)提供了使用Ruby编程的完整工具集。最后,您可以在ANTLRStudio的帮助下设计您自己的编程语言或特定于域的语言,ANTLRStudio允许您基于ANTLR框架创建上下文自由的语法定义。ANTLRStudio是由PlacidSystems开发的商业产品。
核心工具和技术
Eclipse社区的一个重要部分是用作其他产品或开发工具的基础或补充的软件。虽然您不可能下载并使用这些插件作为最终用户工具,但它们使其他人可以基于通用标准创建高质量的软件,或者增加现有产品的功能。
在该类别中,EclipseFoundation宿主着几个项目。EclipseModelingFramework(EMF)是支持自动代码生成的软件建模框架。它用于其他许多获益于模型驱动软件开发的项目中。尽管EMF只使用了UML工具的一个子集,但UML2项目将其扩展以提供对完全UML2标准的支持。
GraphicalEditorFramework(GEF)是用于为任意对象模型创建富图形编辑器的框架。该框架还用于其他许多提供可视编辑功能的项目中,比如UML图、图和工作流编辑器。GraphicalModelingFramework(GMF)扩展了GEF和EMF以将可视编辑能力添加到任意EMF模型中。
DataToolsPlatform(DTP)项目旨在创建使用各种相关数据源的通用工具集。它提供用于管理数据库连接以及创建和执行SQL脚本的工具。
EclipseTest和PerformanceToolsPlatform(TPTP)包括四个子项目:通用TPTPPlatform、用于应用程序监控和日志记录的MonitoringTools、TracingandProfilingTools和最后一个Testing工具。这些工具允许在各种执行环境中监控、剖析和测试Java应用程序。
BusinessIntelligenceandReportingTools(BIRT)将业务报告能力添加到现有应用程序中。BIRT支持许多媒体,其中包括HTML和PDF。
DeviceSoftwareDevelopmentPlatform(DSDP)旨在提供为嵌入式设备开发软件的工具集。相关项目eRCP试图将RichClientPlatform(RCP)扩展到嵌入式设备。
SOAToolsPlatform(STP)的使命是构建框架和可模仿的可扩展工具,以支持软件的设计、配置、组装、部署、监控,以及围绕面向服务架构(SOA)而设计的软件的管理。它由一些子项目构成,比如CoreFrameworks、SOASystem、ServiceCreation、BPEL2Java和BMPN。
许多子项目宿主在EclipseTechnology项目的保护伞之下,后者作为有趣想法的孵化器,可能有益于其他的新项目或现有项目。其中已经在别处提到的一些项目包括EclipseCommunicationFramework(ECF),它提供用于构建实时通信和协作应用程序的通用API和组件集;HigginsTrustFramework,一个用于各种组上下文中的身份、概要文件和关系数据的可视集成的可扩展框架;以及VoiceToolsProject,它扩展WTP以支持语音识别应用程序的创建。
作为RCP的Eclipse
随着Eclipse动力的增加,许多公司和开发人员已经发现Eclipse不仅是集成工具的伟大平台,还可以用于其他类型的功能丰富的客户端应用程序,比如商业和协作。因此,从版本3.0开始,Eclipse已经跨越了工具,现在正式被支持作为RichClientPlatform(RCP)。
RCP应用程序共享面向工具的相应方的所有灵活性和可扩展性,因为这些对应方也是由插件组成。但是,通用RCP插件集要小得多,而且一个插件不能将另一个插件放入RCP应用程序中,除非该应用程序明确支持它。
IBM的WorkplaceClientTechnology是基于全部EclipseRCP的平台的商业示例。就架构而言,它是客户端的协作工具,EclipseIDE是开发工具。IBMWorkplace是一个产品族,其中包括使用集中管理的富客户机技术的信息管理和团队协作。它提供即时消息、Web会议、共享日历计划,等等。
基于EclipseRCP的开放源码应用程序的两个流行示例是Azureus和RSSOwl。Azureus是一个功能强大的BitTorrent客户机,允许您下载使用BitTorrent技术分布的大型文件。它支持自己不断增长的插件集。RSSOwl是功能丰富的联合新闻阅读器和聚合器。它允许您使用许多流行的联合格式(比如RSS、RDF和Atom)搜索、订阅和阅读新闻和博客。
EclipseRCP在学术领域和研究应用程序中也变得流行起来。例如,NASA的JetPropulsionLaboratory(JPL)选择EclipseRCP作为其Maestro项目的基础,该项目是用于管理NASA的MarsExplorationRovers的高级操作的工具集。该软件用于计划飞行器的表面活动,比如到哪里以及要拍摄多少照片。
还有许多其他商业和开放源码应用程序基于EclipseRCP。它们跨越无数领域,其中包括生物医学研究(Bioclipse、SequenceScannerSoftware)数学和物理建模(BrainBox、GumTree、Kalypso)、通信和协作(WiredReach)、商业和金融(EclipseTrader、BSICRM、eClarus、LogicMindGuide),等等。
结束语
由于其基于插件的架构,Eclipse成为集成开发工具以及许多其他种类应用程序的万能平台。作为一个IDE,Eclipse不仅可以用于编写Java代码,还可以使用其他编程语言开发。作为RichClientPlatform,它甚至可以用于执行范围广泛的非编程任务。将Eclipse技术用于各种目的的商业和开放源码应用程序在不断增多。
本文地址:http://www.45fan.com/dnjc/68996.html