技术开发 频道

如何选择适合自己和团队项目的Java IDE

  【IT168 技术】每个Java开发人员都需要一个编程编辑器或IDE来帮助编写Java和使用类库和框架。决定哪个编辑器或IDE最适合你取决于几个方面,包括正在开发项目的性质,企业中的角色,开发团队使用的过程,以及作为程序员的水平和技能。其他考虑因素是团队是否对工具进行了标准化,以及个人偏好。

  最常用于服务器端Java开发的三个IDE是IntelliJ IDEA,Eclipse和NetBeans。他们并不是唯一的选择,文中也将提到一些轻量级IDE。

  首先,我在MacBook Pro上全新安装了IntelliJ IDEA Ultimate 2016.2,Eclipse Neon Java EE和NetBeans 8.1 Java EE。并且找了几个开源Java项目,便于在同一个项目中测试所有的IDE。

  你对Java IDE的需求是什么?

  至少,你希望你的IDE支持Java 8,Scala,Groovy和经常使用的任何其他JVM语言。你还希望它支持主要的应用程序服务器和最流行的Web框架,包括Spring MVC,JSF,Struts,GWT,Play,Wicket,Grails和Vaadin。你的IDE应该与开发团队使用的任何构建和版本控制系统兼容,例如Ant,Maven和/或Gradle,以及Git,SVN,CVS,Mercurial或Bazaar。此外,IDE应该能够处理堆栈的客户端和数据库层,支持嵌入式JavaScript,TypeScript,HTML,SQL,JavaServer Pages,Hibernate和Java持久性API。

  最后,你的Java IDE能轻松编辑,构建,调试和测试系统。理想情况下,你不仅需要“smart completion”完成,还需要重构和代码度量。如果你在做测试驱动开发,你需要支持测试框架和stubbing(桩)。如果企业使用工单系统和CI/CD,需要IDE可以连接到它们;如果需要部署容器和云并对其进行调试,那么IDE也可以帮到你。搞清楚你需要什么后,再选择适合你的IDE。

  IntelliJ IDEA

  IntelliJ IDEA是功能和价格都合适的Java IDE,它有两个版本:免费社区版和付费Ultimate版,包涵更多其他功能。

  社区版面向JVM和Android开发。它支持Java,Kotlin,Groovy和Scala,Android,Maven,Gradle和SBT;还有Git,SVN,Mercurial和CVS。用于Web和企业开发的Ultimate版本除了Git,SVN,Mercurial和CVS之外还支持Perforce,ClearCase和TFS;支持JavaScript和TypeScript;支持Java EE,Spring,GWT,Vaadin,Play,Grails等框架;并包括数据库工具和SQL。

  商业版能够进一步提高程序员的生产效率,需要订阅购买。在美国对于年收入为50-100K美元的Java开发人员而言,每年500美元的IDEA订阅购买,通过提升工作效率很快就能获得投资回报,对于初创公司和个人来说,价格很合适;对于学生,教师,则免费版本更为合适。

  IntelliJ IDEA对你的代码大有裨益;满足开发人机工程,内置开发工具和多语言编程。不妨继续深入了解它的功能。

