Eclipse RCP与Spring O
《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自执笔,并得到了Eclipse官方技术社区的强烈推荐,权威性毋庸置疑!内容全面,系统讲解了利用Eclipse RCP和Spring OSGi开发大规模Java应用的核心技术;实战性强,包含大量易于操作的案例和最佳实践。 《Eclipse RCP与Spring OSGi:技术详解与最佳实践》共分3个部分:基础篇(第1-5章)详细介绍了与Eclipse RCP相关的一系列核心概念、Eclipse RCP开发环境的搭建,以及SWT、JFace、Forms、Nebula和WindowBuilder等Eclipse RCP开发所常用的界面编程技术;高级篇(第6-12章)系统讲解了Eclipse RCP应用开发的基础知识、Eclipse RCP软件产品各个组成部分的构建方法,以及Eclipse RCP扩展的使用和扩展点的开发,掌握这些技术知识的读者将能构建一个结构完整的Eclipse RCP软件,并解决软件开发过程中遇到的故障;实战篇(第13-15章)详细讲解了Eclipse RCP与Spring OSGi框架、Hibernate ORM框架、JPA规范、Maven工具的整合,以及它与Java的模块化设计。
基本信息
- 外文名
Eclipse Rcp and Spring OSGi Core Technology and Best Pratice
- 出版社
机械工业出版社
- 作者
陆阳
- 开本
16
- 页数
394页
基本介绍
内容简介
《Eclipse RCP与Spring OSGi:技术详解与最佳实践》编辑推荐:资深的Eclipse专家亲自执笔,Eclipse官方技术社区推荐,权威性毋庸置疑。内容全面,系统讲解了利用Eclipse RCP和Spring OSGi开发大规模Java应用的核心技术;实战性强,包含大量易于操作的案例和最佳实践。
作者简介
陆阳,资深Eclipse技术专家,致力于OSGi和Eclipse技术的研究和推广,积累了十分丰富的经验。精通Java语言和各种开源的企业级Java技术框架的整合与开发;擅长Eclipse RCP 富客户端系统框架的设计、基于OSGi的BS/CS系统的架构、基于Java工作流中间件的设计及其应用,以及基于MDA 可视化建模软件的开发和设计。活跃于Eclipse技术社区,是Eclipse 技术社区Hibernate/JPA 设计器的开发者,被提名Eclipse2012 Community-Top Newcomer Evangelist Award。
媒体推荐
毫无疑问,Eclipse是全球最受欢迎的Java客户端软件开发IDE,Spring则在众多的Java Web开发框架中独树一帜。随着现代软件开发的规模越来越大,结构越来越复杂,模块化是当今解决这一问题的最佳方案之一。Eclipse RCP和Spring OSGi分别是开发大规模的Java客户端应用和Java Web应用的主流技术,本书十分详尽地讲解了Eclipse RCP和Spring OSGi的技术细节,以及利用它们编写模块化程序的思路和最佳实践。 ——51CTO 中国领先的IT技术网站
图书目录
推荐序 前言 第一部分基础篇 第1章初识EclipseRCP2 1.1Eclipse平台概述2 1.2EclipseRCP概述2 1.3EclipseRCP的应用3 1.4OSGi与Equinox5 1.5SWT与JFace7 1.6小结7 第2章搭建EclipseRCP开发环境8 2.1JDK的安装与配置8 2.1.1下载JDK安装程序8 2.1.2安装JDK运行程序8 2.1.3配置JDK运行环境10 2.1.4测试JDK安装状态11 2.1.5卸载JDK应用程序11 2.2安装EclipseIDE12 2.2.1Eclipse开发包12 2.2.2Eclipse版本更新13 2.2.3下载Eclipse14 2.2.4安装Eclipse14 2.2.5技术资源14 2.3Maven的安装与配置14 2.3.1Maven介绍14 2.3.2下载Maven15 2.3.3安装Maven15 2.3.4测试Maven16 2.3.5修改Maven的配置文件16 2.3.6技术资源17 2.4Maven和Eclipse的集成17 2.4.1安装MavenEclipse插件17 2.4.2配置MavenEclipse插件18 2.4.3技术资源18 2.5安装SpringIDEPlugin19 2.5.1SpringIDE介绍19 2.5.2安装SpringIDE插件19 2.5.3技术资源19 2.6安装WindowBuilderProPlugin20 2.6.1WindowBuilder介绍20 2.6.2安装WindowBuilder插件21 2.7小结21 第3章SWT界面设计详解22 3.1SWT介绍22 3.2WindowBuilder插件初识23 3.2.1设计视图23 3.2.2源码视图24 3.2.3结构视图26 3.3SWT设计面板26 3.4SWT设计准备27 3.4.1Element27 3.4.2ElementFactory28 3.5Shell使用入门30 3.5.1Shell样式30 3.5.2ShellTRIM30 3.5.3Shell模态类型31 3.6容器使用入门33 3.6.1Composite33 3.6.2Group34 3.6.3ScrolledComposit35 3.6.4SashForm36 3.6.5TabFolder与TabItem36 3.6.6CTabFolder与CTabItem37 3.6.7ViewForm38 3.6.8CBanner40 3.7容器使用进阶41 3.7.1checkSubclass方法41 3.7.2界面复用42 3.7.3添加自定义的Component44 3.7.4背景模式45 3.7.5带分隔条的SashForm47 3.8布局使用入门48 3.8.1AbsoluteLayout48 3.8.2FillLayout49 3.8.3GridLayout50 3.8.4FormLayout51 3.8.5RowLayout52 3.8.6StackLayout53 3.8.7GroupLayout54 3.8.8FlowLayout55 3.8.9BoxLayout56 3.8.10BorderLayout57 3.9布局使用进阶58 3.9.1使用AbsoluteLayout58 3.9.2使用GridLayout59 3.9.3StackLayout59 3.10控件使用入门60 3.10.1Label60 3.10.2CLabel61 3.10.3Separator62 3.10.4Text63 3.10.5StyledText63 3.10.6Combo64 3.10.7CCombo64 3.10.8List65 3.10.9Button66 3.10.10DateTime68 3.10.11Spinner68 3.10.12Slider69 3.10.13Scale70 3.10.14Link70 3.10.15ToolBar与ToolItem71 3.10.16CoolBar与CoolItem73 3.10.17ExpandBar与ExpandItem74 3.10.18ProgressBar75 3.10.19Browser76 3.10.20Canvas77 3.10.21TrayItem77 3.10.22Table78 3.10.23Tree80 3.10.24TableTree81 3.11控件使用进阶83 3.11.1创建SimpleTable83 3.11.2创建LazyTable86 3.11.3创建VirtualTable89 3.11.4VirtualTable注意事项92 3.11.5VirtualTable排序94 3.11.6创建LazyTree95 3.11.7创建VirtualTree100 3.11.8创建TreeVirtualDynamic104 3.11.9创建POJOComposite106 3.11.10如何与浏览器交互107 3.12菜单使用入门111 3.12.1MenuBar组件111 3.12.2PopupMenu112 3.12.3MenuItem113 3.13菜单使用进阶113 3.14技术资源113 3.15小结114 第4章JFace界面设计详解115 4.1MVC设计思想115 4.1.1MVC模式115 4.1.2Java与MVC模式116 4.2JFace与MVC模式117 4.2.1JFaceViewer框架概述117 4.2.2JFaceViewer框架机制118 4.3JFace常用组件入门121 4.3.1ComboViewer122 4.3.2ListViewer130 4.3.3TableViewer132 4.3.4TreeViewer135 4.3.5CheckboxTableViewer137 4.3.6CheckboxTreeViewer139 4.3.7TreeTableViewer141 4.3.8TableViewerComposite141 4.3.9TableComposite142 4.3.10TreeViewerComposite142 4.3.11TreeComposite143 4.4JFace组件使用进阶143 4.4.1数据绑定143 4.4.2基于EditingSupport的可编辑表格146 4.4.3基于ICellModifier的可编辑表格147 4.4.4对话框编辑器149 4.4.5其他表格标签150 4.4.6Viewer浮动提示控件151 4.5小结153 第5章EclipseForms与Nebula界面设计154 5.1EclipseForms项目介绍154 5.2EclipseForms使用入门154 5.2.1Composite154 5.2.2ExpandableComposite155 5.2.3Label与Text158 5.2.4Hyperlink与ImageHyperlink158 5.2.5CompositeSeparator159 5.2.6Section160 5.2.7Form与ScrolledForm162 5.3EclipseForms使用进阶164 5.3.1FormEditor与FormPage164 5.3.2MasterDetailsBlock与IDetailsPage167 5.4EclipseForms技术资源173 5.5Nebula项目介绍173 5.6安装EclipseNebulaPlugin174 5.6.1安装EclipseNebulaMainWidgets174 5.6.2安装EclipseNebulaincubationWidgets174 5.6.3加载EclipseNebula控件到WindowBuilderProPlugin中174 5.7NebulaMainWidgets设计初识176 5.8NebulaIncubationwidgets设计初识177 5.9Nebula设计经验178 5.10Nebula技术资源180 5.11小结180 第二部分高级篇 第6章EclipseRCP开发基础182 6.1Eclipse概念182 6.1.1欢迎界面183 6.1.2工作台183 6.1.3透视图184 6.1.4视图184 6.1.5编辑器185 6.2RCP应用程序设计185 6.2.1RCP插件创建向导185 6.2.2Plug—inProject185 6.2.3PluginContent186 6.2.4Templates187 6.2.5SampleIntro188 6.2.6产品初次运行188 6.3插件清单编辑器189 6.3.1插件概述189 6.3.2插件依赖项191 6.3.3插件运行时193 6.3.4插件扩展197 6.3.5插件扩展点199 6.3.6插件构建199 6.3.7其他页面200 6.4RCPActivator与Advisor类解析200 6.4.1WorkshopAppActivator200 6.4.2Application201 6.4.3ActionBarAdvisor202 6.4.4WorkbenchAdvisor203 6.4.5WorkbenchWindowAdvisor205 6.5小结206 第7章构建产品帮助系统207 7.1创建帮助插件向导207 7.1.1帮助插件的Content向导页面208 7.1.2帮助插件的Templates向导页面208 7.1.3帮助插件的SampleHelpTableofContents向导页面209 7.2维护HelpContent209 7.2.1帮助系统配置与资源文件的目录209 7.2.2帮助系统配置与资源文件的关系210 7.2.3帮助系统扩展211 7.3添加帮助的菜单项211 7.4帮助文件的创建212 7.5小结212 第8章构建产品欢迎页面213 8.1产品绑定欢迎页面213 8.1.1欢迎页面扩展213 8.1.2欢迎页面定义215 8.1.3欢迎页面首页215 8.1.4页面跳转链接216 8.2欢迎页面请求216 8.2.1创建IIntroAction216 8.2.2添加IIntroAction链接217 8.3添加动态内容217 8.3.1动态页面创建217 8.3.2动态数据创建218 8.4创建页面扩展219 8.5小结221 第9章构建产品多国语言222 9.1插件清单的多国语言222 9.2Java程序的多国语言223 9.2.1Java程序的外部化字符串223 9.2.2Java程序的多国语言包226 9.2.3产品多国语言进阶228 9.3帮助系统的多国语言229 9.4Eclipse界面汉化230 9.5切换软件系统语言234 9.5.1添加自定义产品的config文件234 9.5.2添加语言切换扩展点234 9.5.3语言切换处理器236 9.6小结238 第10章产品的运行与导出240 10.1产品配置240 10.2产品配置编辑器241 10.3导出向导244 10.3.1产品导出244 10.3.2跨平台导出245 10.3.3插件导出247 10.4运行与导出进阶247 10.5小结250 第11章EclipseRCP扩展的使用251 11.1ViewPart视图251 11.1.1创建新插件251 11.1.2视图向导251 11.1.3视图代码252 11.1.4视图扩展252 11.2Perspective透视图253 11.2.1透视图向导253 11.2.2透视图代码254 11.2.3透视图扩展254 11.2.4透视图布局255 11.2.5打开透视图256 11.3EditorPart编辑器256 11.3.1创建数据表单257 11.3.2创建编辑器的输入257 11.3.3创建编辑器260 11.3.4创建视图树形组件262 11.3.5编辑器扩展262 11.4编程实现Action263 11.4.1IAction263 11.4.2ToolBar工具栏264 11.4.3CoolBar工具栏264 11.4.4ContentMenuBar菜单栏265 11.4.5工作台Action265 11.4.6视图Action菜单栏267 11.4.7视图Action工具栏267 11.4.8编辑器Action工具栏268 11.5扩展实现Action269 11.5.1工作台Action扩展269 11.5.2视图Action扩展270 11.5.3编辑器Action扩展271 11.6Action的键盘绑定272 11.6.1Commands扩展273 11.6.2Bindings扩展274 11.7EclipseRCP设计进阶276 11.7.1视图/编辑器之间通信276 11.7.2创建状态栏项278 11.7.3创建属性配置页面279 11.7.4创建登录对话框286 11.8小结289 第12章EclipseRCP扩展点开发290 12.1扩展点简介290 12.2创建扩展点290 12.3扩展点编辑器291 12.3.1扩展点概述291 12.3.2扩展点定义292 12.3.3扩展点源码295 12.4扩展点处理295 12.4.1扩展点对象295 12.4.2扩展点注册296 12.4.3扩展点获取297 12.5添加扩展301 12.6使用扩展302 12.7小结303 第三部分实战篇 第13章EclipseRCP与SpringOSGi306 13.1OSGi技术介绍306 13.1.1软件开发面临的问题306 13.1.2动态模块化解决方案306 13.1.3OSGi框架307 13.1.4选择合适的OSGi实现308 13.2SpringOSGi项目所需要的开发包308 13.2.1下载SpringDM的开发包308 13.2.2解压缩SpringDM的开发包309 13.2.3创建SpringDM目标平台309 13.3SpringOSGi项目的Maven管理311 13.3.1创建MavenPOM项目311 13.3.2修改Maven项目类型312 13.4SpringOSGi项目的模块化设计313 13.4.1创建SpringDM业务项目313 13.4.2设计SpringDM业务项目313 13.5SpringOSGi项目转为插件项目318 13.6SpringOSGi插件项目发布接口319 13.6.1创建接口发布配置319 13.6.2添加包的路径导出319 13.7EclipseRCP获取SpringOSGi服务320 13.7.1创建EclipseRCPUI插件320 13.7.2获取SpringOSGi服务接口320 13.7.3调用SpringOSGi服务接口321 13.8EclipseRCP与SpringOSGi的启动322 13.8.1Eclipse应用程序启动选项322 13.8.2启动EclipseRCP产品配置326 13.8.3启动基于SpringOSGi的RCP程序326 13.9在EclipseRCP中获取ApplicationContext和Bean328 13.10SpringOSGi的Maven插件项目打包331 13.10.1PDE插件导出向导331 13.10.2Maven插件项目的打包配置332 13.10.3执行Maven插件打包333 13.11小结334 第14章EclipseRCP与数据访问335 14.1SpringOSGi与Hibernate335 14.1.1Hibernate简介335 14.1.2数据访问插件目标335 14.1.3数据访问插件设计336 14.2插件如何引入第三方开发包338 14.2.1如何获取第三方开发包338 14.2.2如何引用第三方开发包341 14.3将普通JAR转成插件格式344 14.3.1导入向导344 14.3.2BND工具344 14.4创建数据库插件345 14.4.1MavenPOM配置文件345 14.4.2properties配置文件346 14.4.3SpringXML配置文件346 14.4.4MAINFEST.MF配置文件349 14.5创建连接池插件349 14.5.1MavenPOM配置文件349 14.5.2properties配置文件349 14.5.3SpringXML配置文件350 14.5.4Java类设计352 14.5.5MAINFEST.MF配置文件355 14.6创建连接池Feature插件355 14.6.1修改DBCP的MAINFEST.MF文件356 14.6.2创建DBCP的Fragment插件356 14.7创建Hibernate插件356 14.7.1MavenPOM配置文件356 14.7.2properties配置文件358 14.7.3SpringXML配置文件358 14.7.4扩展点设计362 14.7.5Java类设计364 14.7.6MAINFEST.MF配置文件371 14.8创建业务插件371 14.8.1SpringXML配置文件372 14.8.2Java类设计375 14.8.3数据库SQL设计376 14.8.4MAINFEST.MF配置文件376 14.8.5添加BundleAnnotationSessionFactoryBean扩展377 14.9启动OSGiFramework程序378 14.10其他整合数据库的方式379 14.11基于数据访问插件的RCP程序启动380 14.12小结382 第15章Eclipse与Java的模块化设计383 15.1基于编程语言的模块化383 15.1.1Java语句的模块化设计383 15.1.2Java方法的模块化设计383 15.1.3Java类的模块化设计384 15.1.4Java接口的模块化设计385 15.2基于编程方法的模块化385 15.2.1IoC编程的模块化设计385 15.2.2AOP编程的模块化设计386 15.3基于程序物理文件的模块化388 15.3.1Package路径的模块化设计388 15.3.2XML文件的模块化设计389 15.3.3Properties文件的模块化设计389 15.3.4JAR组件的模块化设计390 15.4基于技术架构的模块化391 15.4.1OSGi的模块化设计391 15.4.2Eclipse插件的模块化设计392 15.4.3JMS的模块化设计392 15.5模块化的技术移植394 15.6小结394
序言
为什么要写这本书 几年前笔者就有编写一本关于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技术的初学者,建议采用循序渐进的方式逐章学习。对于已经具备一定开发经验的读者,可以直接选择感兴趣的内容阅读。本书的技术点都尽可能地与业务逻辑剥离,以减少无关的程序代码实现,从而使读者更好地关注技术本身,减少对读者学习的干扰。