就在前几天,Java软件开发神器 IDEA 2020.1 新版发布了:
我第一时间在机子上更新并体验了几天,感觉还是有点香的!怎么硕呢,体验完新特性之后,不由的感叹一句:IDEA现在真的是越来越智能,越来越懂开发者了。
汉化后的效果就是这个憨样子:
各花入各眼,好坏就不做评判了,可以根据自己的喜好来调节。
必须要说的是,这个中文汉化不是软件原生支持,而是需要下载安装一个名为 Chinese (Simplified) Language Pack
的插件,好在这个插件就是 JetBrains
官方提供的
现在代码层级导航栏这里,可以直接定位到文件中的某个具体方法或者字段了,这个的确很高效
Javadocs
渲染 以前在IDEA中阅读 Javadoc
非常不方便,因为处于原始状态的 Javadoc
中含有各种标记,不好读。这次新版的IDEA 2020新增了 Javadocs
的渲染功能,点击左边的小按钮就可以启用
渲染后的 Javadoc
就非常直观易读了,而且还可以调整字号
首先默认支持了 JetBrains
自家的新 JetBrains Mono
字体,这没啥可说的,之前就体验过了,详细可参考前文 《试水JetBrains官方新编程字体,真香!》
然后则是采用了统一的 IntelliJ Light
主题,而且该主题已经在不同的操作系统中完全统一了
喜不喜欢看大家个人习惯了。
LightEdit
,顾名思义,轻量级的代码编辑。
是的,这次更新的IDEA支持打开单个代码文件进行编辑,而无需打开整个项目。文件可以在单独的编辑窗口打开,而且该窗口可以和其他(项目)窗口共存。就像这样:
更强大的是,直接支持快捷打开这个 单文件 所在的完整项目:
甚至还可以通过命令行来打开单文件,这相当可以了:
现在的这个代码展示模式有够丰富了,支持四种了:
当然,禅模式是最彻底的,一开这个模式,整个世界都清净了...
现在可以随意地将IDEA自带的终端进行横竖分栏,非常方便
很多小伙伴交流说自己JDK环境好像装的有问题,实验各种出问题。为了这个事,强迫症都快犯了,很烦。
从IntelliJ IDEA 2020.1开始,我们可以直接在创建项目时,直接从IDEA上下载并设置JDK环境,很方便了。
我特地实验了一下,在IDEA里面下载安装了个Open JDK 14,没毛病,好用,切换也很方便。
除此之外,IDEA还直接支持Git的安装,i了i了
前段时间Java 14发布,加入了一些新特性,这次IDEA 2020.1迅速跟进,支持了Java 14的一些新特性,举两个典型的例子。
instanceof
用法增强 老的Java版本中,对于instanceof语法,我们一般都是这样用的:
private void test( Object obj ) { if( obj instanceof String ) { String str = (String) obj; // 需手动强制转换! System.out.println( str.isEmpty() ); } }
而Java 14对 instanceof
用法做了增强,我们借助全新的 IDEA 2020
,可以快捷的将上面的代码自动重构成如下所示:
所以最终变成了这个亚子:
private void test( Object obj ) { if( obj instanceof String str ) { // 校验通过,直接后面定义变量,无需强转! System.out.println( str.isEmpty() ); } }
record
新语法支持 Java 14新增了 record
新语法, record
的词面意思就是 “记录” ,主要用于形式化的固定记录,这在以前主要就是通过 不可变类 来实现的,举个例子吧。
比如我们定义一个不可变的日志记录类 LogRecord
,里面包含日志ID( id
),日志时间( date
),日志详情( detail
),按照老的做法,只能使用 class
进行定义:
public final class LogRecord { // 不可变类 private final int id; private final LocalDate date; private final String detail; public LogRecord(int id, LocalDate date, String detail) { this.id = id; this.date = date; this.detail = detail; } public int getId() { return id; } public LocalDate getDate() { return date; } public String getDetail() { return detail; } @Override public String toString() { return "LogRecord{" + "id=" + id + ", date=" + date + ", detail='" + detail + '/'' + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; LogRecord logRecord = (LogRecord) o; return id == logRecord.id && Objects.equals(date, logRecord.date) && Objects.equals(detail, logRecord.detail); } @Override public int hashCode() { return Objects.hash(id, date, detail); } }
Java 14认为上面这种 final
类型 class
的定义的套路是完全固定的,写了很多固定套路的代码,包括:构造函数、 Getter
方法、 toString()
方法、 hashCode()
和 equals()
方法等等,十分无聊。
为此Java 14推出了全新的 record
语法,只需一行代码即可搞定,十分方便:
record LogRecord( int id, LocalDate date, String detail ) { }
这次IDEA 2020中就已经完全支持 recod
语法了,并且还可以自动显式地为 record
生成各种方法:
什么意思呢?举个例子。
当你想直接修改某个已有方法的参数时,不管三七二十一,上来可以直接修改方法签名,然后点击更新,接下来的所有步骤IDEA可以帮你完成。
比如这个例子中,我格式化一个日期时,无意将年月日 yyyy/MM/dd
字符串写成了 yyyy/mm/dd
,中间的 MM
大小写忘了,IDEA自动给我们分析出来了:
这个功能得配合 Grazie
这个插件一起使用,该插件是一个全面的语法、拼写、以及样式检查工具。
比如,这地方我小手一抖,写错了英语语法,它立马帮我们提示出来了
IDEA 2020.1直接将数据流分析添加到JVM调试器。当程序在断点处停止时,IDEA可以根据程序的当前状态运行数据流分析,来预测下一步将要发生什么。
当一个对象字段过多,以致于调试时很难找到需要的字段时,我们可以直接将其置顶,便于查看。
新版IDEA支持直接将当前的调试/运行的配置存档,并在以后选择重新加载
第一个大的改进就是重新设计了代码提交的窗口,而不再是以前老的那种模态化弹窗式窗口了。这样一来,提交代码时的代码比对,编辑会更加舒适。
第二个改进就是支持 搜索 、 刷新 本地以及远端的代码分支:
另外,这个历史日志留痕也是蛮好看的:
此处就以Maven工具为例,编辑器右上角出现的是一个浮动通知。修改构建文件后,可以使用这个迷你的通知图标来加载更改。
新版IDEA内置的数据库管理,现在可以支持将数据导出到 Excel(.xlsx)
文件,并且直接在编辑器中以文本形式查看
升级之后的 HTTP Client
更加智能,典型的比如:支持自动匹配和补全
而且还可以在 Contoller
代码的左侧,通过快捷的方式来自动生成HTTP请求文件
而且对于Spring项目,还可以在底部的 Endpoints
窗口里来快捷生成HTTP请求文件。
1、对各种框架的支持改进,比如: Spring WebFlux/Selenium/JMS/Micronaut/RxJava
等等
2、对 Docker/Kubernetes
的支持改进
3、对 Scala 3
的支持
4、对 Android Volley
的支持
5、对 JavaScript
的改进和支持
体验一番之后发现,新版的IDEA 2020.1肉眼可见的改进还是非常多的,挺香。
不过还有一个实际的问题就是:我一升级之后发现 一大票 的插件都不能用了,所以周边支持的兼容性还得再等等。