你对Java IDE的需求是什么?
图1.IntelliJ IDEA显示了一些基于对Java代码的类似lint的静态分析的警告和建议,可点击展开。在许多情况下,你还会得到快速修复操作的选择列表。如嵌入式HTML标签的高亮显示,以及从顶部菜单中显示的广泛的功能。

  深入了解代码

  语法着色和简单的代码完成是Java编辑器的基础功能。IDEA不仅仅提供“smart completion”,它还可以弹出在当前上下文中适用的最相关的符号的列表。这些是根据你的个人使用频率进行排名。“hain completion”更深入,显示可通过当前上下文中的方法或getter适用符号的列表。IDEA还完成静态成员或常量,自动添加任何所需的import语句。在所有代码完成后,IDEA尝试猜测运行时符号类型,从中改善其选择,并根据需要添加类转换。

  Java代码通常包含其他语言作为字符串。IDEA可以将SQL,XPath,HTML,CSS或JavaScript代码的片段注入Java String文字。对于这个问题,它可以跨多种语言重构代码;例如,如果你重命名JPA语句中的类,IDEA将更新对应的实体类和JPA表达式。

  当你重构一段代码时,你通常想要做的事情之一是重构该代码的所有重复。IDEA Ultimate可以检测重复和类似片段,并将重构应用于它们。

  IntelliJ IDEA在加载时以及在你输入时分析代码。它提供检查以指出可能的问题(如图1所示),如果你愿意,可以列出对所检测到的问题的快速修复。

  开发人机工程

  IntelliJ设计了IDEA满足开发人员的思路-也就是“being in the zone(专注)”。单击窗口,图1所示的项目工具窗口就从视图中消失,以便你可以专注于代码编辑。在编辑时,你想要做的一切都有一个键盘快捷键,包括在弹出窗口中调出符号定义。虽然学习快捷方式需要时间和实践,但习惯成自然。即使不知道快捷方式,开发人员也可以轻松快速地学会使用IDEA。

  IDEA调试器的设计特别好。变量值直接显示在编辑器窗口中,位于相应的源代码旁边。当变量的状态改变时,其高亮颜色也改变。

  内置开发工具

  IntelliJ IDEA为大多数主要版本控制系统提供统一的接口,包括Git,SVN,Mercurial,CVS,Perforce和TFS。你可以在IDE中进行所有更改管理。当测试IDEA时,我希望源代码块中的最后一次更改将作为注释显示在编辑器窗口中(就像在Visual Studio中一样);事实证明IntelliJ IDEA提供了一个插件。

  IDEA还集成了构建工具,测试运行器和覆盖率工具,以及一个内置的终端窗口。IntelliJ没有自己的分析器,但它通过插件支持多个第三方分析器。这些包括由前IntelliJ主要开发人员创建的YourKit和作为NetBeans分析器的重新包装版本的VisualVM。

  当在没有源码的类中调试Java的难题时,可能会很痛苦。IDEA自带了一个反编译器。Java服务器编程通常涉及使用数据库,因此IDEA Ultimate包括SQL数据库工具。如果需要更多,则可以使用专用的SQL IDE(DataGrip)作为订阅购买的一部分,只比IDEA Ultimate订阅贵一点。

  IntelliJ IDEA支持所有主要的JVM应用程序服务器,并且可以部署到服务器并在其中调试。IDEA还通过添加Docker工具窗口的插件支持Docker。IntelliJ提供了很多插件,可访问https://plugins.jetbrains.com/?idea获取。

  多语言编程

  IDEA扩展了对Spring,Java EE,Grails,Play,Android,GWT,Vaadin,Thymeleaf,Android,React,AngularJS等框架的编码支持。不是所有的都是Java框架。除了Java之外,IDEA还可以理解许多其他语言,包括Groovy,Kotlin,Scala,JavaScript,TypeScript和SQL。如果你需要更多,目前有大约19个IntelliJ语言插件,包括R,Elm和D等。

  Eclipse IDE

  Eclipse是最流行的Java IDE,它是免费和开源的,主要用Java编写,但它的插件架构允许Eclipse在其他语言中扩展。Eclipse始于2001年,作为一个IBM项目,用基于Java的可移植IDE代替基于Smalltalk的IBM Visual Age系列IDE。该项目的目标是删除Microsoft Visual Studio,这是它名字由来。

  Java的可移植性帮助Eclipse跨平台:Eclipse在Linux,Mac OS X,Solaris和Windows上运行。但很多人认为Eclipse运行缓慢,尤其是在后台更新插件时,但也有人认为没那么差。Eclipse中的一部分开销是其内置的增量编译器,它在加载文件和更新代码时运行,如果出错就会提示。

  独立于构建系统,Eclipse ava project还维护其内容的模型,其中包括有关Java元素的类型层次结构,引用和声明的信息。可启用几个编辑和导航助手以及大纲视图。

  Eclipse当前版本是Neon(4.6.0)。我安装了Eclipse Java EE IDE,但还有许多其他安装包,包括安装最小Eclipse SDK和仅根据需要添加插件的选项。

