知识大全 Eclipse 3.2 Java开发新特征全面体验

Posted 版本

篇首语:做了好事受到指责而仍坚持下去,这才是奋斗者的本色。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Eclipse 3.2 Java开发新特征全面体验相关的知识,希望对你有一定的参考价值。

Eclipse 3.2 Java开发新特征全面体验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  引言

  Eclipse是流行的Java集成开发环境(IDE) 同时它还可以作为其它语言的开发环境(例如C++和Ruby)并且作为开发桌面或服务器应用程序的富客户端开发平台 如今 Eclipse开源社区拥有几十个开源项目 其范围从商务智能到社会网络等各个方面 Eclipse是非赢利性基金会的名字 由它全面负责这些工程

  Eclipse的每个版本在Eclipse的发行历史上都具有里程碑意义 在 年 月 日同时发行了共十个Eclipse工程 本文将集中探讨Eclipse 版本的IDE 特别是它的Java开发工具(JDT)

  JDT构成

  JDT的历史可以追踪到在 年用Smalltalk编写的Visual Age for Java(VAJ) 在VAJ中 一切都被编译并且全部被调入内存 这种设计不能进行比例缩放 难于扩展 从而使其很难进行再创造

  在 年 该IDE团队开始开发Visual Age Micro Edition(VAME) 这个工具开始完全用Java编写 并使用标准Widget工具箱(SWT)来实现其用户接口 当时的VAME的主要设计市场针对的是嵌入式空间中的开发与应用 为此 它使用了标准Java虚拟机 并且让工作区位于文件系统中 然而 文件和文件夹名字都是一些不能读的UUID

  与VAJ提供的编译器相比 VAME的增长式编译器快了将近十倍 这种模型是基于状态构建的(与当前的Eclipse形成对照 它是基于源码的) VAME有它自己的仓库系统Rapier 并且可以使用插件方式来对之进行扩展

  VAME一开始并没有吸引社区开发者的注意力 但是其中的确包含很多好主意 开发者以后使用之来开发了他们的下一代工程 Eclipse 在 年 Eclipse 发行 当时 它被描述为 一种通用的IDE 并不特别针对于什么内容 从一开始 Eclipse和JDT都被构建为一种针对其它开发工具使用的开发平台 工作区存储在磁盘上并且对其它工作区开放 Eclipse 中使用的不是一种专利式数据仓库 而是集成了CVS

  与其先行者相比 Eclipse还有另一个重要区别 它是开源的 而且其用户社区大量存在并且是自维持性的 Eclipse 大多数的新的和改进特征直接来源于Eclipse用户 自从 版本以来 共有超过 个请求被修改并得到增强 去粗存精 下面让我们来重点分析几个对于大多数Java开发者特别重要的特征

  Eclipse编译器

  JDT的强有力的特征之一是它的内植的完全兼容于javac的增长式Java编译器 尽管你能使Eclipse使用Ant和javac 甚至能够使问题标记显示于IDE中(这是 版本中的新特征) 但是 Eclipse编译器本身就提供了更好的诊断技术

  该JDT编译器最初的开发目的是针对VAME 以后针对Eclipse作了修改 这个编译器基于开发者称之的 编译三规则 并在模式上遵循了Asimov的机器人学规则

   正确性 一个编译器不能损害一个源程序

   高效性 除了与规则 相冲突的地方之外 一个编译器必须是快速的

   友好性 一个编译器必须帮助用户纠正编程错误 只要这样的帮助不与规则 和规则 相冲突

  正确性 当设计一个Java编译器时 你不仅必须遵循相应的规范 而且还要领悟该规范的精神 只考虑正确性是不行的 因此 JDT开发者一直在努力奋斗以与其它编译器基本保持一致(包括Sun的编译器) 在Eclipse (相比之下 在VAJ中根本没有进行单元测试)中仅针对正确性的检查就超过 多次的单元测试

  高效性 成千的工程和成百万行的代码往往是很经常的事情 这意味着 大量的问题 例如内存消耗必须能够被预测和加以分级 需要解决 Eclipse 使用回归式优化策略对此作了进一步提炼 例如 开发者可以重写一个流程图以便使用位操作 结果它从以前百分之 的时间消耗降低到了百分之

  友好性 报告错误是一种艺术 只用行号是不够的 二级错误被最小化 例如 如果你在一个文件中丢失了一个分号 它不会影响所有另外它所依赖的文件 改进的静态分析功能有助于发现错误模式 另外 Eclipse还能够对Javadoc进行正确性检查

  在 版本中 Eclipse编译器是Java SE 兼容的 Eclipse支持Java 分类和StackMapTable属性(甚至在Java 发行之前) 而且 该编译器提供了大量的新的诊断功能 有助于你发现存在于代码中的问题 与 版本的编译器(提供了 种诊断功能)相比 VAJ则仅提供了 种诊断功能 最新的一些诊断功能包括针对如下内容的检测

  · 使用显然是null的变量

  · 不必要的null检查

  · 到方法参数的偶然赋值

  · 切换大小写

  · 使用非泛型(原始)类型

  · 未使用的标签

  · 不必要的$NON NLS$标签

  在默认情况下 大多数的这些功能都处于off状态 当然 你还可以使用@SuppressWarnings注解来把它们设置为off状态

  从 版本开始 如果你想在Eclipse外部使用Eclipse编译器 你可以单独下载这样的版本 它的命令行兼容于javac 并且下载尺寸仅有 MB左右 既然Eclipse编译器是开源的 所以大量的其它工程 例如Apache Tomcat 就可以绑定到其它的软件当中

  编辑器

  任何开发环境的最基本的特征首先体现在编辑器上 一般地 你会把大多数时间花在其中 因此 编辑器必须是舒适 不唐突 强有力的 而且能够提供语法高亮显示 JDT使用它的Java模型来提供语法高亮显示功能 例如 它十分清楚类与实例变量之间的区别 因此它能以不同的颜色来标志它们 它甚至能够窥探源码注释来指出是否你调用的一个方法是过时的(或不推荐使用) 并且针对这一方法调用绘制一条线以强调这一部分代码值得注意

  在Java编辑器中的一个有用的命令之一是Ctrl+Space(内容助理) 不记得一个对象的方法有哪些或如何拼写一个类名吗?只要按下Ctrl+Space 那么Eclipse将在任何给定点提供一个有效的可能性列表 Eclipse 继续改进这个特征 例如 当你输入长标识符 例如 LongJavaName 时 现在你可以输入 LJN 并且按下Ctrl+Space 那么Eclipse就会知道你的意思 这称作 CamelCase pletion 当进行类型查找时 它也能工作(Ctrl+Shift+T)

  你是否厌烦了输入词语 例如 StringBuffer buffer = new StringBuffer(); ?现在 不必再重复了 在版本 中 你可以输入 SB Ctrl+Space Space Ctrl+Space = new Ctrl+Space (); 来代替 在此 我们使用了 次击键来代替了 次击键 想在一个变量名前加入一个不同的前缀吗?没有问题 只要在第二个Ctrl+Space之前输入它即可 例如 在 版本中 Element root +Ctrl+Space完全等价于 Element rootElement (见图 )

