本篇文章内容转载来自微信公众号"Mac Talk”,此公众号由极客时间的创始人池建强老师维护,池老师的文章写作风格非常幽默风趣且朴实无华,对苹果Mac软件、产品设计、程序开发等领域有着深入的研究和新颖独特的见解。
上一遍文章我介绍了IDEA的入门及使用体验,目前我用的是IDEA 2018.1版本,这不JetBrains最近更新了最新2018.2版本,于是乎池老师很快就发布了新版本的升级特性介绍,最初我也想自己了解下新特性顺便写一下这方面的东西,但是看完池老师从InfoQ中文网站重新校对和修改之后的这篇文章,我就觉得写的特别的好,且最近难得一次见到池老师在文末未打软广,说实话这波吃鸡吃的我猝不及防,原文转载如下:
题图:酒杯里的代码,自己拍的
我自己编程生涯里写 Java 比较多,常用的编辑器是 Vim 和 IntelliJ IDEA。Vim 免费轻快,像一把雪亮的快刀,挡着披靡。IDEA 厚重强大,华丽的像关二爷的青龙偃月刀,锋利无匹。各有各的好处,我都非常喜欢。近期 JetBrains 发布了 IntelliJ IDEA 的最新版本:2018.2,其中包含了诸多新特性,我第一时间更新了(IDEA 现在是付费订阅方式),给大家介绍下。
IDEA 的新版本支持即将推出的 Java 11、断点意图(Breakpoints Intentions),为 MacBook 系列的 Touch Bar 定制了快捷功能,并改进了 Spring Boot、Scala 和 Docker 相关的插件。
以下内容编译自极客邦 InfoQ 中文网站,我重新做了校对和修改
Java
IntelliJ IDEA 2018.2 支持 Lambda 参数使用的本地变量新语法(即 JEP 323 )。这是定于 11 月推出的 Java 11 中的一个新特性。该特性支持开发人员在 Lambda 表达式中使用变量声明关键字 var:
//Java 8,不支持var。
BiConsumerconsumer = (Processor x, String y)x.process(y);
//Java 11,支持var。
BiConsumerconsumer = (var x, var y)x.process(y);
为配合 Java 11 对 var 的支持特性,在 IDE 中按住 “Ctrl/⌘” 键并将光标驻留于 var 上,将会显示该变量的类型。
对于代码中冗长的方法链,IntelliJ IDEA 将会给出类型提示(Type Hint)。面对具有泛型的长方法链时,开发人员可通过该功能查看每个调用的类型提示。
2018.2 为使用重构方法增加了一个预览面板,它有助于开发人员在确认更改前查看重构的可能情况,酷炫并且实用。
IntelliJ IDEA 改进了对 @org.jetbrains.annotations.Contract 标注的支持。该标注支持开发人员为特定参数的传递指定一个响应方法,这将为 Nullability 分析以及其它一些代码检查提供帮助。其约束新增的支持值包括:new,方法应该返回一个非 Null 的新对象;this,方法应该返回一个非 Null 的 this ;paramX,方法应该返回第 X 个参数。
Stream API 支持也做了改进,它将会显示不必要的排序操作,以及错误使用了收集器(Collector)或集合(Colleciton)。此外,如果你在 collect()(toSet()) 方法之前调用了多余的 distinct() 方法,它也会给出警告。
Java 项目中的调试功能也做了大量的改进。如果开发人员组合使用 Alt+Enter 键,就能看到三种新的断点状态,比如:stop only in class, do not stop in class, and stop only in the current object。此外,新的 Caller 过滤器可以允许开发者实现这样的功能:只有来自某个特定方法里的调用,才会停在这个断点,或者跳过这个断点。
用户界面
新版本还交付了一系列用户界面上的改进。现在 IDEA 开始支持 MacBook 的 Touch Bar,在 Touch Bar 界面的中间显示 TouchJ IDEA 按钮。开发人员可以直接从 Touch Bar 运行、调试、提交更改和更新项目。对于 macOS上 的IntelliJ主题,现在支持以更暗方式显示标题栏,并添加了一些新的图标。Linux 上的 IntelliJ 主题也做了一些更新。
Scala
IntelliJ IDEA 对 Scala 插件做了多项改进。它支持开发人员以内联提示的方式查看隐式转换和参数,并在提示工具(Tooltip)中浏览和显示扩展信息。现在,Scala 插件中添加了 Scalafmt 格式化工具。配置 Scala 插件,可依次点击菜单项 “Preferences/Settings”>“Editor”>“Code Style”>“Scala”。
类型标注的自动完成和模式匹配功能也做了改进,Scala 插件会对类和接口给出一组建议的类型模式,参见下图:
JavaScript/Typescript
2018.2 还改进了对 JavaScript 和 TypeScript 的支持。开发人员可以使用新的 Extract Component 特性新建一个 React 组件,使用新的 Code Coverage 特性找到没的 JavaScript/TypeScript 代码,并对代码进行手工测试。开发人员可以使用 Code Coverage 启动一个 JavaScript Debug 配置 ,并与 Chrome 中的应用进行交互。配置完成后,IntelliJ IDEA 会在 Coverage 工具窗口中给出代码覆盖情况报告。
新版本 IDEA 提供了一系列 JavaScript 和 TypeScript 提示,比如实现接口、创建派生类、实现接口或抽象类的成员、生成 switch 语句中的 case,以及使用 “for..of” 实现迭代运算等。
Spring
新版本 IDEA 增加个 Spring Integration Diagram,基于 XML 或 Java 标注图形化显示 Spring 应用的配置情况,包括gateway、channel 和 bridge 等。
2018.2 版本还针对 Spring Boot 应用做了系列改进。基于新的 Diagram Model 开发人员可以用图形化的方式显示 Spring Boot 应用运行时 Bean 之间的依赖关系。开发人员还可以通过 Run Dashboard 管理 HTTP 请求映射。
Docker
IDEA 的 Docker 插件日渐成熟。新支持的特性包括支持以软回车的方式查看 Docker 日志(wrap word)。开发人员也可以从 Compose 节点和容器查看对应的 Compose 和 Docker 文件。此外,你还可以定义 Dockerfile 的执行根目录。
IntelliJ IDEA 是一个极为强大的 IDE 工具,不仅可以开发 Java,基于插件机制可以编写各种语言的代码,快速、强大、敏捷,是 JetBrains 的当家软件,其他系列 IDE 都衍生于此。贵是贵,确实好用啊。
文末留言:你最喜欢的编程工具是什么呢?你最常用的编程工具又是什么?可以说说它们的优劣。