Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言 Java 技术具有卓越的通用性高效性平台移植性和安全性, 广泛应用于 PC 数据中心游戏控制台科学超级计算机移动电话和互联网, 同时拥有全球最大的开发者专业社群
给你 java 学习路线: html-CSS-js-jq-javase - 数据库 - jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm
每个 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 对比一下三种 IDE
基本问题: 你需要 Java IDE 帮你做什么事情
首先, 你可能需要 IDE 支持 JAVA 8,Scala,Groovy, 其他 JVM 语言还需要支持主要的应用服务器和最流行的 web 框架, 包括 Spring MVC,JSF,Struts,GWT,Play,Wicket,Grails 和 VaadinIDE 应与开发团队使用的任何构建和版本控制系统兼容, 例如 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
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 深入了解你的代码, 开发人员的人体工程学, 有内置的开发人员工具, 通晓数种语言的编程经验
小编推荐一个学 Java 的学习裙 六五零, 五五四, 六零七 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
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 和 VisualVMIntelliJ 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
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 和必要的插件安装插件的时候很容易就会引入冲突, 特别是新人
从左到右, 我们在 Eclipse 工作台中看到了四个窗格: Package ExplorerJava 编辑器 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
NetBeans 的履历挺完整的最早是一个大学生项目, 于 1996 年在布拉格诞生在 1997 年成为一个商业产品, 在 1999 年被 Sun 收购, 然后在 2000 年开源运行在 WindowsMac OS XLinux 和 Solaris 上还有一个可移植的子集, 可在支持 Java 的其他系统上运行它的 Java EE 发行版本包含 JavaScript 和 HTML 支持 GlassFish 和 Tomcat, 不支持 PHP,C / C++ / Fortran,Groovy 在 All 下载包中有 GrailsNetBeans 也有插件, 比 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 引擎的支持
小编推荐一个学 Java 的学习裙 六五零, 五五四, 六零七 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
这是 NetBeans 基于 Maven 的项目, 与 IntelliJ IDEA 在图里打开的是同一个项目请注意上下文菜单和它的重构子菜单中的功能
检查与变换工具使你能够在代码库中运行检查, 同时自动修复代码但你最好在执行自动修复之前, 确保已经检查了所有代码, 并成功运行所有的单元测试被自动修复可能会导致代码被还原或修复成你可能不期望的结果
构建调试调优
NetBeans 对 Maven 和 Ant 有很好的内置支持, 还有一个 Gradle 的插件已有的 Maven 项目现在被视为本地项目, 这意味着只需打开它们, 而不是导入它们 NetBeans 还包含一个 Maven 依赖关系的性感 (有用的) 图形视图
能感知语言的 NetBeans 编辑器在你输入代码的时候会检查错误, 并通过弹出窗口的文档和智能的代码辅助完成功能来帮助你 NetBeans 在做检查和给予提示的时候比 Eclipse 的停顿更少, 比 IntelliJ IDEA 稍微多一些 NetBeans 还提供全面的重构工具, 以允许你重建代码而不会中断代码; 执行源代码分析; 并提供丰富的提示, 以帮助你快速修复或增强代码 NetBeans 包含一个用于 Swing GUI 的设计工具, 以前称为 Project Matisse
比较三大 JAVA IDE
多年来, 我个人依次使用了 EclipseNetBeans 和 IntelliJ 每次换了 IDE 并熟悉之后, 我都觉得我已经提高了工作效率甚至有一次, 我以为我已经坚定地转向 IntelliJ 然而, 有时我不得不返回另一个 Java IDE 比如 Eclipse 曾经是唯一支持 Android 的 IDE 开发(目前官方 Android IDE,Android Studio 是基于 IntelliJ IDEA)
我有一些全职的 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 Textemacs 或有 Java 支持的 vim
假设需要一个轻量级 IDE, 可以考虑以下这些:
DrJava 是一个免费的轻量级开发环境, 用于编写 Java 程序 Rice 大学专门为学生设计的, 目前已有超过 200 万次下载 DrJava 旨在促进测试驱动的软件开发它包括智能的程序编辑器, 用于评估程序的交互面板, 源码调试器和单元测试工具
BlueJ 是为肯特大学 (the University of Kent) 为初学者设计的免费 Java 开发环境 它由 Oracle 支持 BlueJ 具有比 NetBeans 或 Eclipse 等专业环境更小更简单的界面, 还有一本关于使用 BlueJ 学习 OOP 的大学教科书
JCreator 是 Windows 平台的轻量级 Java IDE, 出于性能考虑以 C++ 编写付费的 Pro 版本有一个调试器, Ant 支持和代码向导; 免费的 LE 版本没有
小编推荐一个学 Java 的学习裙 六五零, 五五四, 六零七 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
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 具有压倒性优势如果你只是喜欢轻量级的开发环境, 那么上面说到的几个都可以考虑
来源: http://www.jianshu.com/p/26b58f1371ea