Eclipse简介和安装
Eclipse(日蚀)是一款基于Java的开源RCP(富客户端)平台,由于其丰富的插件生态,我们可以将Eclipse组装成适合各种编程语言的集成开发环境(IDE),也可以基于平台开发我们自己的功能插件。除了作为IDE,市面上还有许多其他我们耳熟能详的软件也是基于Eclipse开发的,比如XMind8、DBeaver等。
Eclipse最初是由IBM公司开发的Java集成开发环境,在2001年捐献给了开源社区,之后该项目一直由Eclipse基金会管理,2003年的Eclipse3.0基于OSGi衍生为了RCP富客户端平台。

Eclipse和IntelliJ IDEA对比
如果作为JavaEE集成开发环境比较,毫无疑问IntelliJ IDEA体验比Eclipse好得太多,然而IDEA是价格不菲的商业软件,安装破解版则要承受安全、法律双重风险!Jetbrains公司近年来反破解手段花样频出,显然,他们和微软等对破解软件的态度大不相同!
Eclipse虽然有诸多缺点,比如运行卡慢、经常报错、UI卡死甚至崩溃、界面设置乱七八糟、默认设定各种闪烁乱码问题、插件架构过度设计、插件安装极为缓慢等。但从功能上,还是勉强能和IntelliJ IDEA相提并论的!
Eclipse版本选择
Eclipse本身是一个基础平台,安装不同的插件就能组装成各种不同的版本,其中有几个发行版是最为常用的。
- SpringToolSuite https://spring.io/tools:这个版本是Spring官方组装的一个发行版,默认安装了Java和Spring插件,由于不需要再安装什么插件,适合水平参差不齐的团队选用。
- MyEclipse https://www.genuitec.com/products/myeclipse/:Genuitec团队基于Eclipse开发的商业版本,收费。如果打算使用商业IDE推荐采购Intellij IDEA,不建议使用MyEclipse。
- Eclipse IDE for Enterprise Java and Web Developers https://www.eclipse.org/downloads/packages/:Eclipse官方提供的发行版,曾经Eclipse官方JavaEE版是个十分不错的选择,但自从Eclipse几年前开始刷版本号,此类版本变得十分不稳定,而且集成了大量用不到的插件导致IDE又卡又慢还充斥着报错,不推荐使用。
- Eclipse Theia/Eclipse Che:这些属于云IDE,和Java版的Eclipse是不相关的项目,目前功能还不能和本地IDE相提并论,但它们在快速发展中,国内一些厂商“自主研发”的云IDE其实就是来源于此类项目。
Eclipse基础平台安装

Eclipse官方网站推荐使用Eclipse Installer安装Eclipse软件,然而这个软件Bug频发、极为难用,强烈不推荐使用;Download Packages能够直接下载预置插件的Eclipse整合包,但里面经常包含很多我们不需要的插件,而且还可能有兼容性问题,也不推荐使用。
推荐方式是直接安装不带有任何插件的Eclipse基础平台,地址:https://download.eclipse.org/eclipse/downloads/

建议直接选择最新Build,然后找到Plateform Runtime Binary并下载使用。下载时,注意选择使用国内镜像地址。
Eclipse插件组装
在一切开始之前,我们先需要为Eclipse设置网络代理。Eclipse的插件架构决定其在安装插件时,会通过网络访问大量的地址和小文件,而且这些数据都在国外,在国内使用Eclipse,如果不通过代理安装插件是极为困难的。
注:企业内部使用Eclipse,可以通过自建p2仓库解决。
点击Window -> Preferences,选择General -> Network Connections,配置HTTP、HTTPS、SOCKS5代理,并设置代理配置为手动模式。

点击Help -> Install New Software,选择相关版本的官方仓库站点。Eclipse自带的插件集如JDT、CDT等,都在这个站点内,我们根据需要进行选择。

