摘要:
Eclipse是一款流行的Java集成开发环境。它同时也能够作为其他语言如C++、Ruby的开发环境,也可以作为任何稳定工具的框架,还可以作为开发桌面或者服务器应用的客户端平台。Eclipse开放社区负责了涵盖企业应用到社会网络的许多项目。
Garibaldi:你已经尝试过这些了么?
Miss Cramer:那是啥?
Garibaldi:我不确定。根据翻译,它要么是催情剂,要么是地板蜡。我不能确定值不值得冒险。
---Babylon 5 ,“Infection”
Eclipse是一款流行的Java集成开发环境(Integrated Development Environment,IDE)。它同时也能够作为其他语言如C++、Ruby的开发环境,也可以作为任何稳定工具的框架,还可以作为开发桌面或者服务器应用的客户端平台。Eclipse开放社区负责了涵盖企业应用到社会网络的许多项目。Eclipse是治理着这些项目的非营利机构的名称。(我不是很确定它是不是地板蜡,不过确实有Eclipse汽车,足球队和口香糖)。
Eclipse3.2版形成了Eclipse Callisto发行计划的基础。在2006年6月30日,同时发布了10个Eclipse项目。本篇文章将关注Eclipse IDE,非凡是作为Java开发工具(Java Development Tools,JDT)。
版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:gramophone;
原文:http://www.matrix.org.cn/resource/article/2006-12-05/Eclipse+3.2_1e27a96c-83fa-11db-bc5a-8183484e8085.Html
要害字:Eclipse 3.2;新特性
JDT的开发
JDT的历史可以追溯到1996年左右用Smalltalk开发的Visual Age for Java(VAJ)。在VAJ中,输入的所有内容都在内存中编译、执行。这种设计负载不好,很难进行扩展,陈旧的文件很难被修改。
在1999年,IDE团队开始开发Visual Age Micro Edition(VAME)。它使用了Java里的标准窗口工具集(Standard Widget Toolkit,SWT)来开发用户界面。VAME的目标就是嵌入式空间。它使用了标准的Java虚拟机(Java VMs),并且把工作台保持在文件系统中。然而文件和文件夹的名字是不可读的UUID。
VAME增加的编译器要比VAJ中的快10倍以上。这种模型的构建是基于状态的(与当前基于资源的的Eclipse不同)。VAME有自己的知识库,称作Rapider,通过插件是可扩展的。
VAME在社区里没有流行起来。但是它包含了很多好的想法,这些想法在他们开发下一个项目Eclipse时得到应用。2001年,Eclipse 1.0发布。它被描述成“一种IDE,它能够开发任何东西,没有例外的”。从一开始,Eclipse和JDT都是可以作为其他开发工具的平台。工作区被存储在磁盘上,并且对其他人是可见的。Elipse1.0集成了CVS,取代了以前只是开发者自己的知识库。
Eclipse与它的前辈比还有一个很重要的不同:它是开源的。用户社区激增,并且自给自足。Eclipse 3.2的大多数新特性都是Eclipse用户需求的直接结果。自从3.1发布后收到了超过3万份的固定和增强要求。因为要把所有的都讲一遍将花费太多时间(同时也很乏味),我们只强调一些对大多说开发者来说非凡重要的。
Eclipse 编译器
JDT最大的特点之一就是内嵌了Java编译器,它是与javac完全相容的。尽管你可以使Eclipse使用Ant和javac,甚至使得问题制造者在IDE中显现出来(这是3.2的新特性),但是Eclipse的编译器能够提供更好的诊断和快速的回转。
JDT编译器最开始是为VAME开发的,后来修改之后用在Eclipse上。它是建立在被开发人员称作“编译三原则”的基础之上,这是仿照Asimov提出的机器人技术的原则:
1.正确性:编译器不应该与源程序相悖
2.有效性:编译器一定要快,除非速度与第一条相矛盾
3.友好性:编译器一定要帮助用户改正编程错误,只要这种帮助不与前两条相矛盾
正确性:当设计一个Java编译器时,不应该仅仅满足规范,而是规范的精神。不要仅仅考虑正确就行了。所以JDT的开发者这些年都在一直努力工作以满足 其他编译器已达成的共识,包括Sun公司的。Eclipse 3.2中正确性通过15000例单元测试来检验(相比之下,VAJ用了0例)。
有效性:数千个工程和数百万行的代码组成了标准。其中有许多个暗示,例如内存损耗应该是可猜测的和等高的。Eclipse 3.2以最优化的方式继续精炼这些。例如,开发者使用位操作重写了流程图,使得它的执行时间由20%减到4%。
友好性:报告错误也是一门艺术。行号并不足够。二次错误应该最小化。例如,假如你在某一行少写了一个分号,那么它应该不影响依靠于该行的其他行。改进的静态分析会发现错误的模式。Eclipse也检查Javadoc的正确性。
随着3.2的发布,Eclipse编译器是与Java-SE-6.0相容的。正确,尽管在Java 6还没有发布,但是Eclopse已经支持Java 6里的分类(categories)和StackMapTable属性。此外,编译器中有大量的新的诊断模式可以帮助你在执行程序之前发现代码里的错误。与有45种诊断模式的3.2版编译器相比,VAJ里只有三种诊断模式。包括检测在内的一些新特性如下:
●使用明显为null的变量
●检查不必要的null
●随机分配方法参数
●根据前面的情况来进入Switch语句
●使用non-generic(raw)类型
●不使用标签
●不必要的$NON-NLS$标签
上面的大多数默认情况下都是关闭的。你也可以通过@SuppressWarnings注释来使它们失效。
假如你想在Eclipse之外使用Eclipse编译器,那么从3.2开始有单独的下载。它的命令行参数与javac是相容的,并且下载只有1MB左右。因为Eclipse编译器是开源的,所以其他很多项目,如Apache Tomcat,在它们的软件中捆绑了它。