最近做基于Eclipse的开发,写写对基于Eclipse的开发一些体会。以前一直在用Eclipse,感觉到插件机制的强大和灵活性,但一直没有接触到Eclipse的开发。现在写代码基本上模仿+现学现卖,Eclipse Plugin开发首先就应该学会模仿(我老大常说的一句Monkey see monkey do,《Contributing to Eclipse》的一条rule),因为Eclipse除了Run-time Kernal外都是插件(Everything is a contribution),所以要习惯从已有的contributions来学习,许多时候我们要读Eclipse的源代码,其实读源代码是学习的一个很好的途径,事实上Eclipse灵活的设计凝聚了设计模式大师Erich Gamma的许多优秀的模式思想(看过Erich Gamma作品《设计模式-可复用的软件基础》和JUnit代码的人都为模式带来的灵活和优美感到震惊,Eclipse同样也是)。
Eclipse开发的基础是SWT和JFace,SWT/JFace是和awt/swing对应的东东,其实熟悉awt/swing开发的人很容易过度到SWT/JFace的开发,事件机制,UI组建、布局管理器也基本类似,SWT使用UI组件提供了更一致的编程风格(构造函数都是是parent,style,不需要显式的添加,一种更方便的Composite模式的构建树形结构的方式),SWT的事件机制底层是直接对Windows事件机制的一种封装(windows下版本而言),熟悉Windows编程的,很容易理解他的事件机制,这也是和Swing的区别,SWT中的非UI线程是不能够访问UI线程的资源的,需要使用 asyncExec,syncExec,timerExec方法开辟一个线程,这个线程交给UI线程来调用,而Swing提供了一种更直观的编程模型,非有UI线程可以访问直接UI线程的。SWT的布局管理器一般通过Layout来定义结构,用layoutData来定义组件的大小,可扩展方式等。JFace实际上是构建在SWT基础之上的粒度更大的,更具有MVC的UI组件。JFace 使用LabelProvider和ContentProvider将模型接口适配成Viwer可以呈现的方式,从而Model和UI的到了彻底的分离。Model和UI分离,Model不被UI所污染是所有UI设计都需要遵循的,Eclipse更是如此。
Eclipse使用了大量的设计模式,核心模式Extension Object/Extension Interface,让Eclipse在保持API稳定的情况下,能够添加新的接口。Extension Object要达到的效果是:(1)向已有的服务接口添加类型而又不暴露它(2)向已有的类型添加行为。其实现方式是向已有的对象注册支持的类型,使用者可以query到已注册的类型,就像这个类动态的继承了一个接口,支持一个新的接口一样,“可以在运行时添加为一个对象添加接口”。这和COM组件的核心思想一样的。记得Bob大叔在《敏捷开发原则、模式、实践》这本书上就指出了可扩展的几个设计模式:Visitor、Decorator和 Extension Object模式。Visitor是在不改变原来结点类的情况下为结点添加行为、Decorator模式是可以在运行时为对象添加行为。Adapter模式也是Eclipse里面用的比较多的,像前面说的LabelProvider和ContentProvider.Proxy模式是Eclipse Lazy load的核心,Lazy load的实现一般是一个虚拟代理,常常为了效率而使用它(如Hibernate 的Lazy load)。Poxy有很多种,还有如远程代理等,Poxy的目的主要是控制对一个对象的访问,提供安全控制,屏蔽底层细节。
Eclipse plugin开发、EMF、GMF待续。
分享到:
相关推荐
**XFire初识:使用Eclipse开发WebService** 在IT行业中,WebService是一种允许应用程序之间进行交互的标准化技术。它通过XML(可扩展标记语言)来交换数据,使得不同平台上的应用能够无缝对接。XFire是Java平台上一...
本教程将带你从初识Eclipse到熟练掌握,一步步成为Eclipse的专家。 **一、Eclipse基础** 1. **安装与配置**:首先,我们需要下载适合操作系统的Eclipse版本,并进行安装。安装过程中需注意JDK的配置,因为Eclipse...
MyBatis 是一款广泛应用于Java企业级开发的持久层框架,它的前身是iBatis。MyBatis的主要功能是支持SQL查询、存储过程,并且具备高级映射特性。作为一个ORM(Object/Relation Mapping,对象关系映射)框架,MyBatis...
4. **Spring工具集**:Spring Tool Suite(STS)是一个基于Eclipse的IDE,为Spring开发者提供了强大的集成开发环境,包括代码提示、模板、调试器等,加速开发流程。 5. **Spring Framework与Spring Boot的区别**:...
1.3.1 开发基于Android平台的应用 1.3.2 参加Android开发者大赛 1.3.3 个人英雄主义再现——得到更多人的认可和尊重 1.3.4 获得应有的收益——AndroidMarket 1.4 真实体验——Android模拟器 1.4.1 模拟器概述 1.4.2 ...
开发Drools项目,通常有两种方式:Eclipse开发和Guvnor开发。 2.1 Eclipse开发 Eclipse是一种广泛使用的Java集成开发环境,通过安装Drools相关的插件,如Drools and jBPM Integration Developer插件,可以在Eclipse...
2. **安装Eclipse集成开发环境**:Eclipse是一个强大的开源IDE,支持多种插件扩展,非常适合进行Android应用开发。 3. **安装Android SDK**:Android SDK提供了编译、调试和部署Android应用所需的工具。 4. **安装...
### 初识Spring Boot及其环境配置 #### 一、微服务与Spring Boot概念 ##### 微服务简介 微服务架构是一种现代软件设计方法,它强调将一个大型的应用程序拆分成一组小的服务,每个服务实现单一的功能,并且可以独立...
MyEclipse是一款基于Eclipse的Java集成开发环境(IDE),提供了丰富的功能支持Java开发。 1. **新建项目**:在MyEclipse中新建Java项目。 2. **导出项目**:将项目导出为可部署的文件。 3. **导入项目**:将已有的...
- **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,用于简化Java EE应用的开发,提供了强大的请求处理和结果视图管理功能。 - **Spring**:是一个全面的企业级应用框架,包含了依赖注入...
在搭建Robotium测试环境之前,需要准备一些工具,包括Eclipse集成开发环境、Java开发工具包(JDK)1.8版本、Android SDK以及ADT插件。此外,还需要下载Robotium-solo库文件以及重签名用的re-sign.jar文件。需要注意...
在实际开发中,IDEA、Eclipse 等集成开发环境提供了丰富的 Spring MVC 插件支持,可以自动生成 Controller、Service、DAO 层代码,简化开发流程。此外,Maven 或 Gradle 可以帮助管理依赖,使得构建和部署更加方便。...
为了开发Ajax应用,读者需要搭建相应的开发环境,包括JDK、Tomcat服务器、Ant构建工具以及Eclipse开发环境的安装和配置。书中详细指导了在Windows和Linux下安装这些组件的步骤,确保开发者能够顺利进行Ajax项目的...
作为一本既及时、又翔实、理论实践相结合的教程,《Google Android开发入门与实战》一书很值得入门者阅读。 值得一提的是,书中的开发实例很有创意,将传统互联网的内容/服务与移动平台紧密结合起来,如书中的...
Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。大概就是一个开发工具。 项目介绍 我们会首先建立大概...
此外,也可以在Eclipse集成开发环境中安装FlexBuilder 3 Beta plugin进行开发,但官方更推荐使用Adobe Flex Builder作为首选开发工具。 #### 三、Flex开发语言介绍 Flex支持两种主要的开发语言: 1. **...
将基于 Swing 的开发工具插入 Eclipse 中 #### 假定的 Swing 编辑器:Ed - **编辑器介绍**: Ed 是一个假设的 Swing 编辑器,用于演示如何将 Swing 开发工具集成到 Eclipse 中。 #### 基本概念 - **理解编辑器...