Eclipse IDE
图2.从左到右,我们在Eclipse工作台中看到四个窗格:包资源管理器,Java编辑器,Java类大纲和问题列表。在这个图中加载到Eclipse中的项目是JUnit测试框架。窗格可以轻松重新排列。

  可扩展工具支持

  插件生态是Eclipse的优势之一,但也被诟病。因为Eclipse市场目前包含超过1700个解决方案,社区提供的插件可能未尽人意。不过,Eclipse插件包括对100多种编程语言和近200个应用程序开发框架的支持。大多数Java服务器也被支持:如果你从Eclipse定义一个新的服务器连接,你会得到一个供应商文件夹列表,在其下你会发现大约30个应用程序服务器,包括9个版本的Apache Tomcat。商业供应商倾向于一起提供他们的产品:例如,在红帽JBoss中间件下只有一个项目,其中包括WildFly和EAP服务器工具以及JBoss AS。

  编辑,浏览,重构和调试

  你对Eclipse的第一次体验可能令人困惑。首先是适应Eclipse的工作环境,视图的概念性架构,其功能由你安装的插件决定。例如,对于Java服务器开发,你可能使用Java,Java EE和Java浏览透视图;软件包资源管理器视图;调试透视,团队同步透视;网络工具数据库开发的角度;和数据库调试透视图。在实践中,这都由你来定。

  在Eclipse中,通常有多种方法来完成给定的任务。例如,可可以使用包浏览器和或Java浏览透视图浏览代码;你选择决定于喜好和经验。Java搜索支持允许你查找Java包,类型,方法,字段的声明,引用和出现。你还可以使用快速访问来搜索,并使用快速视图来弹出类似大纲轮廓。

  添加方法和生成类由错误注释和内容辅助支持。可以从代码模板生成常见的代码模式,Eclipse可以自动生成和组织导入语句。在Eclipse中重构Java支持23个操作,从常见的重命名操作到更复杂的转换,重构不仅可以交互地执行,而且还可以从重构脚本执行。

  Eclipse支持本地和远程调试,假设你使用的是支持远程调试的JVM。调试是相当标准的:通常设置断点,然后在调试透视图的选项卡中查看变量。你当然可以逐步完成你的代码和评估表达式。

  Eclipse有广泛的帮助文档。文档包括与当前版本的软件不匹配的图片,或者快捷键与帮助中提到的不同,这是开源项目的常见问题之一:因为文档可能在几个月甚至几年内落后于软件。与强大的生态系统比较而言,这样的影响很小。

  NetBeans

  NetBeans Java IDE于1996年在布拉格开始成为一个大学生项目,1997年成为一个商业产品,1999年被Sun收购,并于2000年开源。

  当前版本8.1可在Windows,Mac OS X,Linux和Solaris上运行,并且便携子集在支持Java的其他系统上运行。我下载了Java EE包,包括JavaScript和HTML支持,GlassFish和Tomcat,但不支持包括在“所有”下载包中的PHP,C/C ++/Fortran,Groovy和Grails。我可以很容易地添加这些插件和许多其他需要:NetBeans的插件比Eclipse少。仍然管理和贡献NetBeans开源项目的Oracle认为NetBeans是Java 8的官方IDE。

  NetBeans对Java 8有很好的支持,并且能够将旧代码转换为使用Java 8。它的编辑器,代码分析器和转换器可以帮助你将应用程序升级为使用新的Java 8语言结构,例如lambdas,功能操作,和方法引用。NetBeans 8中的JavaScript插件包括对Node.js的更好支持以及对较新的JavaScript工具(如Gulp和Mocha)的支持,以及对Nashorn(JavaScript解释器)的支持。