图 在 版本中内容助理(Ctrl+Space)继续得到改进 现在它支持CamelCase并且保存已经输入的字符

  下面一项特征更节省时间 在 版本中 Ctrl+Space将根据你的使用模式动态地重排它的建议 因此 例如 如果你总是把ArrayList实例赋值给List变量 那么ArrayList建议将排在第一位 以便你可以更快地选择它 现在 代码完成功能甚至能够工作于Javadocs中 因此你可以创建@links或常用引用而不必记住这些长名

  你是否提出过这样的问题 如果IDE足够聪明 能够找出在这一行中存在问题 那么它为什么不能改正它? 如今 Eclipse加入了一种特征 称为 Quick Fix 它可以实现这一功能 甚至更多 只要把你的光标放到有问题的一行代码上并且按下Ctrl+ 键 那么Eclipse将提供有关于修改它的建议

  Eclipse的每一个新的发行版本都加入一些新的修改 例如在版本 中 如果你得到关于使用原始类型的一个警告 那么你只要把光标放到那一行上 然后按下Ctrl+ 并且选择一种 修整 例如 Add type parameters 即可 还有 在 版本中 Quick Fix能够维护同一个文件甚至在多个文件中的许多问题 而不必单独处理每一个问题

  我想强调的另一个特征是 重命名类型 如果你象我一样 那么你会经常把你的变量和方法类似于你的类型命名 例如 如果你有一种Bar类型 那么你可能有一个变量fBar和一个方法createBar(见图 ) 问题是 如果你想把Bar重命名为另一个名 那么你还要修改其它大量的地方 但是 在 版本中 把具有相似名字的变量和方法统一地改变为你想要的新名字是极其简单的事情 这种神奇的重命名功能是 版本提供的我最喜欢的特征之一

