【高软作业2】:Java IDE调研分析
一 序言
随着软件项目开发需求的增多,拥有一款优秀的、顺手的IDE(Integrated Development Environment)对程序员来说显得格外重要。本文就Java程序开发,选择了3款IDE来做调研分析,其中两款比较有代表性的是:Eclipse、IntelliJ IDEA,另外一款是我个人比较喜欢的轻量级编辑器:Sublime Text 3。下面是这些工具的下载地址:
- Eclipse:https://www.eclipse.org/downloads/
- Sublime Text:http://www.sublimetext.com/3
- IntelliJ IDEA:https://www.jetbrains.com/idea/download/#section=windows
二 简介
1. Eclipse
- Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。
- 从2006年起,Eclipse基金会每年都会安排同步发布(simultaneous release)。 每个版本通常在6月份发布,并在9月份(* .1),12月份(* .2)和3月份(* .3)发布后续更新版本。在Neon(4.6)之前,每个发行版在9月份(SR1)和次年2月份(SR2)发布了两个服务版本。
2. IntelliJ IDEA
- IntelliJ IDEA是一种商业化销售的Java集成开发环境(Integrated Development Environment,IDE)工具软件,由JetBrains软件公司(前称为IntelliJ)发展,提供Apache 2.0开放式授权的社区版本以及专有软件的商业版本,开发者可选择其所需来下载使用。
- 最初版于2001年1月时推出,当时是少数使用前阶代码浏览及代码重构的Java集成开发环境之一。在2010年的Infoworld报告中,比较当时市面上的主流Java集成开发环境,包括:Eclipse、IntelliJ、NetBeans、JDeveloper,IntelliJ获得该媒体实测中的最高评比。
3. Sublime Text
- Sublime Text 是一个代码编辑器,由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。
- Sublime Text 为收费软件,建议有能力的人付费使用,以支持开发者。不过不购买也可以一直使用。
4. 版本发布史
我从官网中获取各IDE版本发布历史,统计在一张表上,由于发布规格不一样,所有只用了数字代号来表示。如下:
从上表可以看出:
- Eclipse发布比较稳定,每年都会出一个版本(包括后序更新版本)。
- IntelliJ IDEA出现的最早,前期发布稳定,后期版本迭代很快。(个人觉得2015、2016、2018这3年发布的版本号和发布时间有点混乱,但官网就是这么写的)
- Sublime Text出现的最晚,Sublime Text 2在2013年后就没有更新,转向了Sublime Text 3。其发布的显著特点就是:更新快!
三 比较
1. 使用前准备
不像Eclipse和IntelliJ IDEA,Sublime Text 3初始是一个文本编辑器,要让它变成Java IDE需要安装些插件。教程可参考:https://blog.csdn.net/coderbean/article/details/50582624
2. 功能对比
注:我并不是这3款IDE的资深用户,下面所列举的功能只是基于我个人使用经验所总结的,而事实上它们具备的功能要比我列举的更全面。对于模糊不清的东西,我也尽量去查阅资料和亲自实践来确保其正确性,即使是这样,依旧会有错误的地方,请谅解。
同样是✔,但性能可能不一样,这里我不对各功能进行性能测试。(时间成本太高)
从上表可以看出:
- 如果要开发中大型的Java项目(如:JavaWeb项目),还是选择像Eclipse、IntelliJ IDEA这类重量级的IDE。Sublime Text 3虽然可以通过安装各类插件来构造一个IDE,但这过程过于繁琐,而且构造好的IDE所具备的功能估计没有上述两款的全面。
- Eclipse和IntelliJ IDEA的功能都很全面,看起来IntelliJ IDEA更胜一筹。“智能代码”可以帮助程序员写出更加精简和高效的代码,而“代码排版定制”可以打造自己的代码排版风格。
3. 占用资源
好多网友评价Eclipse太卡,而IntelliJ IDEA吃配置。有朋友回答:“IDEA使用的是内存空间,会把建立的索引都保存在内存中,而实际占用的CPU少;Eclipse使用的内存空间少,但占用的CPU多,这就是导致Eclipse比较卡的原因。”
这里我列出这3款IDE在我电脑(Win10 )上运行时所占用的CPU资源和内存资源。测试代码就是:while (true) System.out.println("hello world!");我是让3个IDE同时运行测试代码,没有排除其他影响因素,而且测试也比较单一,所以测试结果并不严谨。可以很容易看出,IntelliJ IDEA 果然很占内存。
四 生态区
1. 用户支持
良好的用户支持是促进IDE不断更新和完善的重要条件(我自己说的)。用户越多,软件Bug被发现的几率就越大,进而加速软件完善。此外,开发出的软件被众人肯定和使用,这对开发者来说是极大的满足和鼓舞。如此一来,就会形成软件迭代更新的良性循环。
下面是我在网上搜索到的近期的一些统计数据(点击图片可以查看详细信息):
从这些数据中,我们可以看到:
- 对于Java开发来说,Eclipse和IntelliJ IDEA的支持度还是很高的,而Sublime Text 我更倾向于把它定义为文本编辑器。
- 在中国使用Eclipse的开发者占据更大的比重,可能是因为种种原因吧,比如:Eclipse开源且免费、项目组开发工具未更新、大家不愿跳出熟悉的环境去尝试新事物等。
- Sublime Text 虽然在Java开发方面不行,但使用者也很多,这说明也有适合它的开发项目,比如:前端开发。
2. 开发者社区
- Eclipse 是开源项目,拥有庞大的开发者社区致力于项目与插件的开发,其中不乏专业的开发者社区,如:IBM developerWorks、Oracle Eclipse 开发人员中心,还有来自世界各地的开发者齐聚GitHub为其贡献自己的知识和才华(Eclipse GitHub)。
- IntelliJ IDEA
- 旗舰版:由于旗舰版并不开源,开发者基本都是JetBrains公司的员工(JetBrains Product Support)。
- 社区版:社区版是开源且免费的(只是功能不如旗舰版强大),除了JetBrains的员工外,还有来自各地的开源爱好者参与开发(JetBrains GitHub)。
- Sublime Text 虽然不是开源的,但其社区倒是很活跃(众多插件开发),如:官方论坛(Sublime Forum)、SublimeText GitHub 等。
五 结尾
1. 问:你第一次用这些软件是什么时候?当时是怎么得到它们的?你现在还在使用它们吗?
- 第一次使用Eclipse是大一下学期,当时由于课程需要,所以下载了该IDE(官网下载)。
- 第一次使用Sublime Text是大二的时候,当时看到同学在他的Mac上调出这个软件,然后就被这个软件的黑色主题和高亮语法吸引到了。于是我就去官网下载了(当时是ST2),顺便找了个注册码。
- 第一次使用IntelliJ IDEA是在大四实习期间,只是出于好奇下载来试试看。也是去官网下载了旗舰版,然后在网上找了序列号,不过现在过期了。
- Eclipse和Sublime Text 我到现在还在使用,IntelliJ IDEA是在老师布置了作业后去下载来玩玩的。
2. 问:你如何精通这些软件?它们给你什么好处?坏处?
- Emmmmm.... 对于这些软件的使用,我连熟悉都谈不上,更不用说精通了。我只是个满足于实现目前需求的小白用户。
- 给我的好处,当然是为我编程开发提供支持。全面而强大的功能帮我节省了不必要的时间,如:查看JDK源码、查找/替换、调试代码等。
- 给我的坏处,“路径依赖”,就是当人们熟悉了一种事物后,就很难跳出那个熟悉的环境去接触新事物。我现在编辑基本都是vim模式,如果一个IDE不支持vim,我应该不会考虑使用它。正因为太依赖于vim,才导致我在百度搜索输入错字时,潜意识的就去按Esc,然后按daw。其实这就和你在和朋友QQ聊天时,时不时ctrl+s保存一样。
3. 问:这类软件再过10年、20年还会存在吗,为什么?
- 再过10年,我觉得还会存在的,因为人工敲代码这种形式的编程还存在,所以IDE也会存在。
- 再过20年,我不确定。即使存在,编程形式和现在应该也有很大的不同。会不会在一些领域,我们把所有可能的工作都模块化,到时候直接配置即可?或者是人工智能编程?语义识别(语音编程)?
4. 问:面向未来,你觉得这些软件还需做哪些改进?
- 外观,要符合程序员的审美主题;内在,功能强大、运行高效、灵活配置;能开源的尽量开源。
- 结合人工智能、机器学习,打造个性化IDE。就像输入法可以把你常用的字词放到前面,根据你的输入习惯来猜测你要输入的字一样,如果一款IDE可以采集用户操作信息,进行分析,然后给出适合该用户的反馈,变成该用户的专属IDE。
- 配置信息线上同步。每次重新安装软件都要重新配置一遍,这样很烦。可以像众多浏览器一样,让用户登陆账号,然后记录用户的配置信息(快捷键、插件等),等用户换了一台电脑,安装该软件后可以马上得到同步。
【高软作业2】:Java IDE调研分析的更多相关文章
- 【高软作业4】:Tomcat 观察者模式解析 之 Lifecycle
一. 预备 如果你是Windows用户,使用Eclipse,并且想自行导入源码进行分析,你可能需要:Eclipse 导入 Tomcat 源码 如果你已遗忘 观察者模式,那么你可以通过该文章回顾:设计模 ...
- 【高软作业3】:原型化系统 DevTools
原型化系统:DevTools 密码:lcx 1. 这是一个什么样的平台? DevTools,可译为:开发者工具库.初衷是聚集各类开发工具,方便开发者获取:此外,大家可以分享自己的工具库与工 ...
- Java IDE选择,常用Java IDE排行榜
Java IDE众多,java开发主要用.最多用.国内较流行.本人常用的java IDE如下: 开发java大项目的IDE一般都用eclipse或netbeans(几乎我所在的公司都是在用eclips ...
- 《ABCD组》第四次作业:项目需求调研与分析
<ABCD组>第四次作业:项目需求调研与分析 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https:// ...
- 【1414软工助教】团队作业10——复审与事后分析(Beta版本) 得分榜
题目 团队作业10--复审与事后分析(Beta版本) 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1:团队展示 团队作业2:需求分析& ...
- 阅读作业2&CI/CD调研
说明 项目 内容 这个作业属于哪个课程 2021春季软件工程 (罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 初步获得软件工程师的能力 这个作业在哪个具体方面帮助我实现目 ...
- 性能分析之-- JAVA Thread Dump 分析综述
性能分析之-- JAVA Thread Dump 分析综述 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工 ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- 最好的Java IDE之争:Eclipse PK IntelliJ IDEA
话说,好马配好鞍,一个好的工匠,必定要有一套好的工具才能打造出最好的工艺给大家.之前,Plumbr团队里的所有成员都使用Eclipse编辑器,而如今,大家都成为IntelliJ IDEA用户.那么,到 ...
随机推荐
- JS线程及回调函数执行
JS是单线程的程序,在某些方面来讲并不是十分准确.在浏览器的内核里面有很多的模块,比如js的解释执行的模块,html.css的处理模块,渲染模块等,多数模块是单线程执行的,但是有几个模块是多线程的,比 ...
- 关于High CPU及基本排查
在实际的网络中,总会存在设备出现high CPU的情况,这种情况下,往往会让网络管理员比较着急,因为如果CPU持续high,可能导致设备的性能降低,严重还可能导致设备down掉. 本篇记录,主要记录一 ...
- WLC-WLC升级(以2504为例)
1.WLC升级需要按照升级路径来操作,低版本到高版本的跨度太大,往往需要升级到中间版本,有时候还涉及到FUS. 2.我们升级,一般使用的笔记本上运行的TFTP/FTP server. 需要注意:笔记 ...
- jQuery结合CSS实现手风琴组件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 01背包第k最优解
附题目链接:Bone Collector II Input The first line contain a integer T , the number of cases.Followed by T ...
- CSS Sprite精灵图如何缩放大小
transform:scale( x ): 语法为:transform: scale(x,y). 同时有scaleX, scaleY专门的x, y方向的控制. 例如:transform: scale( ...
- 奖学金(0)<P2007_1>
奖学金 (scholar.pas/c/cpp) [问题描述] 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分 ...
- 数字统计(0)<P2010_1>
数字统计 (two.pas/c/cpp) [问题描述] 请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数. 比如给定范围[2, 22],数字 2 在数2中出现了 1次,在数 12 ...
- 关于自学java的内容及感受
这周自学了关于java输入的知识:java输入的方法与c++和c有些不同,他需要在开头加一个import连接系统的包,才能进行输入语句的编写. 自己编写了一点简单的输入的程序: package mod ...
- pycharm自定义代码段
PyCharm使用技巧:Live Templates(快速输入自定义代码片段):链接