三个Java IDE的比较
图3.这是NetBeans使用IntelliJ IDEA在图1中打开的基于Maven的项目。注意上下文菜单及其重构子菜单中的大量功能。

  编辑和重构

  NetBeans编辑器在输入时检测错误,并帮助你完成文档弹出和smart completion。卡顿明显比Eclipse少,但略多于IntelliJ IDEA。NetBeans还提供了一系列重构工具(如图3所示),以允许重构代码;执行源代码分析;并提供了一组广泛的提示,以快速修复或增强代码。NetBeans包括用于Swing GUI的设计工具Matisse插件。

  Inspect&Transform工具使你可以在代码库中运行检查,同时自动修复代码。就我个人而言,我总是确保我已经检查所有的代码,并成功运行所有的单元测试,然后运行工具,可以进行扫描更改。

  构建,调试和分析

  NetBeans对Maven和Ant有很好的内置支持,并且是Gradle的一个插件。我很高兴地发现,现有的Maven项目现在被视为“本地的”,这意味着你只需打开它们,而不是导入它们。 NetBeans还包括一个有用的图形视图支持Maven。

  NetBeans Java调试器很不错。一个单独的可视化调试器允许你获取GUI快照,并可视化浏览JavaFX和Swing应用程序的GUI。NetBeans分析器非常适合理解CPU和内存使用,并且有很好的工具来查找内存泄漏。

  以上三个Java IDE的比较

  多年来,通过先后使用Eclipse,NetBeans和IntelliJ IDEA。每次切换,开发效率都会提高,直到我习惯了新的IDE。即使曾经我认为我已经切换到IntelliJ,但有时我不得不返回到其他Java IDE,例如在Eclipse是唯一支持Android开发的IDE期间。

  对于全职的Java开发人员而言,三个不同的IDE方阵,都有大批的忠实用户;IntelliJ IDEA用户认为付费试用也值得,因为开发效率得到了提升;而使用NetBeans和Eclipse的用户忠于他们的选择,不会为了IntelliJ而付费。当然关于使用友好度,性能也各有槽点。

  我倾向于建议新的入行的Java程序员不使用Eclipse,即使它是最流行的Java IDE,因为不论是日常使用,还是维护IDE都会给初学者带来困扰;虽然它功能和插件丰富,但换个角度看也会给初学者带来难度。

  NetBeans对于大多数人来说是足够好的,并且有一个不错的分析器。在使用它的同时,我仍然喜欢使用IntelliJ IDEA Ultimate。

  对于没有工具预算的新Java程序员,可以在NetBeans和IntelliJ IDEA Community Edition之间选择。如果你编写的Java服务器对工具的预算很少或没有预算,那么NetBeans可能是更好的选择,抑或使用IntelliJ IDEA Ultimate的免费或打折的版本。

  轻量级Java IDE

  虽然大多数人使用IntelliJ,NetBeans或Eclipse开发Java,但是仍然有些情况下,你可能需要轻量级的IDE,甚至是一个编程编辑器,如Sublime Text,emacs或vim,并且支持Java插件。如下工具可供选择:

  DrJava是一个免费的轻量级开发环境,用于编写Java程序。专为学生使用,它目前有超过200万的下载量。DrJava旨在促进测试驱动的软件开发。它包括一个智能程序编辑器,用于评估程序文本的交互窗格,源级调试器和单元测试工具。

  BlueJ是一个免费的Java开发环境,专为初学者使用,它由Oracle支持。BlueJ有一个比NetBeans或Eclipse等专业环境小得多且简单的界面,还有一本关于使用BlueJ学习OOP的入门教材。

  JCreator是一个用于Windows的轻量级Java IDE,由于性能原因用C++编写。付费Pro版本有一个调试器,支持Ant和代码向导;而免费的LE版本没有。

  Eclipse Che是一个基于浏览器和云的IDE和开发人员工作环境。Che支持Java以及C++,JavaScript,Python,PHP,Ruby和SQL。

  基于项目的Java IDE选择

  除了个人考虑之外,还有基于项目的考虑。在许多情况下,易用,与开发团队相同的IDE,也要考虑。例如,如果一个团队项目托管在GitHub上,那么如果你的IDE支持GitHub,则容易很多。可以始终使用GitHub客户端或git命令行,并来回切换到IDE。另一方面,你真的希望IDE支持任何构建系统而被所有团队使用吗?例如,如果是Maven项目,不想在Ant中重新构建系统以进行本地测试。幸运的是,以上三个Java IDE都支持Ant,Maven和Gradle,无论是开箱还是插件。

  使用IDE来支持项目的标准JRE版本,如果有一个版本不匹配,你会遇到的bug,而其他团队无法重现。幸运的是,JRE不匹配通常是配置错误,而不是IDE中缺少支持所导致的错误:当IDE尚未发布新Java版本的更新时,会出现异常情况。如果你IDE对项目中使用的框架和技术有强大的支持,那么它将大有帮助。

  结论

  总之选择IDE要因个人喜好、擅长,团队需要,项目匹配度,提升开发效率,选择全功能还是轻量级环境,还有有无预算等等因素而定。

0
相关文章