我们向您展示由 JavaWorld 资源的程序员和编辑 Martin Heller 撰写的文章的改编版。您可能已经听说过最流行的三个 Java 开发 IDE。90% 的工业程序员使用 Eclipse、NetBeans 或 IntelliJ IDEA,这些 IDE 都有自己的优点和缺点。在本文中,我们将尝试描述它们,以便您了解哪一个适合您。当然,最好在工作中尝试这三种方法并找出最适合您的方法。任何评论都无法取代这一点。
图 1.IntelliJ IDEA 显示了基于 Java 代码统计分析的警告和猜测数量。您可以通过单击假设来更详细地研究它们,如图所示;在许多情况下,您会收到一份包含选择和更正选项的列表。
图 2. 从左到右有四个 Eclipse 工具栏:Package Explorer、Java Editor、Java Class Structure 和 Task List。图中加载到 Eclipse 中的项目是 JUnit 测试框架。面板可以轻松更换。
图 3. 这里,NetBeans 正在运行与图 1 中打开的 IntelliJ IDEA 相同的基于 Maven 的项目。请注意上下文菜单和重构子菜单中的增强功能
什么是开发环境?
非常简短的答案是,开发环境是一个程序或用于创建程序的多个程序。这个过程实际上包括编写代码、调试代码、启动代码以及与版本控制系统集成。如果说早期的开发人员经常使用简单的文本编辑器(有时甚至没有语法突出显示),例如记事本和命令行,那么现在他们最常使用一体化处理器、集成开发环境或 IDE。什么是IDE?
集成开发环境或英文集成开发环境——IDE——是一个包含软件开发工具的程序。通常,现代开发环境包括:- 具有代码突出显示功能的文本编辑器;
- 编译器或解释器;
- 类浏览器、对象检查器和类层次结构图;
- 装配自动化工具;
- 调试器;
- 与版本控制系统(Git)集成的工具;
- 简化图形用户界面设计的工具。
对 IDE 有何期望
对于“健康的 Java 开发人员”来说,现代 IDE 应该支持 Java 8、Scala、Groovy 以及他经常使用的其他 Java 虚拟机语言。对主要应用程序服务器和最流行的 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 持久性非常重要。 API。最后,合乎逻辑的是希望 IDE 能够让您编辑、创建、调试和测试系统,而不会产生不必要的压力。理想情况下,开发环境不仅支持智能代码完成,还支持智能重构和代码度量。在许多情况下,支持测试框架和存根会很有用。如果您的团队使用票证系统和 CI/CD,您需要 IDE 能够连接到他们。并决定是否需要在容器和云中进行部署和调试。我们只列出了基本的期望(也许您还有一些补充),现在让我们仔细看看我们的竞争对手。智能IDEA
从功能和价格来看,IntelliJ IDEA 有两个版本:免费的社区版和具有扩展功能的付费旗舰版。社区版专为 JVM 和 Android 开发而设计。免费版本支持 Java、Kotlin、Groovy 和 Scala;安卓; Maven、Gradle 和 SBT;可与版本控制系统 Git、SVN、Mercurial 和 CVS 配合使用。终极版适用于Web和企业开发。该版本的 IDE 不仅可以与 Git、SVN、Mercurial 和 CVS 配合使用,还可以与 Perforce、ClearCase 和 TFS 配合使用;您可以在其中使用 JavaScript 和 TypeScript 编写;当然,它支持 Java EE、Spring、GWT、Vaadin、Play、Grails 和许多其他框架。当然,我们离不开 SQL 和数据库处理工具。在制定定价策略时,指导该 IDE 开发人员的想法是,其商业版本(终极版)将在专业人士的计算机上占据一席之地,从而提高他们的生产力。如果一名 Java 程序员年收入 5 万美元(甚至更多),那么由于他的工作稍微加速,在付费 IDE IntelliJ IDEA(每年订阅 500 美元)上花费的投资回报将会很快发生。在接下来的几年里,企业的价格下降,初创公司和自由职业者的价格显着降低,而学生、教师、Java 冠军和开源开发人员的价格则完全免费。IntelliJ IDEA 以其深入的代码理解、智能的人体工程学设计、内置的开发功能和多语言支持而令人印象深刻。深入理解代码
语法突出显示和简单的代码完成对于任何现代 Java 编辑器来说都很常见。IDEA 更进一步,提供了“智能自动完成”功能。该术语意味着开发环境显示适用于给定上下文的最相关符号的列表。符号列表不仅取决于上下文本身,即“普遍接受的”上下文,还取决于开发人员的编程风格,以及他使用某些运算符的频率。“Chain Completion”甚至显示了当前上下文中通过方法或 getter 允许的适用符号列表。此外,对于静态成员或常量,IDEA 会自动添加任何必要的导入语句。在所有自动完成的情况下,IDEA 都会尝试在运行时猜测符号的类型,完善其选择,甚至在必要时应用类型转换。Java 代码通常包含其他语言的片段作为字符串。IDEA 可以将 SQL、XPath、HTML、CSS 或 JavaScript 代码注入到 Java 字符串文本中。从这个意义上说,IDE可以重构多种语言的代码。例如,如果您重命名 JPA 映射中的类,IDEA 将更新相应的 JPA 实体和表达式类。当重构一段代码时,开发人员有一个(非常自然的)愿望:该代码的所有重复项也被重构。IDEA Ultimate 可以查找重复项和相似的片段,并对它们应用重构。IntelliJ IDEA 在加载时解析代码并在您输入时直接解析代码。它指出了可疑的问题(如上图所示),并可选择提供对所发现问题的可能快速修复的列表。人体工学
IntelliJ IDEA 的设计目的是,一旦开发人员已经处于流畅的生产力状态,就不会使其脱离。单击左侧第一张图片中显示的“项目”窗口,只需单击鼠标即可消失,以便程序员可以将注意力集中在代码编辑器窗口上。对于编写代码时所需的所有操作,都有用于快速调用它们的组合键,包括在弹出窗口中定义符号。起初,所有这些组合都很难记住,但渐渐地你就会习惯它们,并且只会使用它们。然而,即使程序员不使用键盘快捷键,正如实践所示,他也会轻松快速地习惯在 IDEA 中工作。我想特别注意IDEA调试器:变量值直接显示在编辑器窗口中,位于相应的源代码旁边。当变量的状态发生变化时,突出显示颜色也会发生变化。内置工具
IntelliJ IDEA 为大多数版本控制系统提供统一的接口,包括 Git、SVN、Mercurial、CVS、Perforce 和 TFS。您可以直接在IDE中管理更改,非常方便。当我测试 IDEA 时,我希望将源代码中的最新更改作为注释显示在编辑器窗口中(例如,在 Visual Studio 中就会发生这种情况)。事实证明,IDEA 为此有一个特殊的插件。IDEA 还附带构建工具、测试运行时、覆盖工具和内置终端窗口。IntelliJ 没有自己的探查器,但可以使用插件将第三方探查器连接到它。例如,由 JetBrains 前首席开发人员创建的 YourKit,或 VisualVM(它是 NetBeans 分析器的重新打包版本)。当您没有源代码的类发生各种神秘的事情时,Java 中的调试可能会很痛苦。IDEA 包含针对此类情况的反编译器。Java 中的服务器端编程需要与数据库频繁交互,因此 IDEA Ultimate 程序员将欣赏使用 SQL 和数据库工具的便利性。但如果他们的功能对某人来说还不够,您可以购买带有内置 SQL IDE (DataGrip) 的 IDEA Ultimate 版本。不过,它会比常规 IDEA Ultimate 订阅稍微贵一些。IntelliJ IDEA 支持所有主要的 JVM 应用服务器,并允许您在这些服务器上进行部署和调试,这消除了所有 Java Enterprise 程序员所熟悉的困难。IDEA 还支持 Docker(通过一个插件将特殊的 Docker 工具窗口添加到开发环境中)。顺便说一句,IDEA 有大量插件。真正的多语言者
IDEA 扩展了对 Spring、Java EE、Grails、Play、Android、GWT、Vaadin、Thymeleaf、Android、React、AngularJS 等框架的代码支持。您可能已经注意到,并非所有这些都是 Java 特定的。IDEA 直接“理解”其他语言 - Groovy、Kotlin、Scala、JavaScript、TypeScript 和 SQL。如果您在此列表中没有看到您要查找的语言,目前有 19 个 IntelliJ 语言插件,特别支持 R、Elm 和 D。Eclipse集成开发环境
大约 10 年前,当被问及最好的 IDE 时,一位 Java 开发人员自信地回答:Eclipse。多年来,这个开发环境在 Java IDE 中自信地占据着主导地位。该环境完全免费、开源,主要用 Java 编写。然而,其模块化架构允许 Eclipse 与其他语言一起使用。Eclipse项目由IBM发起,于2001年出现。他们希望替换基于 Smalltalk 的 IBM Visual Age 系列开发环境。好吧,顾名思义,主要目标是超越 Microsoft Visual Studio(英文 eclipse 的意思是 eclipse)。Java 的可移植性有助于 Eclipse 成为跨平台环境:该 IDE 可以在 Linux、Mac OS X、Solaris 和 Windows 上运行。无论好坏,Java Standard Widget Toolkit (SWT) 至少部分负责 Eclipse 的外观。Eclipse 的性能(或者,正如一些好心人所说,缺乏性能)归功于 JVM。Eclipse 运行速度相当慢,因为它植根于相当旧的硬件和古老版本的 JVM。即使在今天,它看起来也很慢,特别是如果你附加了很多插件的话。Eclipse 的部分资源开销可归因于其内置的增量编译器,每当加载文件或更新代码时都会运行该编译器。这是一个有用的东西;它可以在输入文本时捕获错误。无论构建如何,Eclipse 项目都会维护一个内容模型,其中包含有关 Java 元素的类型、引用和声明的层次结构的信息。Eclipse 的当前版本称为 Neon (4.6.0)。我为 Web 开发人员安装了 Eclipse Java EE IDE(这不是唯一的选项,您可以选择其他选项)。它包含一个最小的 Eclipse SDK,并根据需要添加插件。顺便说一句,胆小的人不适合在这个 IDE 中使用插件。第三方插件经常相互冲突,尽管他们的官方规范对此只字未提。插件支持
Eclipse 的插件生态系统既是 IDE 的优势,也是其主要问题之一。正是由于插件的不兼容,有时整个程序集崩溃了,程序员不得不重新开始工作。目前有超过 1,700 个为 Eclipse 编写的插件,有官方的和非官方的,它们可能工作得很好,也可能不太好。Eclipse插件支持100多种编程语言和近200种应用程序开发框架。大多数 Java 服务器也受支持:如果您从 Eclipse 指定新的服务器连接,您将被带到供应商文件夹列表,其中您将找到大约 30 个应用程序服务器。仅 Apache Tomcat 就有多达 9 个变体。商业供应商倾向于将他们的解决方案捆绑在一起:例如,只有一个红帽JBoss中间件产品,在里面你会发现WildFly和EAP服务器工具,以及JBoss AS。编辑、重构和调试
您第一次使用 Eclipse 的经历可能会令人困惑,甚至令人困惑。第一步是设置 Eclipse 并习惯其工作区、视图和视图的概念架构。这都是由你安装的插件决定的。对于服务器端 Java 开发,您可能会使用 Java、Java EE 和 Java 浏览视图、Package Explorer 视图、调试视图、Web 工具命令同步视图、数据库开发视图和数据库调试视图。实际上,当您打开所需的窗口时,一切都有意义。Eclipse 几乎总是提供多种方法来解决特定问题。例如,您可以使用 Java 浏览视角查看代码。选择什么是品味和选择的问题。特殊的 Java 搜索允许您查找 Java 包、类型、方法、字段的声明、引用和出现。您还可以使用快速搜索访问和预览。可以从代码模板生成通用代码模式。Eclipse 中的 Java 重构支持 23 种操作,从常见的重命名操作到不太明显的转换(如 Martin Fowler 的书中所述)。Eclipse 支持本地和远程调试,前提是您使用支持远程调试的 JVM。调试非常标准:定义断点,然后在调试选项卡中查看变量。当然,您可以单步执行代码并计算表达式。Eclipse 拥有一个庞大的数据库,其中包含不同年代、价值和用途的文档。不幸的是,在该 IDE 中经常会发现说明中的图片与当前版本不对应,例如界面和按钮布局过时。不幸的是,文档更新迟到的问题对于任何源代码项目来说都是很常见的。网豆
NetBeans 于 1996 年作为布拉格的一个大学生项目开始。1997 年,IDE 成为商业产品,并于 1999 年被 Sun Microsystems(Java 之父)收购,并于次年推出开源版本。当前版本 8.1 可以在运行 Windows、Mac OS X、Linux 和 Solaris 的计算机上运行。那么,可移植包可以在任何存在 Java 机器的系统上运行。我自己下载了 Java EE 包,它是六个可能的下载包之一。该捆绑包支持 JavaScript 和 HTML、GlassFish 和 Tomcat,但不支持 PHP、C/C++/Fortran、Groovy 和 Grails:它们可以在“All Inclusive”包(或简称“All”)中获取。但是,如果我愿意,我可以随时通过选择适当的插件(或任何其他插件)来下载对上述语言的支持。NetBeans 的数量比 Eclipse 少,但它们通常不会相互冲突。今年秋天,Oracle(在收购 Sun Microsystems 后又收购了 NetBeans)决定将这个开发环境以及所有权利、源代码、商标、域名“netbeans.org”和许多其他基础设施转移到 Apache 软件基金会的旗下。元素。因此,尽管该系统此前拥有一定的相关权限,但该项目的未来仍然模糊。因此,NetBeans 在更新平台发布后几乎立即第一个获得了对 Java 8 的支持,并被称为“Java 8 的官方 IDE”。然而,发布一个月后,这一优势就消失了:那时其他 IDE 也获得了对 Java 8 的支持。不过,我想指出的是,NetBeans 对 Java 8 的支持确实很好,而且 IDE 非常适合将 Java 8 技巧融入“旧”代码中。它的编辑器、代码分析器和转换器将帮助程序员使用 Java 8 的典型构造(lambda 表达式、函数运算符和方法引用)升级代码。NetBeans 8 中的 JavaScript 插件在支持 Node.js 和 Gulp 和 Mocha 等最新 JavaScript 工具以及支持 Nashorn JavaScript 解释器方面做得很好。编辑和重构
NetBeans 编辑器支持语言,在您键入时检测错误,并通过工具提示和智能代码完成为您提供帮助。根据主观感觉,IDE 处理此任务的速度比 Eclipse 快,但比 IntelliJ IDEA 慢一些。此外,NetBeans 还拥有一整套重构工具(如图 3 所示),允许程序员在不破坏代码的情况下重构代码、执行源代码分析,并且还提供各种快速修复或代码扩展的提示。NetBeans 包括 Swing GUI 设计工具,以前称为“Project Matisse”。开发人员高度赞赏 NetBeans 7.1 中引入的自动化重构工具 Inspect & Transform。它允许您分析项目代码并提出改进建议。虽然就我个人而言,我更喜欢首先使用单元测试来测试我自己的所有代码,然后才运行可以进行根本性更改的工具。我曾多次遭受各种自动纠正,导致无法挽回的后果。构建、调试和分析
NetBeans 对 Maven 和 Ant 具有出色的本机支持,以及 Gradle 插件。当我发现 Maven 项目被系统视为“原生”时,我非常高兴。这意味着它们可以简单地打开而不是导入。NetBeans 还包含一个有吸引力(且有用)的 Maven 依赖关系图形显示。NetBeans Java 调试器还不错,但它有一些警告。单独的可视化调试器允许程序员截取用户图形界面的屏幕截图并探索使用 JavaFX 和 Swing 制作的应用程序的界面。NetBeans 分析器使 CPU 和内存的使用情况更加明显,并且具有查找内存泄漏的优秀工具。哪个 Java IDE 更好?三巨头对比
多年来,我按照列出的时间顺序使用了所有三个 IDE:Eclipse、NetBeans 和 IntelliJ IDEA。每次我切换到不同的 IDE 时,我都感觉我的工作效率提高了。但即使当我坚信 IDEA 是我的最终选择时,有时我也不得不返回到剩下的两个 IDE 之一。例如,当时 Eclipse 是唯一支持 Android 开发的工具(现在有 Android Studio,当前 Android 的官方 IDE,它基于 IntelliJ IDEA)。当然,这三种 IDE 都有其拥护者和批评者。我认识很多热爱 IntelliJ IDEA 的 Java 开发人员,以及忠实的 Visual Studio C++ 和 C# 粉丝。通常,这些人对自己的工作效率提高了感到高兴,并且在使用 IDEA 付费版本几周后就可以退还年度订阅费用。然而,NetBeans 和 Eclipse 用户也经常依赖于他们的工具,并想知道为什么其他程序员愿意为 IDEA 付费。我建议新的 Java 开发人员远离 Eclipse。尽管它仍然是最流行的 Java IDE,但对于初学者来说却很困难:无论是在系统部署还是在日常工作中,很容易迷失在 Eclipse 的丛林中。Eclipse 拥有所有 IDE 中最广泛的插件生态系统,并且也最有可能因安装一组不兼容的相同插件而崩溃。不幸的是,在使用 Eclipse 时,我不得不多次删除该 IDE 的另一个损坏的程序集并安装一个“干净”的捆绑包。NetBeans 对于大多数开发人员来说都很好,它有一个很棒的分析器,我有时会使用它。不过,我更喜欢付费购买 IntelliJ IDEA Ultimate。NetBeans 的未来仍不明朗。对于还没有预算购买工具的新 Java 开发人员,我建议根据他们的需求使用 NetBeans 或 IntelliJ IDEA Community Edition。对于那些正在编写 Java 服务器代码的人来说,第一个值得选择,但前提是您不属于可以免费或以巨大折扣获得 IntelliJ IDEA Ultimate 的人(学生或正在开发开源项目的程序员)项目)。“轻型”Java IDE
如今,大多数 Java 开发人员使用 IDEA、NetBeans 或 Eclipse,但有时需要更轻量级的开发环境,甚至需要支持 Java 插件的代码编辑器,如 Sublime Text、emacs 或 vim。对于那些寻找更轻松的东西的人,我在下面列出了一些合理的选择:- DrJava — небольшая бесплатная среда разработки. Её создали для студентов Университета Райса, и она стала довольно популярной: DrJava загрузor уже более 2 млн раз. DrJava призвана развивать разработку, основанную на тестировании (test-driven development). Среда содержит «умный» редактор codeа, панель взаимодействия для оценки codeа applications, отладчик уровня источника и инструменты модульного тестирования.
- BlueJ бесплатная среда разработки Java, созданная специалистами Кентского университета для начинающих программистов. Эта среда поддерживается Oracle. BlueJ отличается гораздо более лаконичным и простым интерфейсом, чем профессиональные IDE, такие, How NetBeans or Eclipse, и даже содержит специальный учебник по основам ООП.
- JCreator — ещё одна небольшая Java IDE для Windows, написанная на C++ (из соображений увеличения производительности). Платная version Pro оснащена отладчиком, поддержкой Ant и code wizards, ну а бесплатная version (LE) — нет.
- Eclipse Che — браузерная облачная IDE: Java, C++, JavaScript, Python, PHP, Ruby и SQL — список языков, которые она поддерживает. .
GO TO FULL VERSION