博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IntelliJ IDEA宣布对Java 9的支持情况
阅读量:6436 次
发布时间:2019-06-23

本文共 2292 字,大约阅读时间需要 7 分钟。

Java 9于本月21日,广受开发者欢迎的IDE产品IntelliJ IDEA随即在官方博客了对Java 9的支持情况以及即将发布的IntelliJ IDEA 2017.3所包含的新特性。现在,我们就看一下IntelliJ IDEA提供了哪些特性来帮助开发人员更高效地使用Java 9的新功能。

\\

Jigsaw与JPMS

\\

在Java 9中,最引人关注的新特性就是(Java Platform Module System,JPMS)了,它是在下提供的。Jigsaw本身的任务范围更广泛一些,其中还包括对JDK本身的模块化,而对于开发人员来说,更关心的则是JPMS。

\\

IntelliJ IDEA通过多项特性来支持Java平台模块化系统。

\\

借助IDEA,我们可以很容易地为IntelliJ IDEA module创建module-info.java文件,如下图所示:

\\

13d0645aa18594cf90fd93615b91df4f.png

\\

这样的话,就能得到模块声明的基本结构,包括与IntelliJ IDEA module匹配的模块名。当然,在使用该文件的时候,可以借助代码高亮和补全功能:

\\

f6074daf089c7f7dcef7f23788a79741.gif

\\

如果在一个带有module-info.java文件的模块中运行代码的话,IntelliJ IDEA会自动使用-p参数(模块路径)来替代-classpath:

\\

e61ff2a7017f704d69e863ff20a2d227.png

\\

在将代码迁移至JPMS时,对于常见的问题,IntelliJ IDEA提供了快速修正的功能,比如添加“requires”指令:

\\

dd280459574dd6bb9a85fbe02a4b7d06.png

\\

另外,还能够探测到重复的指令和其他可修复的错误:

\\

c5ec82e4d6f4e2b8973ec8236f9cb53f.png

\\

IntelliJ IDEA还支持创建模块图,从而能够以可视化的方式展现我们所使用的模块。JDK模块、自己编写的模块以及自动化(automatic)模块会以不同的颜色显示,为了强调,传递性所需的模块会使用更粗的线来表示。

\\

540995754b03be4dab3d6e2963b0c268.gif

\\

当我们刚开始使用模块化功能时,这些图会特别有用,因为它能够让我们清楚地看到都使用了哪些模块,它们来自哪里。

\\

IntelliJ IDEA还提供了探查(Inspection)功能,有助于将代码迁移至Java 9。例如,我们可以高亮显示自动化的模块:

\\

d4d928afcaf5cfc2b78bef6cf535d5f1.png

\\

这样的话,能够看出我们依赖的并不是真正的Java 9模块。这一点也是很重要的,因为这些自动化模块随着时间推移可能会发生变化:

\\

da31e45043fcbe6eed01f9c8cde58224.png

\\

关于IntelliJ IDEA对以及的功能,可以参考jetbrains博客上的相关文章。

\\

便利的工厂方法

\\

Java 9引入了一些小的API变更,让开发人员的工作变得更轻松。其中有一个API就是简化具有固定内容的Collections的创建。IntelliJ IDEA有一项inspection能够提示我们可以在何处使用这项新特性:

\\

b3687e3d8379cd3c868f88ce24c18bc6.png

\\

这样的话,相应的代码会高亮显示,提示我们可以使用Java 9的工厂方法来进行简化。

\\

8631da0a0cb68b43655b2847de154fc4.gif

\\

Thread.onSpinWait

\\

Java 9允许我们为JVM提供一些提示信息,便于实现性能的提升。具体来讲,如果你的代码需要在一个循环中等待某个条件发生的话,那么可以使用让运行时环境了解到这一点。IntelliJ IDEA能够定位到这种提示在何处会比较有用,并提示我们添加进来:

\\

7ceabaa0bf5f3deb1ca2d7cede426c1f.png

