1. 首页
  2. >
  3. 编程技术
  4. >
  5. Java

全新IDEA 2020.1体验!Java开发首席生产力担当

就在前几天,Java软件开发神器 IDEA 2020.1 新版发布了:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

我第一时间在机子上更新并体验了几天,感觉还是有点香的!怎么硕呢,体验完新特性之后,不由的感叹一句:IDEA现在真的是越来越智能,越来越懂开发者了。


UI/界面升级

1、界面支持中文了

汉化后的效果就是这个憨样子:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

各花入各眼,好坏就不做评判了,可以根据自己的喜好来调节。

必须要说的是,这个中文汉化不是软件原生支持,而是需要下载安装一个名为Chinese (Simplified) Language Pack的插件,好在这个插件就是JetBrains官方提供的

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

2、导航栏进化

现在代码层级导航栏这里,可以直接定位到文件中的某个具体方法或者字段了,这个的确很高效

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

3、支持编辑器内的Javadocs渲染

以前在IDEA中阅读Javadoc非常不方便,因为处于原始状态的Javadoc中含有各种标记,不好读。这次新版的IDEA 2020新增了Javadocs的渲染功能,点击左边的小按钮就可以启用

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

渲染后的Javadoc就非常直观易读了,而且还可以调整字号

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

4、新增主题和字体

首先默认支持了JetBrains自家的新JetBrains Mono字体,这没啥可说的,之前就体验过了,详细可参考前文《试水JetBrains官方新编程字体,真香!》

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

然后则是采用了统一的IntelliJ Light主题,而且该主题已经在不同的操作系统中完全统一了

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

喜不喜欢看大家个人习惯了。

5、船新的LightEdit模式

LightEdit,顾名思义,轻量级的代码编辑。

是的,这次更新的IDEA支持打开单个代码文件进行编辑,而无需打开整个项目。文件可以在单独的编辑窗口打开,而且该窗口可以和其他(项目)窗口共存。就像这样:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

更强大的是,直接支持快捷打开这个单文件所在的完整项目:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

甚至还可以通过命令行来打开单文件,这相当可以了:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

6、支持“禅”模式

现在的这个代码展示模式有够丰富了,支持四种了:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

当然,禅模式是最彻底的,一开这个模式,整个世界都清净了...

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

7、终端支持分栏了

现在可以随意地将IDEA自带的终端进行横竖分栏,非常方便

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


支持直接IDEA里安装JDK和Git

很多小伙伴交流说自己JDK环境好像装的有问题,实验各种出问题。为了这个事,强迫症都快犯了,很烦。

从IntelliJ IDEA 2020.1开始,我们可以直接在创建项目时,直接从IDEA上下载并设置JDK环境,很方便了。

我特地实验了一下,在IDEA里面下载安装了个Open JDK 14,没毛病,好用,切换也很方便。

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

除此之外,IDEA还直接支持Git的安装,i了i了

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


支持Java 14新特性

前段时间Java 14发布,加入了一些新特性,这次IDEA 2020.1迅速跟进,支持了Java 14的一些新特性,举两个典型的例子。

1、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,可以快捷的将上面的代码自动重构成如下所示:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

所以最终变成了这个亚子:

private void test( Object obj ) {
    if( obj instanceof String str ) { // 校验通过,直接后面定义变量,无需强转!
        System.out.println( str.isEmpty() );
    }
}

2、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 2020.1真香体验!Java开发首席生产力担当


支持更加智能的检查和重构

1、支持就地更改方法签名

什么意思呢?举个例子。

当你想直接修改某个已有方法的参数时,不管三七二十一,上来可以直接修改方法签名,然后点击更新,接下来的所有步骤IDEA可以帮你完成。

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

2、智能分析日期字符串格式

比如这个例子中,我格式化一个日期时,无意将年月日yyyy/MM/dd字符串写成了yyyy/mm/dd,中间的MM大小写忘了,IDEA自动给我们分析出来了:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

3、智能语法和拼写检查器

这个功能得配合Grazie这个插件一起使用,该插件是一个全面的语法、拼写、以及样式检查工具。

比如,这地方我小手一抖,写错了英语语法,它立马帮我们提示出来了

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


增强调试功能

1、数据流分析辅助,可以直接预测下面的运行结果

IDEA 2020.1直接将数据流分析添加到JVM调试器。当程序在断点处停止时,IDEA可以根据程序的当前状态运行数据流分析,来预测下一步将要发生什么。

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

2、调试时,支持固定对象字段

当一个对象字段过多,以致于调试时很难找到需要的字段时,我们可以直接将其置顶,便于查看。

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

3、以文件形式存储运行配置

新版IDEA支持直接将当前的调试/运行的配置存档,并在以后选择重新加载

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


更加先进的版本控制

第一个大的改进就是重新设计了代码提交的窗口,而不再是以前老的那种模态化弹窗式窗口了。这样一来,提交代码时的代码比对,编辑会更加舒适。

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

第二个改进就是支持搜索刷新本地以及远端的代码分支:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

另外,这个历史日志留痕也是蛮好看的:

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


Maven和Gradle导入更新

此处就以Maven工具为例,编辑器右上角出现的是一个浮动通知。修改构建文件后,可以使用这个迷你的通知图标来加载更改。

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


数据库处理增强

新版IDEA内置的数据库管理,现在可以支持将数据导出到Excel(.xlsx)文件,并且直接在编辑器中以文本形式查看

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


增强的HTTP Client

升级之后的HTTP Client更加智能,典型的比如:支持自动匹配和补全

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

而且还可以在Contoller代码的左侧,通过快捷的方式来自动生成HTTP请求文件

船新 IDEA 2020.1真香体验!Java开发首席生产力担当

而且对于Spring项目,还可以在底部的Endpoints窗口里来快捷生成HTTP请求文件。

船新 IDEA 2020.1真香体验!Java开发首席生产力担当


其他改进

1、对各种框架的支持改进,比如:Spring WebFlux/Selenium/JMS/Micronaut/RxJava等等

2、对Docker/Kubernetes的支持改进

3、对Scala 3的支持

4、对Android Volley的支持

5、对JavaScript的改进和支持


小结

体验一番之后发现,新版的IDEA 2020.1肉眼可见的改进还是非常多的,挺香。

不过还有一个实际的问题就是:我一升级之后发现一大票的插件都不能用了,所以周边支持的兼容性还得再等等。