Java 9 正式发布,终落地 Jigsaw 项目

原创 2017年09月22日 14:05:17

9 月 21 日,大家期待已久的 Java 9 终于正式发布了,本文与大家一起快速回顾一下 IntelliJ IDEA 中 Java 9 的支持,并了解 IntelliJ IDEA 2017.3 中针对 Java 9 的推出的新功能。

Jigsaw 和 JPMS

提及 Java 9,最大的功能莫过于 Jigsaw 项目下的核心 Java 平台模块化系统(JPMS,Java Platform Module System) 。 Jigsaw 本身是一项很有野心的项目,它的目标是改进 Java SE 平台,使其可以适应不同大小的计算设备;改进其安全性,可维护性,提高性能;简化各种类库和大型应用的开发和维护,包括 JDK 本身的模块化。

IntelliJ IDEA 支持具有许多功能的 Java 平台模块化系统。

首先开发者可以轻松地为 IntelliJ IDEA 模块创建一个 module-info.java 文件:

这将给出模块声明的基本结构,包括与 IntelliJ IDEA 模块名称相匹配的模块名称。 当开发者在 module-info.java 文件中编码时,代码会高亮显示。

倘若开发者从带有 module-info.java 文件的模块中运行代码,IntelliJ IDEA 将自动使用 -p 参数(模块路径)而不是 -classpath。

IntelliJ IDEA 也针对将代码迁移到 JPMS 时出现的常见问题提供了快速修复功能,比如添加“require”指令。

或自动检测重复的指令及其他可以修复的错误。

开发者还可以通过 IntelliJ IDEA 创建模块图,以可视化正在使用的模块。 此外,也能看到 JDK 模块、自己创建的模块等等,如下图所示。

当开发者开始使用模块化时,这些图表就能起到很好的作用,其可以帮助开发者了解正在使用哪些模块以及模块的架构,甚至可以直接从图中定位到具体的模块代码。

IntelliJ IDEA 也会帮助将代码迁移到 Java 9。例如,用户可以高亮显示使用的动态模块。

这意味着开发者可以看到一些并非是 Java 9 模块的内容。 这很重要,因为这些动态模块可能会随时间而改变。

了解有关 IntelliJ IDEA 中模块的基本支持的更多信息,以及模块图和其他快速修复

便利的工厂方法

Java 9 引入了许多小的 API 更改,使开发人员更轻松。 其中之一是简化具有固定内容集合的创建。在 IntelliJ IDEA 中可以查找到改功能。

如下图所示,高亮的代码即是使用 Java 9 的工厂方法简化之后的效果。

Thread.onSpinWait

Java 9 提供了 JVM 的提示。 具体来说,如果开发人员的代码在循环中等待,那么就可以使用 Thread.onSpinWait 来让运行时知道。 IntelliJ IDEA 查找代码,添加这个功能可能会使用到。

增强的弃用

在 Java 9 有一个看似较小的功能,但可以让开发人员更容易了解其代码的影响,这个就是增强的弃用。 现在,@Deprecated 标签支持两个有用的新属性:“since”和“forRemoval”。 在 IntelliJ IDEA 2017.3 中进行了新的检查,高亮显示使用已被标记为“forRemoval”的代码。

如果已经打开此检查并将其设置为“警告”(这是默认值),那么被标记为“forRemoval”的内容,在 IntelliJ IDEA 将以红色杠显示此方法,而不是以往的黑色。

JShell 工具

Java 9 首次提供 Java 的 REPL (Read-Eval-Print-Loop,读入-求值-打印-循环)功能,称为JShell 工具。它的目的在于以即时结果和反馈的形式,简化原型的实现并帮助我们探索语言在编码时的可选项。用户可以从命令行或 IntelliJ IDEA 中的终端运行 REPL。 此外,IntelliJ IDEA 2017.3 还具有一个基本控制台,可从 IDE 内部使用 JShell,类似于 Groovy Console。

开发者可以使用控制台来尝试代码片段,也可以选择运行此代码的模块路径。

该功能目前仅能在 2017.3 EAP 中可用。

无须额外的支持

Java 9 中有许多新功能,包括对 Streams API 的更改、可选的附加功能、接口上的私有方法等等。

如果项目 SDK 设置为 Java 9,那么这些新方法在编码期间都可以使用了。

另外,还可以使用 IntelliJ IDEA 常见功能来挖掘一些 Java 9 的功能。 比如,在生成文档时通过添加标志来生成 HTML 5 Javadoc。

开发者甚至可以使用 IntelliJ IDEA 创建 Multi-Release JAR 文件。 这也许是建立 Gradle、Maven 或 Ant 等工具的最佳选择,至于这些,未来可能在 IntelliJ IDEA 博客中更新。

最后,Oracle 宣布今后会按照每六个月一次的节奏进行发布!这意味着 Java 9 是最后一次“keystone”特性驱动的版本发布。Oracle还表示,Java 8 目前仍可继续使用,它的支持时间将延续到 2022 年。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 9终于要包含Jigsaw项目了

当Jigsaw在Java 9中最终发布时,这个项目的历史已经超过八年了。 在最初的几年中,它必须要与另外两个类似的Java规范请求(Java Specification Request)进行竞争...

借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?

在本文中,笔者会讲解如何利用 Java 9 的模块系统在 60 秒内创建一个 JavaFX HelloWorld 应用程序。...

Jigsaw被推迟到了Java SE 9

原文:Jigsaw Deferred until Java SE 9 近日,Java Platform Group的首席架构师Mark Reinhold在其博客上宣布添加模块化系统以及模...

Jigsaw被推迟到了Java SE 9

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2013/01/jigsaw-deferred近日,Java Platform Grou...

Jigsaw项目会解决Java的JAR地狱问题么?

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/jigsaw-jar-hellNicolai Parlog是一位热情的软...

Java 9 正式发布,新特性研究

作者简介 杨晓峰,OpenJDK Committer,Oracle 首席工程师,Java 核心类库北京团队 leader。2011年加入 Oracle Java 团队,经历了从 JDK 7 到 J...

Java9 正式发布前的尝鲜之下载与配置环境变量

前言本文发布之时,java9还未正式发布,不过许多新特性已经暴露出来,并且提供了Early-Access Builds版本,包含了目前为止完整的各项功能,由于近期项目涉及到了java repl ,而j...
  • Nougats
  • Nougats
  • 2017年07月27日 20:53
  • 8139
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 9 正式发布,终落地 Jigsaw 项目
举报原因:
原因补充:

(最多只允许输入30个字)