Eclipse RCP与Spring OSGi:技术详解与最佳实践(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-01 13:19:37

点击下载

作者:陆阳

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Eclipse RCP与Spring OSGi:技术详解与最佳实践

Eclipse RCP与Spring OSGi:技术详解与最佳实践试读:

前言

为什么要写这本书

几年前笔者就有编写一本关于Eclipse RCP和OSGi技术的书籍的想法,但几次提笔又放弃了,因为未能很好地解决在开发实践中遇到的很多问题,笔者不希望将一些不成熟的想法和开发“玩具”程序的经验传播给其他开发者。最近笔者完成了一个综合性的项目,觉得自己已有了足够的经验,已可以完成这样一本书了。此时WindowBuilder界面设计工具已经被Google公司收购并免费开放给开发者使用了,使用该工具时不再有软件版权问题,于是笔者真正开始动笔写作本书了。

随着现代软件开发规模愈来愈庞大、愈来愈复杂,模块化开发会成为一种必然趋势。Eclipse RCP和OSGi技术正是解决这一系列问题的一剂良药。使用Eclipse RCP和OSGi技术开发程序所面临的最大挑战不是编写代码,而是如何规划插件的功能边界,如何开发松耦合、可复用的插件系统。另外,开发数量庞大的插件在项目管理和版本控制上也是一个挑战,有时候开发者不得不在是否应当细化插件功能的颗粒度和由此造成过多的插件数量之间权衡。

无论是桌面系统开发还是Web系统开发,在国外Eclipse RCP和OSGi都早已有非常广泛的应用,但是近年来在国内依然没能得到有效的推广。鉴于国内Spring技术书籍已经非常丰富,开发者对Spring技术也相对熟悉,所以本书结合Eclipse RCP和Spring OSGi以实践的方式来传播新技术,这样读者可以在已有的知识结构上学习新东西,以缩短学习周期,迅速掌握技术要点。本书中的技术既能够满足Eclipse客户端软件的开发者,又能够兼顾Java Web应用程序的开发者。笔者非常赞同Eclipse技术社区中所倡导的软件开发精神:贡献、分享、邀请,每个人都需要别人的关怀和帮助,每个人同样有义务关怀和帮助别人。Eclipse与OSGi技术在实践开发中应用起来相对困难,需要整合很多第三方技术与辅助工具,开发环境的配置也较为烦琐。本书中的开发经验大多来自于一个具有上百个插件的综合性软件平台,笔者将其中一些有益的设计经验和技巧抽离出来,尽可能多地向读者展示开发环境的搭建、工具的配置、编程经验、解决问题的思路以及如何获取更多的技术资源等知识。

Eclipse本身的设计非常复杂,项目庞大,更多的编程经验还需要读者在实践开发中不断积累。阅读Eclipse的源码和下载Eclipse的CVS示例程序都是学习相关技术的有效途径。而就在笔者完成本书的时候,新一代的Eclipse应用平台核心运行框架Eclipse 4 Juno版本也如期发布,更多新的技术特性得到支持,包括:跨产品平台、自定义的依赖注入(Define custom DI-Annoations)、新的CSS外观技术、向后兼容性等。而基于企业级的OSGi 5.0规范也将会在EclipseCon 2012会议和OSGiCon 2012会议后得到广泛应用,一系列新的技术特性将在新版本中发布。

我们虽然不能通过一本书就越过那道门,但是至少可以开启一扇窗户,看到门外的世界。对于那些看上去是障碍和壁垒的技术,亲自接触一下,也是有价值的,哪怕只有几秒,也比旁观几百次有效。读者对象

本书面向的读者是使用Eclipse RCP和Spring OSGi技术开发应用系统的程序设计人员,也包括之前就已经使用Java编程语言编写过桌面或Web应用程序的开发者。对于准备使用Spring OSGi开发Web应用程序的开发者,本书的大部分概念和知识也同样适用。

本书假设读者已经熟悉了Java的语法和特点,并对Java设计模式有了一定了解,例如适配器模式、监听器模式、模板模式等。本书内容编排的基本原则是任何具有基本Java知识的人都可以理解。除此之外,开发者应该掌握一些常用的开源技术,比如Spring开发框架、Hibernate ORM开发框架。如何阅读本书

本书分为三大部分:

◆ 第一部分为基础篇,介绍了Eclipse RCP开发所使用的常用界面编程技术,涵盖了SWT、JFace、Forms、Nebula和WindowBuilder设计器的使用方法。读者应当熟练掌握布局和各种控件的使用方法,并且通过访问这些技术的官方网站来获取更多的编程技巧。

◆ 第二部分为高级篇,着重讲解了Eclipse RCP软件产品的组成部分,读者应当充分理解RCP开发中关于运行平台和目标平台、扩展和扩展点的概念。掌握这些技术点有助于读者构建一个结构完整的Eclipse RCP软件,解决软件开发过程中的故障。

◆ 第三部分为实战篇,详细讲解了Eclipse RCP与Spring OSGi框架、Hibernate ORM框架、JPA规范、Maven工具的整合。如果读者在此之前从未接触过Spring和Hibernate技术,建议阅读一些与此相关的资料。

对于Eclipse RCP和Spring OSGi技术的初学者,建议采用循序渐进的方式逐章学习。对于已经具备一定开发经验的读者,可以直接选择感兴趣的内容阅读。本书的技术点都尽可能地与业务逻辑剥离,以减少无关的程序代码实现,从而使读者更好地关注技术本身,减少对读者学习的干扰。本书约定

1.软件版本

在编写本书时所使用的JDK版本为Java SE 7、Eclipse版本为Eclipse 3.7(Indigo)、Maven版本为2.2.1、Spring OSGI(Spring DM)版本为1.2.1、Hibernate版本为3.3.1.GA,这些都属于当前性能较稳定且使用较为广泛的版本。如果你的开发环境与此不同,建议Eclipse的版本至少不低于3.6、JDK不低于1.5即可。

2.程序范例

本书提供的程序范例都以保持结构的完整性为前提,尽可能不展示与主要技术无关的业务内容,以避免干扰对技术点的学习。每个范例都能够独立运行。对于SWT、JFace、Forms、Nebula章节的程序,本书提供了Shell、插件、RCP独立程序三种版本的运行方式,实际上它们都使用了相同的程序范例,只需进行很小的调整就可以移植到多种环境中。本书中出现的代码清单力争短小、有实际意义、不重复。如果遇到同一个程序范例的多个开发版本,将采用前后对比的方式展示修改的地方,不再重复相同的技术细节。

本书程序范例的具体情况如下:

◆ 第3章 SWT界面设计详解。

本章使用com.rcp.example.module.ui插件打包程序范例,包含了与SWT相关的程序。

◆ 第4章 JFace界面设计详解。

本章使用com.rcp.example.module.ui插件打包程序范例,包含了与JFace相关的程序。

◆ 第5章 Eclipse Forms与Nebula界面设计。

本章使用com.rcp.example.module.ui插件打包程序范例,包含了与Forms相关的程序。

◆ 第6章 Eclipse RCP开发基础。

本章创建com.rcp.example.app插件作为Eclipse RCP独立应用程序,并且创建插件com.rcp.example.module.a和com.rcp.example.module.b演示包的访问规则。

◆ 第7章 构建产品帮助系统。

本章创建com.rcp.example.app.help插件作为独立应用程序的帮助插件。

◆ 第8章 构建产品欢迎页面。

本章使用com.rcp.example.app.app作为产品欢迎页面插件。

◆ 第9章 构建产品多国语言。

本章创建一个com.rcp.example.app.language插件实现多国语言界面切换的功能。

◆ 第11章 Eclipse RCP扩展的使用。

本章创建com.rcp.example.module.c插件演示多个扩展点技术和多种菜单、按钮的创建方式。

◆ 第12章 Eclipse RCP扩展点开发。

本章创建com.rcp.example.module.d插件作为扩展点的提供者,创建com.rcp.example.module.e插件作为扩展点的使用者。

◆ 第13章 Eclipse RCP与Spring OSGi。

本章创建com.norcp.example.module.f和com.norcp.example.module.g插件整合了Spring OSGi作为业务模块。

◆ 第14章 Eclipse RCP与数据访问。

本章创建com.norcp.example.db.mysql插件、com.norcp.example.cp.dbcp插件、com.norcp.example.module.h整合了MySQL数据库、DBCP连接池和业务模块。勘误和支持

由于作者的水平有限,故书中难免会出现一些错误或不准确的地[1]方,恳请读者批评指正。为此,特意创建一个在线支持站点下载外,还可以从这个网站下载,我也会将相应的功能更新及时发布出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱gmluyang@gmail.com,期待能够得到你的真挚反馈。

[1] 参见华章网站www.hzbook.com。——编辑注致谢

首先要感谢IBM公司向开源社区贡献了Eclipse,以及那些为这个伟大的开发平台贡献插件的开发者和组织。2012年美国计算机协会(ACM)宣布将软件系统大奖(Software System Award)授予Eclipse,由此可见,Eclipse对计算机的贡献是有目共睹的。Eclipse还对开源运动产生了广泛的影响。

感谢机械工业出版社华章公司的编辑杨福川和姜影,在这一年的时间中始终支持我完善本书,是你们的鼓励和帮助引导我顺利完成全部书稿。

感谢那些陪伴在我身边的朋友。岑丽丝帮助我校对了部分文字内容,还有郑伟雄、王霞娟、吴郡、安瑞银、冯小川、外甥女皮婷婷,虽然他们大多都不明白什么是程序设计,也看不懂我写的那些“奇怪”的东西,但是一直鼓励我完成这项工作。

感谢Eclipse基金会的Ian Skerrett副总裁在此期间给予我的协助和支持,他非常关注Eclipse在中国的发展状况。感谢德国的技术作家Lars Vogel,他发表关于Eclipse的技术的数百篇文章也给我提供了很好的参考。

感谢在中兴通讯工作的哥哥徐琼在我初学软件开发时给予的帮助,感谢在阿里云工作的弟弟舒铭分享给我在大型互联网开发方面的有益经验,还有正在大学学习Java编程的弟弟王齐轩让我有机会重新梳理了Java学习的技术路线。

最后要感谢我的家人,我的父亲是极其出色的机械工程师,他影响了我工作态度,我的母亲以医生的细心照顾着我的生活,他们一直在各方面支持着我,并为此付出了极大的努力,没有他们我根本无法完成这些工作。

谨以此书献给我最亲爱的家人和朋友,以及众多热爱Eclipse和OSGi技术的软件开发者!陆阳(SixSun)于广东中山第一部分基础篇第1章初识Eclipse RCP1.1 Eclipse平台概述

Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,它于2001年11月贡献给开源社区,现在由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。2007年6月,稳定版本3.3发布;2008年6月发布代号为Ganymede的3.4;2009年6月发布代号为Galileo的3.5;2010年6月发布代号为Helios的3.6;最近发布的Eclipse是代号为indigo的3.7。

Eclipse用户界面采用的技术是IBM公司开发的SWT,这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件,不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。

Eclipse的插件机制是轻型软件组件化架构。在富客户端平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。已有的分离插件能够支持C/C++(CDT)、PHP、Perl、Ruby、Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅限于支持各种编程语言。

Eclipse的设计思想是:一切皆为插件。Eclipse核心很小,Eclipse的所有功能都以插件的形式附加于Eclipse核心之上。Eclipse的基本内核包括图形API(SWT/JFace)、Java开发环境插件(JDT)和插件开发环境(PDE)等。1.2 Eclipse RCP概述

富客户端平台(Rich Client Platform,RCP)指的是一种基于C/S结构(Client/Server)的桌面应用软件实现,其Rich概念是相对于B/S结构(Browser/Server)应用软件的瘦客户端(Thin Client)浏览器而言的,有时也称为肥客户端(Fat Client)或传统客户端(Traditional Client)应用软件。早期开发的桌面应用程序大多使用微软Visual系列的可视化IDE或Borland公司的C++Builder和Delphi IDE来实现。虽然Java在Web开发领域大放异彩,但使用Java开发桌面应用程序一直都饱受指责,界面不够美观、性能问题、没有优秀的界面设计工具、程序编写过于复杂等都阻碍了Java在桌面程序领域的发展。

而Eclipse RCP技术为我们提供了丰富的界面组件,如SWT和JFace等,还提供了大量的基础功能和技术特性,例如,帮助系统、多国语言化、跨平台移植。开发人员可以基于已存在的平台构建应用程序,以替代原有的从零开始构建复杂的应用程序,这得益于平台的供应商已经对平台做了大量检验和测试,并且Eclipse RCP提供了良好的向下兼容性。随着著名的Java可视化设计软件WindowBuilder被Google的收购,并且被免费提供给Eclipse社区,进一步推动了Eclipse RCP技术的发展,简化了Java开发者在界面设计中面临的编码问题。WindowBuilder将进一步支持下一个版本Eclipse 4的开发。

Eclipse RCP平台的结构如图1-1所示,其中主要包括下列组件:

❍Platform Runtime:运行期平台,用于启动Eclipse、运行插件。

❍Workbench:Eclipse工作台(包含视图(Views)、编辑器(Editors)、透视图(Perspe-ctives))。

❍SWT:可移植构件工具包。

❍JFace:JFace是建立在SWT之上的UI组件。

❍JDT:Java开发工具集,开发Java程序的一组工具。

❍PDE:插件开发工具集,开发Eclipse插件程序的一组工具。图1-1 Eclipse RCP平台结构1.3 Eclipse RCP的应用

Eclipse RCP除了在软件开发平台领域有着良好的表现外,在科学技术和信息管理领域也有着广泛的应用。随着软件开发规模越来越大,整合的技术领域越来越多,软件变得错综复杂。现有模式的开发技术导致软件开发成本和维护成本的增加,以及软件质量的降低。基于Eclipse RCP及OSGi技术的模块化、即插即用的设计,可以使用现有的技术体系来完成新功能的开发。而大量的Eclipse子项目提供了诸多技术特性帮助设计者实现不同领域的业务功能,使其编写的应用程序更容易实现代码复用、版本升级、跨平台移植、多国语言化。这些技术特性令软件产品可以面向更多国家的软件用户、不同平台的终端,实现一次开发多平台使用,从而赢得更多的软件市场。

图1-2是一个Eclipse RCP在音乐领域的应用,它可以帮助用户编排和分析曲谱。图1-2基于RCP的音乐艺术应用

图1-3是一个Eclipse RCP在信息管理领域的应用。图1-3基于RCP的信息管理系统

图1-4是Eclipse RCP在色谱、光谱领域的应用,它帮助技术人员进行科学分析工作。图1-4基于RCP的物理科学应用

图1-5是Eclipse RCP在生物、化学科学领域的应用。图1-5基于RCP的生化科学应用

在2012年的EclipseCon会议中,福特汽车公司在大会中演示了如何在汽车中使用即插即用的Eclipse插件开发技术。现代汽车变得越来越智能,因为有越来越多的软件开发人员参与其中,相信在未来将会开发出更多的基于Eclipse Plugin和Eclipse RCP的软件产品。1.4 OSGi与Equinox

自Eclipse3.0开始,其内核被移植到OSGi框架上,OSGi(bundle)成为插件的同义词。这个新结构在MAINFEST.MF文件中放置了插件的依赖项和库信息,而插件的扩展信息保留在plugin.xml文件中。基于Eclipse开发插件,基于Equinox的OSGi实现无疑是最好的选择。

在过去的很多年里,设计模式被软件开发者广泛使用。“优先使用对象组合而非类的继承”、“面向接口编程,而非面向实现编程”,这类基于编程语言角度的设计经验帮助开发者更好地设计模块化、松耦合、易于扩展的应用程序,但是在开发大型的软件系统方面,仍然存在很多困难,使得一些大型的系统难以维护、扩展和管理。目前的设计原则和面向对象的开发模式,未必能够有助于解决在大型软件系统开发中所面临的复杂性,因为任何技术都有其适用的范围,只是不同技术所关注问题的层面不同。已有的设计模式有助于解决与逻辑设计相关的问题,但不利于解决模块组件设计中所面临的挑战。

什么是Java平台上的软件模块?一个模块是一个简单的“软件组件。”不幸的是,这不足以区别于其他软件组件,例如类、包、服务,甚至应用程序。因此,我们需要把重点放在如何定义模块上。一个软件模块应该是可部署的、可管理的、可复用的、可组合的,无状态的单位软件能够为客户端提供了一个简洁的访问接口。类似的软件单元组件包括:EAR、WAR和JAR文件。在开发过程中,将系统分割成多个模块有助于缓解复杂的开发任务所带来的问题。这包括改善构建效率,允许开发者独立地开发自主(松耦合)的模块,并划定模块的开发边界。

OSGi是基于Java的服务平台规范,OSGi的本质是将Java面向对象的开发转向面向组件和服务的开发。OSGi框架提供了一套完善的机制用于管理和控制组件(bundle)和服务(service)的生命周期,以及组件和服务在其生命周期内的交互。由于具有服务组件模块化、动态加载应用程序等优点,OSGi技术正被越来越多的行业关注,如嵌入设备制造业、汽车制造业、企业应用等。

与Eclipse一样,Equinox也采用天文名词,指节气中的昼夜平分时刻,是春分或秋分。Eclipse通过开放服务网关协议(Open Services Gateway Initiative,OSGi)来替换先前版本中不稳定的Eclipse插件技术,从而实现了一次巨大飞跃。从程序的角度来说,Equinox项目是OSGi R4核心框架规范的一个实现,它实现了可运行基于OSGi系统的各种可选的OSGi服务和其他基础设施。

简而言之,Equinox项目为开发者提供一流的OSGi技术实现,并作为Eclipse动态基础架构的默认实现。作为Eclipse中的一部分,Equinox负责开发和提供OSGi框架实现,并为Eclipse的其他模块所使用,具体情况如下:

❍Equinox实现了OSGi规范(包括EEG、MEG、VEG)的所有方面。

❍Equinox负责调查与研究未来版本的OSGi规范及运行时的相关问题。

❍Equinox将非标准但十分重要的基础架构转化成可基于OSGi的系统进行运行和管理。

❍Equinox为Eclipse的运行和基础使用实现关键的框架服务和扩展,比如EclipseAdaptor和Extension Registry等。1.5 SWT与JFace

SWT(Standard Widget Toolkit)最初是由IBM开发的一套用于Java的图形用户界面系统,用来与Swing竞争。而开源集成开发环境Eclipse就是通过Java和SWT开发的。SWT是一个窗口构件集和图形库,它集成了本机操作系统提供的GUI API。

JFace是建立在SWT之上的UI部件,是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面API,其底层实现为SWT。而JFace使用SWT却不将其隐藏,它扩展了SWT并能与SWT交互操作。JFace工具箱提供了一组功能强大的用户界面组件,开发人员可以轻松地在独立应用程序中利用这些组件,以简化常见的UI编程任务。1.6 小结

这一章我们学习了一些Eclipse的相关概念。因为Eclipse RCP是基于Eclipse平台进行开发的,所以了解Eclipse的技术概念是非常有必要的。国外已经有了一些关于开发Eclipse RCP应用程序和Eclipse插件程序的技术书籍和相关教材,但是国内多年来依然没有将相关技术较好地推广。这主要受到几个方面的制约:语言障碍,大多数技术文档都以英文和德文为主,在Eclipse社区中也是国外开发者较为活跃;辅助开发插件、第三方技术较多,有些属于Eclipse基金会的项目,有些受第三方公司、组织或个人支持;很多关于插件开发的资料涉及的内容和技巧并不太适合在基于Eclipse RCP技术开发业务平台中参考。

Eclipse下的项目非常丰富,涵盖了众多技术领域,开发者既可以将它作为一个软件开发平台来使用,也可以下载Eclipse的项目的源码进行分析和学习,进一步掌握Eclipse插件开发的各种技巧。第2章搭建Eclipse RCP开发环境

工欲善其事,必先利其器。本章将为开发Eclipse RCP程序做一些准备工作。本章除了介绍如何搭建必要的开发环境外,还希望初学者能掌握获取技术资源并进行自我学习的方法。相关部分会给出获取更多技术资源的渠道。2.1 JDK的安装与配置2.1.1 下载JDK安装程序

自从Sun被Oracle收购之后,Sun原有的产品都要到Oracle网站下载了。需要注册一个Oracle账号成为其用户才能下载。本书使用的JDK版本为Java SE 7u3,安装平台为Windows x86(32-bit)。可以使用Java SE 5或以上的任何版本作为开发环境。

下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html。下载JDK的界面如图2-1所示。图2-1下载Java2.1.2 安装JDK运行程序

用户必须具有管理权限才能安装Microsoft Windows的JDK程序。jdk-7u3-windows-i586.exe是JDK的安装文件。双击安装程序的图标,然后按照安装程序提供的说明选择一个合适的安装目录,如图2-2所示。图2-2安装JDK——更改文件夹

单击“确定”按钮后,进入自定义安装页面,如图2-3所示。这个页面包含开发工具、源代码、公共的Java JRE三个安装项(JDK中还包含一个私有的JRE),默认全部安装即可。图2-3安装JDK——自定义安装

单击“下一步”按钮完成JDK的安装,之后进入JRE的安装页面,如图2-4所示,这里需要选择JRE的安装目标文件夹。图2-4安装JDK-JRE目标文件夹

完成安装后,JDK的目录结构如图2-5所示。JDK7的Demo示例程序需要单独下载,而不像JDK6那样一起打包在安装文件中。图2-5 JDK目录结构2.1.3 配置JDK运行环境

即使没有设置Path变量,仍然可以运行JDK。但是,如果想更方便地在控制台的任意目录下都能运行JDK的可执行文件(例如:javac.exe、java.exe和javadoc.exe),不必每次都按图2-6所示那样输入该命令的完整路径,最好设置Path变量。图2-6执行Javac命令

在Microsoft Windows 7中设置环境变量,具体的设置方法为:“控制面板”→“系统和安全”→“系统”→“高级系统设置”→“环境变量”,打开的“环境变量”对话框,如图2-7所示。图2-7设置环境变量

1.添加环境变量JAVA_HOME

❍变量名:JAVA_HOME。

❍变量值:JDK的安装路径。

具体设置如图2-8所示。图2-8添加JAVA_HOME环境变量

2.添加环境变量CLASSPATH

❍变量名:CLASSPATH。

❍变量值:.;%JAVA_HOME%\lib。

具体设置如图2-9所示。注意,变量值以“.”开始。图2-9添加CLASSPATH环境变量

3.修改环境变量Path

在变量值前面添加%JAVA_HOME%\bin;,如图2-10所示。图2-10修改Path环境变量2.1.4 测试JDK安装状态

现在应该准备好了在计算机系统中使用的JDK。运行一个简单的命令,以确保其正常工作,如图2-11所示。图2-11测试JDK2.1.5 卸载JDK应用程序

如果想卸载JDK,可以使用Microsoft Windows控制面板的“添加/删除程序”实用工具,如图2-12所示。图2-12卸载JDK2.2 安装Eclipse IDE

Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用于Java开发,目前亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。Eclipse本身只是一个框架平台,由于有众多插件的支持,使Eclipse拥有较佳的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。2.2.1 Eclipse开发包

在准备好开发Eclipse RCP应用程序后,应该比开发J2EE程序多了解一些关于Eclipse的开发工具。Eclipse官方网站针对不同开发领域定制了多种规格的Eclipse开发包,如表2-1所示。可以根据自己的技术需求选择合适的开发包,也可以后期在当前开发包的基础上安装额外的插件来扩展新的功能。

当然这些发布版本不是必须,仍然也可以在当前开发包的升级选项中添加其他插件,以满足开发需要。要进行J2EE开发,建议使用Eclipse IDE for Java EE Developers版本,其默认的插件有助于在Eclipse中创建、运行和调试Web应用程序,省去另行安装插件的工作。2.2.2 Eclipse版本更新

如果决定开发Eclipse RCP应用程序,建议选择Eclipse for RCP and RAP Developers开发包。在本书截稿时,Eclipse已经经历了好几个版本,自2006年Callisto发布以来,Eclipse一直坚持在每年6月的最后一周或倒数第二周进行发布的传统,如表2-2所示。Eclipse下这么多项目的同时发布使所有项目都能符合特定的依赖集,当后续项目要依赖于早期项目时,这样做非常有用。在Callisto之前,通常每个项目都要有必须满足的特定依赖集,这为某些项目的广泛使用带来了很多问题。自从每年一次的联合发布计划制订后,Eclipse的稳定性及项目间的可交互性都得到了极大的改进。

笔者最初开发RCP程序使用的版本是Callisto 3.2,现在已经升级到Indigo3.7版本,不同于开发Web应用程序,开发Eclipse RCP应用程序同样对开发包的版本具有一定的依赖性。当笔者将在Callisto版本下开发的程序迁移到Indigo版本时,一切都很顺利,没有修改任何Java代码,除了有些依赖的插件在新版本中被取消或项目名称有所改变外,没有遇到严重的不兼容问题。同时能够基于当前版本3.7向下兼容到3.1版本作为运行的目标平台,这样可以发布针对不同Eclipse版本的插件。

当打开插件的新建向导时(如图2-13所示),可以注意到向导页面中提供了一个Target Platform的设置,默认为当前Eclipse的版本,开发者也可以选择指定的Eclipse版本。Target Platform的概念在之后的章节中会进一步介绍。图2-13插件目标运行环境2.2.3 下载Eclipse

❍下载地址:http://www.eclipse.org/downloads/。

❍开发包:Eclipse for RCP和RAP Developers。

❍开发版本:Indigo Packages(当前最新版本)。

❍下载文件:eclipse-rcp-indigo-win32.zip(32位)。

Eclipse的下载界面提供多种平台的安装文件:Windows 32-bit、Windows 64-bit、Mac OS X(Cocoa 32)、Mac OS X(Cocoa 64)、Linux 32-bit和Linux 64-bit。根据操作系统下载对应版本的Eclipse。Windows平台有32位和64位两种开发包,32位的JDK或Eclipse能够安装在64位的操作系统上。如果安装了32位的JDK,那么就需要下载eclipse-rcp-indigo-win32.zip(32位)的Eclipse,而如果准备安装64位的JDK,那么需要同时匹配下载eclipse-rcp-indigo-win32-x86_64.zip(64位)的Eclipse,也就是说JDK和Eclipse需要相互匹配。2.2.4 安装Eclipse

解压缩eclipse-rcp-indigo-xxx.zip到指定的安装路径,如图2-14所示。图2-14 Eclipse安装路径

相比于开发J2EE应用程序,开发Eclipse RCP应用程序更耗费系统资源。如果将项目拆分成非常多的子插件和模块,松耦合的设计自然非常有益,但在同一工作空间中包含太多插件项目会使运行期的编译和打包都非常缓慢,所以安装Eclipse进行开发的机器的内存最好能大一些,4GB比较合适。如果工作空间中同时开发的插件项目不多,不会有太大影响。2.2.5 技术资源

如果希望了解更多关于Eclipse项目的内容,可以访问Eclipse项[1]目网站,其中展示了Eclipse的项目,以及这些项目的发展状况。无论项目是处于成熟期、孵化期,还是已经被废弃了,你都可以对感兴趣的技术进行研究。

[1] http://www.eclipse.org/projects/listofprojects.php。2.3 Maven的安装与配置2.3.1 Maven介绍

Maven是一个非常有用的项目管理工具,可以用它来处理JAR文件的依赖、项目的打包、项目站点的生成、项目文档的构建,以及单元测试的执行等。如果没有Maven强大的依赖功能,那么你不得不自己花费时间去下载一大堆JAR文件,还得仔细区分不同版本之间的依赖关系。

2004年,笔者第一次在项目中使用Maven,当时的版本还是Maven1.XX。编写本书时Maven已经是Release Notes(3.0.4)。本书使用的开发环境为2.X.X系列的版本,但这个并不影响学习。使用3.X.X系列的版本同样可以向后兼容。另外一个优秀的项目管理工具是Ant,它在构建过程方面十分优秀,是一个基于任务和依赖的构建系统,也是一个将软件编译、测试、部署等步骤联系在一起的自动化工具,但它在维护项目之间的依赖关系(如当前工程依赖了哪些JAR包,依赖的JAR包又是哪个版本)方面没有Maven这么方便。

通常,Maven在开发J2EE项目中使用较多。为什么会在Eclipse RCP开发环境中使用Maven?相关内容会在介绍RCP程序如何依赖第三方资源时讲解,现在准备好这个开发利器即可。2.3.2 下载Maven

❍下载地址:http://maven.apache.org/download.html。

❍下载文件:apache-maven-2.2.1-bin.zip。

具体的安装要求如表2-3所示。2.3.3 安装Maven

解压缩apache-maven-XXX-bin.zip到指定的安装路径,如图2-15所示。图2-15 Maven安装路径

1.添加环境变量M2_HOME

❍变量名:M2_HOME。

❍变量值:Maven的安装路径。

具体设置如图2-16所示。图2-16添加M2_HOME环境变量

2.修改环境变量Path

与在JDK中修改环境变量Path同理,可以方便地从任何目录运行Maven的可执行文件(mvn.bat),在变量值前面添加“%M2_HOME%\bin;”,如图2-17所示。图2-17添加M2_HOME至Path

3.添加环境变量MAVEN_OPTS

这是一个可选的环境变量,用来指定JVM属性,例如设置其值Xms256m-Xmx512m。此环境变量可用于提供额外的选项到Maven中。2.3.4 测试Maven

按图1-18中的命令测试Maven。图2-18测试Maven

如果不能获得图2-18中的返回结果,检查Maven环境变量的设置是否正确。2.3.5 修改Maven的配置文件

配置文件settings.xml位于Maven的安装目录conf下,如图2-19所示。图2-19 Maven配置文件目录

修改localRepository标签。localRepository用于指定Maven的本地资源库路径,其中放置从远程资源库下载的第三方JAR文件,默认这个路径是指向C盘的用户路径。为了防止重新安装操作系统导致之前下载的JAR文件丢失,在构建工程的时候需要重新从网络下载所需要的资源文件,造成不必要的等待时间,需要进行如下修改,如代码清单2-1所示。

代码清单2-1修改Maven配置文件1. < localRepository> E:/Java/maven/local/repository < /localRepository> 2.3.6 技术资源[1]

要进一步了解Maven的技术资料,可以在sonatype网站上找到比Maven官方网站更有用的PDF格式的电子书籍。

❍《Maven by Example》。边干边学——通过Maven的示例引导来掌握世界领先的项目管理工具的关键概念。

❍《Maven:The Complete Reference》。Maven完整参考,探索Maven POM细节和Maven的设置。

❍《Developing with Eclipse and Maven》。学习如何将Maven和Eclipse IDE开发工具集成。

❍《The Maven Cookbook》。提供更为普遍性的Maven功能目标。

[1] http://www.sonatype.com/Support/Books。2.4 Maven和Eclipse的集成

在使用Eclipse作为开发工具的时候,Maven的Eclipse插件可以方便项目的开发,能够更加直观地修改基于Maven项目的POM配置文件并管理项目。2.4.1 安装Maven Eclipse插件

1)展开Eclipse插件安装菜单:Help→Eclipse Marketplace……,如图2-20所示。图2-20 Eclipse插件安装菜单

2)查询Maven插件。在搜索列表中会列出两个与Maven相关的插件,如图2-21所示。图2-21查询Maven Eclipse插件

❍Maven Integration for Eclipse WTP:如果是在J2EE版本的Eclipse中使用Maven插件,选择这个插件就非常合适。J2EE版的Eclipse中已经集成了WTP工具,配合这个版本的Maven插件可以方便Web应用程序的创建、运行和打包。

❍Maven Integration for Eclipse:因为要开发的是Eclipse RCP应用程序,并不需要Maven对Eclipse WTP插件的额外支持,仅安装Maven Integration for Eclipse插件就够了,安装过程如图2-22所示。图2-22安装Maven Integration for Eclipse

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载