图 当你在Eclipse 中重命名一类型时 它提供具有类似命名的重命名变量和方法

  运行

  在一些IDE中 你一般要设置一个工程为 主工程 并且使用一个全局的Run命令来运行这个程序 相比之下 Eclipse却不是以这种方式工作 在Eclipse中 你拥有一串启动配置 它们包含有关于运行 调试或测试代码的所有的详细资料 例如命令行参数 类路径 JRE版本 等等 在Eclipse 中 通过使用过滤和执行环境 管理启动配置更为容易

  过滤让你根据你感兴趣的内容进一步裁减配置列表 执行环境让你使用一种通用命名 例如 J SE 来描述一个Java运行时刻的能力 Eclipse能够选择满足或超出你指定要求环境的JRE版本

  你是否曾发现自己在开发期间不断地运行多个测试集?在 版本下 你可以在同一时刻运行多个测试集 并且你可以 回溯 和查看以前运行的历史 Eclipse 还支持最新版本的JUnit( 版本)

  团队开发

  你是否曾发现自己盯着一行代码发愣 谁加入的这些代码?为什么?Eclipse 能显示基于颜色的注解以便确定在当前文件中各部分内容的作者 这是通过读取CVS历史(见图 )实现的 把鼠标停在一个更改块上将显示开发者的姓名 相应的日期和注释信息 它还会高亮在文件的其它部分中作过相同修动的代码

图 CVS Quick Diff注解显示基于颜色的注解(在当前文件中各个部分的作者) 在某一部分上停留鼠标将显示该修改版本的细节

  我确信你也有这种体会 你调用其他人编写的代码 并且一切都能顺利工作 直到它们以一种新的版本出现 然后 你开始遇到一些过时的 警告 更有甚者 出现一些编译错误 直到你修改你的程序来适应其改变 好了 现在的Eclipse 引入了一种非常酷的特征 称为 重构脚本 极大地简化了这一过程

  当然 重构简单地意味着改变源码而不改变其行为 例如 也许存在拼错的字段 或者一个方法需要一个新的参数 Eclipse一直为自动化类似的修改提供良好的支持 而且 现在它还为消费者也提供了帮助

  你实现的每个重构操作都记入历史 Eclipse 让你把这一历史写入到一个脚本文件中 以后再使用之 你可以把这些脚本保存到CVS中或把它包括到一个JAR文件中 这样以来该JAR的用户就能够在他们得到一个新版本时 恢复 同样的改变 这与应用补丁是不同的 补丁只能针对导致它们的具体的源文件操作 而重构脚本却能够针对任意的使用重构API的源码文件操作

  维护一种不断增长的API是一项相当困难的工作 现在Eclipse使得这一工作容易多了 当你重命名一个方法时 Eclipse 能够保持旧的方法不动 把它标记为 过时的 然后对之进行重定向以便调用一个新方法 并制作一个重构脚本以自动地转换所有调用者 当它们导入你的新的JAR文件时

  代码清洁器

  一直以来 Eclipse具有一种相当强的代码格式化功能以帮助整个团队的代码格式化标准 在版本 中提供了一个新的 Clean Up 向导(见图 )进一步加强了这一功能 下面列出这个向导的一些选择实现功能

  · 删除不用的导入功能

  · 删除不用的private方法和构建函数

  · 添加缺乏的@Override和@Deprecated注解

  · 添加缺乏的$NON NLS$标签 或删除不必要的那些标签

  · 把所有循环转换成增强式的for循环

  · 把控制语句体转换成块

  · 删除不必要的强制转换

  · 把串行序列版本ID添加到Serializable和Externalizable类

   Clean Up 向导能够在一个Java文件 一个包甚至整个工程上运行

图 Clean Up 向导让你在整个工程范围内应用一致的标准

  结论

cha138/Article/program/Java/ky/201311/28961

相关参考

知识大全 扩展Eclipse的Java开发工具(三)

扩展Eclipse的Java开发工具(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何扩

知识大全 扩展Eclipse的Java开发工具(四)

扩展Eclipse的Java开发工具(四)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  怎样分

知识大全 Eclipse插件开发中的Java项目模型

Eclipse插件开发中的Java项目模型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jav

知识大全 Java开发工具Eclipse使用中报错的详细分析

Java开发工具Eclipse使用中报错的详细分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 新Eclipse插件—为Java 、PHP和Rails的应用添加云托管功能

新Eclipse插件—为Java、PHP和Rails的应用添加云托管功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 Eclipse 3.2冒险之旅

开源技术:Eclipse3.2冒险之旅  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要:  Ec

知识大全 开发一个调试 JSP 的 Eclipse 插件

开发一个调试JSP的Eclipse插件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JAVA调

知识大全 eclipse忽略svn目录文件编译

  使用eclipse进行开发时在编译JAVA代码时的原则是对于源代码目录中的所有*java文件编译成同名的*class文件而对于如abcjava中的内部类C编译成abc$Cclass对于所有非jav

知识大全 YAML,Java开发人员的新选择

超越XML和JSON:YAML,Java开发人员的新选择  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 Eclipse使用入门

Eclipse使用入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  目前Java开发领域的各种