\\

增强的弃用标记

\\

Java 9提供了另外一个看起来很小的特性,那就是增强的弃用标记,能够让开发人员更好地理解代码的影响。以前,我们只能将代码标记为deprecated并在Javadoc中添加一些原因说明的文档,现在@Deprecated新增了两个有用的属性:since和orRemoval。在IntelliJ IDEA 2017.3中将会有一个新的inspection项,如果我们使用了标记为“forRemoval”的代码,将会高亮提示。

\\

0644425b4e5e2d551c3d6296137c369e.png

\\

我们开启这项探测并设置为“Warning”(默认配置)级别的话,如果使用了标记为“forRemoval”的代码,IntelliJ IDEA将会使用红色的删除线来标记,而不是之前常见的黑色:

\\

7aa6068344f380fa9ffd438848c61922.png

\\

JShell

\\

Java 9首次为Java语言提供了REPL工具,名为JShell。我们可以在命令行或者在IntelliJ IDEA的终端中运行该REPL。另外,IntelliJ IDEA还提供了一个基本的控制台,能够让我们在IDE中使用JShell,类似于。

\\

845f3014377205bd10d78f0b0e7e504a.png

\\

借助这个控制台,我们可以尝试代码片段,还可以选择运行代码的模块路径。

\\

21a92f8f4f2625698a584bdc3911b6b0.gif

\\

这项特性会在中提供支持。

\\

其他默认支持的特性

\\

Java 9提供了许多的特性,包括Streams API的变更、引入了Optional以及支持接口中的私有方法。如果我们将项目的代码级别调整为Java 9,这些特性将会自动支持,并且能够进行自动的代码补全。

\\

另外,还可以在生成文档的时候添加一个标记,使IntelliJ IDEA生成。

\\

我们还可以使用IntelliJ IDEA生成多个发布版的JAR文件,通常来讲这些工作可以留给Maven、Gradle或Ant这样的工具来完成,但是IntelliJ IDEA同样可以做到这一点。

\\

IntelliJ IDEA已经对Java 9的大多数功能提供了便利的支持,想切换至Java 9体验一下新特性的读者可以采用该IDE简化编码的流程。

\\

感谢对本文的审校。

\\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至。也欢迎大家通过新浪微博(,),微信(微信号:)关注我们。

转载地址:http://bmhga.baihongyu.com/

你可能感兴趣的文章
《数字短片创作(修订版)》——第一部分 剧本创作 第1章 数字短片创意技法 剧本创作的构思...
查看>>
《Python数据挖掘:概念、方法与实践》——1.5节小结
查看>>
《Adobe Illustrator CC 2014中文版经典教程(彩色版)》—第1课1.4节修改图稿的视图...
查看>>
MIT 学生挑战新泽西索取挖矿程序源代码的要求
查看>>
mozjpeg:JPEG图片压缩5%,获Facebook支持
查看>>
聊聊Service(一)
查看>>
即将到来的 Android N 将具备这些新特性
查看>>
《善用佳软:高效能人士的软件应用之道》一2.6 小工具之计算器
查看>>
《C语言编程初学者指南》一1.9 本章小结
查看>>
《Spark大数据分析:核心概念、技术及实践》一3.5 API
查看>>
《“笨办法”学Python(第3版)》——习题3 数字和数学计算
查看>>
《无人机DIY》——4.2 项目1:MakerBeam机身
查看>>
阿里数据库内核月报:2015年11月
查看>>
swfheader 0.10 Released(已更正下载地址)
查看>>
SQL Server使用视图做权限控制
查看>>
深入浅出LVS:企业集群平台负载均衡的三种模式和算法实现
查看>>
twitter storm源码走读(二)
查看>>
jQuery学习笔记之DOM操作、事件绑定(2)
查看>>
写入指定长度的字节到文件
查看>>
删除数据表和清空数据表的内容(保存表结构)的SHELL脚本
查看>>