注:
- 如果不知道要安装哪些插件,可以参考之前Eclipse官网中,整合包的features列表,挑选其中我们需要的安装,没必要全选。
- 最好选装
Market Place Client插件商店客户端,很多第三方插件都在插件商店注册了仓库地址,使用该客户端能够很方便的安装这些第三方插件。
其他推荐插件(Java)
在Java开发中,除了Eclipse的官方插件集,还推荐安装以下插件:
- Indent Guide:缩进插件,能够在编辑器中显示一条竖线,标明对齐的缩进代码
- ANSI Escape in Console:Eclipse默认控制台不支持彩色显示,该插件几乎是必装的
- SpotBugs:代码静态分析插件,很多企业团队默认要求安装,和FindBugs类似,二者均可使用
- Checkstyle Plug-in:代码风格检查插件,很多企业团队默认要求安装,尤其是水平参差不齐的团队
- Spring Tool Suite 4:Spring的官方插件,Spring/SpringBoot开发必备
- Lombok:Lombok语法支持插件(个人不推荐在水平参差不齐的团队中启用Lombok)
- Enhanced Class Decompiler:class反编译器,用于Jar包没有源码时逆向调试等情况,Java开发必备
- JRebel:JVM热更新插件,能极大提高生产力,注意是收费商业插件,但非商业用途可以申请免费使用
- Buildship Gradle Integration:Gradle官方插件,使用Gradle的工程必装
- Subclipse:Eclipse的SVN插件,如果使用SVN进行版本控制的团队需要安装,不过个人还是推荐尽量用Git
- WindowBuilder:Swing/SWT设计器,开发此类图形界面推荐安装
- e(fx)clipse:JavaFX开发插件,支持FXML高亮,关联SceneBuilder软件等功能,开发JavaFX程序推荐安装
注意:
- 上述插件可以在Market Place客户端中搜索。
- Lombok插件比较奇葩,其注册在Market Place中的插件版本不好用,只能去其官网下载jar包,然后运行jar包安装。
必要设置
有关主题、字体、代码格式化器等配置,Eclipse中和大多数IDE都差不多,这里不多介绍。Eclipse默认有很多不合理设定,我们可以通过设置让其更加顺手,以下主要介绍这些设定。
代码提示修正
Eclipse默认情况下,使用Alt+/触发代码提示,这个键位非常奇葩,个人建议修改为Ctrl+Space。设置位置在General -> Keys面板,搜索Content Assist命令。

Eclipse默认只有.字符后会自动触发代码提示,可能是出于性能考虑,如果我们电脑的性能不错,触发字符建议改为.abcdefghijklmnopqrstuvwxyz。设置位置在Java -> Editor -> Content Assist面板。

注:该处修改后务必增加自动提示延时,这里Eclipse似乎存在bug,如果延时使用默认的0必卡死。
自动补全修正
Eclipse默认情况下,按=、Space、Enter都会触发自动补全选中(就是弹出提示菜单时,选中菜单项)。比如你本想写这样的代码:
String name = null;
结果在你输入name时,触发了代码提示nameString,再按下Space时,自动选中了该项,你打出来的代码就成了如下状况:
String nameString = null;
这显然不是我们想要的效果,你难道还想打完之后回去删几个字符嘛?这个功能简直智障一样。我们勾选如下图配置,即可改为只有Enter键触发自动补全选中。

关闭自动弹出Console功能
Eclipse有一个闹心的特性,程序启动着的时候,如果有控制台输出(stdout或stderr),选项卡就会自动跳到Console上,页面闪来闪去,让人不胜其烦。可以通过设置面板Run/Debug -> Console修改,取消勾线如下图两项。

关闭自动跳转Debug视图功能
Eclipse中包含许多视图,如Java视图、JavaEE视图等,Debug时也有一个视图。Eclipse默认会在断点起作用是自动跳转到Debug视图,然而这个设计很不好,我们边开发边调试,视图会来回闪烁切换,需要改哪行都找不到了,建议关闭自动跳转功能,将Debug工具条、变量查看面板等统一放在Java或JavaEE视图。该设置在Run/Debug -> Launching面板。

UI调整
Eclipse默认的界面布局可能比较难用,如果刚上手使用Eclipse的人可能连控制台输出在哪都找不到,因为控制台面板默认没有显示出来,或者被误关闭了。
Eclipse中,可以任意拖拽、关闭的面板叫做View,我们点击菜单Window -> Show View -> Other...,即可看到所有可以启用的菜单,我们可以将其拖放到任意位置。

由于每个人安装的插件不同,可以使用的面板也各不相同,这里我们就不详细介绍了,在实际开发中,自然会知道哪些面板放在手边最方便,哪些面板丢在角落里比较顺眼,哪些面板完全用不到,直接关闭最省心。
而Perspective则是一个完整的布局,Eclipse默认自带有布局,插件也会增加布局。点击右上角的布局图标,我们就可以查看可用布局。实际上,我们甚至能够自定义布局。

对于布局的使用建议:一类开发环境使用一个布局,比如Java相关开发都在一个布局,C/C++相关开发都在另一个布局。避免一个开发环境来回切换布局,比如自动切换Debug布局就是个十分糟糕的设计。