三大编程工具,到底哪个 JAVA 编程 IDE 最适合你?

文章 未结 置顶 0 2.98w
无法显示用户头像
作者:大何,责任编辑:大何 2 白银
发布于 2019-08-01
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 给你java学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/84cf95bd-e352-4c1c-a823-1d5e50506290.jpg]  每个Java开发人员都需要一个代码编辑器或IDE,可以帮助我们在编写Java、使用类库和框架的时候处理一些复杂、麻烦的场景,最常见的就是纠错。哪个编辑器或IDE最适合你,取决于几件事情:项目的性质,你在组织中的角色,团队使用什么开发过程,程序员的水平和技能。 另外考虑的是团队是否对工具进行了标准化,以及个人喜好。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/63043804-5315-45c5-abb0-f37ac6f6f3aa.jpeg]  最常用于服务器端Java开发的三个IDE是IntelliJ IDEA,Eclipse和NetBeans。 然而,这些并不是唯一的选择,也是时候也可以考虑一些轻量级的IDE。 下面通过在MacBook Pro上,对几个开源项目使用IntelliJ IDEA Ultimate 2016.2,Eclipse Neon Java EE和NetBeans 8.1 Java EE对比一下三种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。 更多一点的要求,包括能处理客户端和数据库层,支持嵌入式JavaScript,TypeScript,HTML,SQL,JavaServer Pages,Hibernate和Java Persistence API。 最后,Java IDE应该可以让你轻松编辑,构建,调试和测试系统。理想情况下,不仅可以完成智能代码,还可以重构和做代码质量检测。如果你采用了测试驱动的开发模式,IDE还需要支持你的测试框架。如果你的团队使用CI或BUG跟踪系统,则IDE最好连接到它们。如果你需要部署到容器和云上并进行调试,则IDE应该对此提供帮助。 IntelliJ IDEA img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/8d6de249-dcc2-4687-b7a8-689b9c6ee5c2.jpeg]  IntelliJ IDEA是首屈一指的Java IDE,两个版本:免费的社区版和付费的终极版。 社区版可用于JVM和Android开发。支持Java,Kotlin,Groovy,Scala;Android;Maven,Gradle,SBT; Git,SVN,Mercurial和CVS。终极版用于Web和企业开发的除了Git,SVN,Mercurial和CVS之外,还支持Perforce,ClearCase和TFS;JavaScript和TypeScript;Java EE,Spring,GWT,Vaadin,Play,Grails等框架; 还有数据库工具。 商业的终极版通过提高程序员的生产力来获得收益。对于学生,老师和开放源代码开发者而言都是免费的。 IntelliJ IDEA深入了解你的代码,开发人员的人体工程学,有内置的开发人员工具,通晓数种语言的编程经验。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/3f985383-bd7b-486d-a48f-288a3c8147e2.jpeg]  IntelliJ IDEA用类似lint的方式对Java代码做了静态分析,显示了一些警告和建议。 可以通过点击它们展开这些,如下所示。在许多情况下,还可以获得如何快速修复操作的选择列表。 深入分析代码 Java编辑器通常都会给出语法着色和简单的代码完成提示。除此之外,IDEA还能提供“智能完成”,这意味着它可以弹出在当前上下文中的最可能的相关符号或操作列表,并且按你的个人使用频率排列。更智能的是“链式完成”,它显示的是适合当前上下文的方法或getter列表。IDEA还能帮助完成静态成员或常量,import语句的导入。 Java代码经常以字符串的形式,把其他语言包括在代码中。IDEA可以将SQL,XPath,HTML,CSS或JavaScript代码的片段注入Java字符串文字。重构的时候,IDEA也能充分考虑到这些表示其他语言的字符串。比如,如果在JPA语句中重命名一个类,IDEA也能更新相应的实体类和JPA表达式。 当重构一段代码时,如果我们在其他地方也有这段代码的拷贝的话,通常我们也需要对这些拷贝进行重构。 IDEA Ultimate(终极版)可以检测重复和类似的片段,并一次性将同样的的重构应用于这些拷贝。 IntelliJ IDEA在读取代码以及你输入代码的时候,就在分析这些代码。它提供了一些指示来指出可能的问题。如果需要的话,也会列出快速修复这些问题的建议列表。 开发人员人体工程学 IntelliJ设计IDEA的时候,充分考虑了开发人员的工作流程中很重要的一点,也就是“在区域中”。上图所示的项目工具窗口通过简单的鼠标点击就会从视图中消失,你可以专注于代码编辑器。编辑时要做的一切都具有键盘快捷键,包括在弹出窗口中显示一些符号定义。学习捷径确实需要时间和实践当然不知道快捷方式,开发人员也可以轻松快速地学习使用IDEA。 IDEA的调试器设计非常友好。变量值在编辑窗口的右边展示,靠近相对应的代码。当时某个变量状态改变的时候,会高亮显示。 IDEA还集成了构建工具,单元测试的运行和覆盖率检查工具,以及内置的终端窗口。IntelliJ没有自己的性能分析工具,但它通过插件来支持。这些包括由前IntelliJ主要开发人员创建的YourKit和VisualVM。IntelliJ IDEA为大多数的版本控制系统提供了接口,包括Git,SVN,Mercurial,CVS,Perforce和TFS。你可以在IDE中管理所有的代码变化。IntelliJ IDEA还有个插件,可以把源代码块中的最后一次更改将作为注释显示在编辑器窗口中。 IntelliJ IDEA支持所有主流的JVM应用服务器,并且可以在服务器中进行部署和调试,为Enterprise Java开发人员解决一个痛点。IDEA通过添加Docker工具窗口的插件来支持Docker。 多语言编程 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 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/d512af0f-bd90-408c-ae66-1ba3c9c7df90.jpeg]  Eclipse是最流行的Java IDE,免费且开源。主要用Java编写,但同时它的插件架构允许Eclipse以其他语言进行扩展。Eclipse起源于2001年,是一个IBM项目,目的是开发一个可移植的基于Java的IDE来替代基于Smalltalk的IBM Visual Age系列IDE。该项目的重要目标是针对Microsoft,要打败微软在工具市场上的领导地位,引领大家到Java开发上来,因此要做的事情是要吞噬微软的市场,这就叫“Eclipse”。在中文里面,eclipse作名词用就是“月蚀”,“日蚀”的意思。做动词讲,就是“使黯然失色”,“蒙蔽”的意思。 Java的可移植性帮助Eclipse成功实现跨平台,Eclipse可以运行在Linux,Mac OS X,Solaris,Windows等。Java标准窗口小部件工具包(SWT)部分负责了Eclipse的外观UI。同样地,Eclipse也是它的性能依赖于JVM。早年因为硬件的低性能和JVM低版本,Eclipse有运行慢的名声。但即使在今天,还是可以感觉到慢,特别是当装了许多插件再进行更新的时候。 Eclipse中的一部分开销是因为内置的增量编译器。每当它加载一个文件,并且每当你更新你的代码,它就会运行。其实总的来看,这是一个很好的事情,因为但你在输入代码的时候可以及时提供错误提示。 一个Eclipse Java项目在独立于构建系统之外,维护着项目的内容模型。这个模型包含有关Java的类层次结构,引用和声明的信息。通过这个模型可以支持多个编辑和导航助手以及大纲视图。 Eclipse安装的时候,通常需要安装很多其他的包。包括一个最小化的Eclipse SDK和必要的插件。安装插件的时候很容易就会引入冲突,特别是新人。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/3db37e1e-5983-415a-9570-7cf5f4713294.jpeg]  从左到右,我们在Eclipse工作台中看到了四个窗格:Package Explorer、Java编辑器、Java类大纲和问题列表。这个图中加载到Eclipse中的项目是JUnit测试框架。窗格可以很容易地重新排列。 编辑、浏览、重构、调试 第一次使用Eclipse的人可能会感到困惑。你的第一个任务是适应Eclipse的工作空间、透视图和视图的概念体系,这些概念又跟你安装的插件有关。比如Java服务器开发,你可能使用Java,Java EE,浏览视图;package explorer视图;调试透视图;团队同步视角;Web工具;数据库开发视图;数据库调试视图。 插件生态系统是Eclipse的优势之一,也是有时候造成问题的原因之一。Eclipse市场中目前包含1700多个解决方案,提供了数以千计的插件。这些插件可能会,也可能不会像期望的那样工作(因为彼此的冲突)。尽管如此,Eclipse插件仍然支持超过100种编程语言和近200个应用程序开发框架。大多数主流的Java服务器也支持;如果你在Eclipse定义一个新服务器连接,你会看到一个供应商列表。下面你会发现大约30个应用服务器,包括9个版本的Apache Tomcat。商业公司倾向于把他们的产品在一起。例如在Red Hat JBoss中间件下面只有一个条目,包括WildFly,EAP服务器工具以及JBoss。 在Eclipse中,通常有不止一种方法来完成一个任务。例如,你可以使用package explorer或Java浏览视图来浏览代码。选择哪个方式取决于你自己的体验感受。 Java搜索支持查找Java包、类型、方法、字段。您还可以使用快速访问搜索,并使用快速视图来弹出类大纲之类的内容。 添加方法和生成类都有错误注释和内容辅助支持(其实其他两个IDE也支持)。可以从代码模板生成常见的代码模式,而Eclipse可以自动生成和组织import语句。在Eclipse中,重构支持23个操作,从常见的重命名操作到更晦涩的转换,从Martin Fowler的书中可以得到。重构不仅可以交互式地执行,还可以从重构脚本中进行。 Eclipse支持本地和远程调试(其实其他两个IDE也支持),假设您使用的是支持远程调试的JVM。调试的过程是标准的方式:设置断点,然后在调试视图的一个选项卡中查看变量。 Eclipse提供了丰富的帮助和文档。但经常会发现,文档中的图片可能并不匹配当前的版本,或者快捷键跟帮助中说的不太一样。这可能是开源项目的常见问题:文档会延迟几个月甚至几年才更新。Eclipse的生态系统非常庞大,所以在文档及时性上问题不小。 NetBeans img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/d1314487-d3e8-4ed5-b84d-36965550a9fe.gif]  NetBeans的履历挺完整的。最早是一个大学生项目,于1996年在布拉格诞生。在1997年成为一个商业产品,在1999年被Sun收购,然后在2000年开源。运行在Windows、Mac OS X、Linux和Solaris上。还有一个可移植的子集,可在支持Java的其他系统上运行。它的Java EE发行版本包含JavaScript和HTML支持、GlassFish和Tomcat,不支持PHP,C / C++ / Fortran,Groovy。在“All”下载包中有Grails。NetBeans也有插件,比Eclipse少,但是不像Eclipse的插件,NetBeans的插件不太可能相互干扰。 Oracle仍然在管理和贡献NetBeans开放源码项目,Oracle认为NetBeans是Java 8的官方IDE。(但是who care? ) NetBeans确实对Java 8有很好的支持,并且可以将旧代码转换为基于Java 8。它的编辑器、代码分析器和转换器可以帮助您升级您的应用程序,使用新的Java 8语言结构,如lambda、函数操作和方法引用。NetBeans 8中的JavaScript插件改进了对Node.js,以及一些新的JavaScript工具的支持,如Gulp和Mocha,还改进了对JavaScript Nashorn引擎的支持。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/33f6588f-17f0-4984-8d72-f722be57c8b1.jpeg]  这是NetBeans基于Maven的项目,与IntelliJ IDEA在图里打开的是同一个项目。请注意上下文菜单和它的重构子菜单中的功能。 “检查与变换”工具使你能够在代码库中运行检查,同时自动修复代码。但你最好在执行自动修复之前,确保已经检查了所有代码,并成功运行所有的单元测试。被自动“修复”可能会导致代码被还原或修复成你可能不期望的结果。 构建、调试、调优 NetBeans对Maven和Ant有很好的内置支持,还有一个Gradle的插件。已有的Maven项目现在被视为“本地”项目,这意味着只需打开它们,而不是导入它们。NetBeans还包含一个Maven依赖关系的性感(有用的)图形视图。 能感知语言的NetBeans编辑器在你输入代码的时候会检查错误,并通过弹出窗口的文档和智能的代码辅助完成功能来帮助你。NetBeans在做检查和给予提示的时候比Eclipse的停顿更少,比IntelliJ IDEA稍微多一些。NetBeans还提供全面的重构工具,以允许你重建代码而不会中断代码;执行源代码分析;并提供丰富的提示,以帮助你快速修复或增强代码。 NetBeans包含一个用于Swing GUI的设计工具,以前称为“Project Matisse”。 比较三大JAVA IDE 多年来,我个人依次使用了Eclipse、NetBeans和IntelliJ。每次换了IDE并熟悉之后,我都觉得我已经提高了工作效率。甚至有一次,我以为我已经坚定地转向IntelliJ。然而,有时我不得不返回另一个Java IDE。比如Eclipse曾经是唯一支持Android的IDE开发。(目前官方Android IDE,Android Studio是基于IntelliJ IDEA。) img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/9be8210f-5a7e-4e57-be0d-2351d583556f.jpeg]  我有一些全职的Java程序员朋友,他们都声称使用了这三大IDE中的每一个。IntelliJ IDEA的用户特别忠诚,就像忠诚于Visual Studio的 c++和c#程序员那样。他们声称只需要几周时间,生产率增长节约的成本就足够支付一年的授权费用了。NetBeans和Eclipse用户对他们的选择也是非常忠诚的,他们中的一部分人想不明白为什么有人会愿意为IntelliJ付费。所以,程序员其实是很固执的。 推荐JAVA新人不要用Eclipse,尽管它是最受欢迎的JAVA IDE,却有最陡峭的学习曲线。在日常使用和维护IDE随时都有可能出现一些混乱或困扰。许多透视图和视图提供了各种各样的功能,但是从一个角度切换到另一个视角可能会让你感到不适应,干扰你的思路。有些从Eclipse转IntelliJ的人宣称IntelliJ没有Eclipse用起来好用,其实只是操作习惯不同带来的不适而已,特别是快捷键。 Eclipse拥有所有IDE中最大的插件生态系统。但是很容易因为安装了一组不兼容的插件,变得不可用。有时候不得不删除Eclipse,用一个正式的发行包重新开始。 NetBeans对大多数人来说都很好,并且有一个很好的性能分析工具。我有时候会使用它,但我还是更喜欢IntelliJ IDEA终极版。 如果条件不允许,建议在NetBeans和IntelliJ IDEA社区版之间选择。如果你编写Java服务器代码很少或根本没有钱,NetBeans会是更好的选择。如果你是学生或开源项目开发人员,你就有权免费或以一个折扣价使用IntelliJ IDEA终极版。 轻量级的JAVA IDE 当大多数人选择IntelliJ,NetBeans或Eclipse,仍然存在一些情况下,你可能希望一个轻量级的IDE,甚至一个编辑器如Sublime Text、emacs或有Java支持的vim 。 假设需要一个轻量级IDE,可以考虑以下这些: img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/ebfd532e-ba0e-42f8-9d5c-efcf13641ff4.jpeg]  DrJava是一个免费的轻量级开发环境,用于编写Java程序。Rice大学专门为学生设计的,目前已有超过200万次下载。 DrJava旨在促进测试驱动的软件开发。它包括智能的程序编辑器,用于评估程序的交互面板,源码调试器和单元测试工具。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/d5896ddd-6f62-47ef-ae1a-12cecf7b02ff.jpeg]  BlueJ是为肯特大学(the University of Kent)为初学者设计的免费Java开发环境。 它由Oracle支持。 BlueJ具有比NetBeans或Eclipse等专业环境更小更简单的界面,还有一本关于使用BlueJ学习OOP的大学教科书。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/82a3c007-ce0d-41bd-9033-66203715ad0e.jpeg]  JCreator是Windows平台的轻量级Java IDE,出于性能考虑以C++编写。付费的Pro版本有一个调试器,Ant支持和代码向导; 免费的LE版本没有。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/665f56cc-f709-4b45-8d59-6a3b91799e35.jpeg]  Eclipse Che是一个基于浏览器和云的IDE以及程序员工作服务器。Che支持Java与C ++,JavaScript,Python,PHP,Ruby和SQL。 基于项目的选择Java IDE的建议 上面已经描述了三大Java IDE的显着特征,并提供了一些轻量级的替代方案。可以需要根据你个人开发需求和资源来衡量这些信息,以决定哪个IDE最适合。除了个人考虑之外,还有基于项目的考虑。在许多情况下,使用与开发团队其他部分相同的IDE比较好。但这也并不是一定必要的。我自己的团队就同时使用Eclipse和IntelliJ IDEA。可以通过一些插件来 保证统一的编码风格等问题。使用前者的人就是上文中说的那种“想不明白为什么有人会愿意为IntelliJ付费” 的人。 如果项目托管在GitHub,那么直接集成了GitHub的IDE能让你的生活更美好一点。另外IDE对构建系统的支持也是类似。当然三大IDE对Ant, Maven, and Gradle对此支持都很好。 对开发框架的支持也是要考虑的一个因素。例如,IDE知道JPA语句与实体类和JPA表达式(比如IntelliJ),那么你可能会花更少的时间在你JPA相关的代码。 与BUG跟踪系统的集成也是一个因素。你可以通过使用web客户端来访问JIRA,但是如果可以直接从IDE查看,会更爽。 结论 很多人会认为IntelliJ IDEA是Java ide中的凯迪拉克。虽然它不是像Eclipse或NetBeans那样的免费,但我相信提高生产率的代价是值得的。对于刚刚起步的开发人员,或者那些不愿意付费的开发人员,我推荐NetBeans在Eclipse之上。尽管Eclipse的插件生态系统曾经让它成为开发人员的首选,但是现在它已经变得笨拙,并且维护得很差。 轻量级的替代方案中包括两个为学生设计的方案。这些都是值得尝试的,如果你只是学习Java,如果你发现功能齐全的ide具有压倒性优势。如果你只是喜欢轻量级的开发环境,那么上面说到的几个都可以考虑。

声明:本文所有观点仅代表创作者本人,ECode1024系信息收集发布平台,ECode1024仅提供信息存储以及展示服务。若有侵权,请联系我们删除。
回复
  • 暂无任何回复,抢个沙发吧~~
推荐阅读
ECode1024 QQ交流群

打开手机QQ扫码加入 ECode1024 交流群

ECode1024 微信交流群

打开手机微信扫码关注 ECode1024 公众号