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

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 年。

来源:CSDN

时间: 2024-10-24 22:11:11

Java 9 正式发布,终落地 Jigsaw 项目的相关文章

Java 9终于要包含Jigsaw项目了

当Jigsaw在Java 9中最终发布时,这个项目的历史已经超过八年了. 转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0228/180.html?1456925937 在最初的几年中,它必须要与另外两个类似的Java规范请求(Java Specification Request )进行竞争,这两个规范名为JSR 277 Java模块系统(Java Module System)以及JSR 294 增强的模块化支持(Improved Modula

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

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/jigsaw-jar-hell Nicolai Parlog是一位热情的软件工程师,数字版权与开源软件的狂热拥护者:他对AssertJ.ControlsFX.FindBugs及Property Alliance等项目都做出过重要的贡献.近日,Parlog就Jigsaw项目撰写了一篇文章,谈到了Jigsaw项目的一些不足以及改进之处.Jigsaw项目有着雄心勃勃的宏伟目标

Jigsaw 项目:Java 模块系统新手引导

前言 随着 2017 年 10 月 Java 9 的发布,Java 能够使用模块系统了,但是中文互联网上的资料太少,许多关于 Java 模块系统的文章都只是介绍了模块系统的好处,或者给了一些毫无组织的代码片段,新手在第一次使用模块系统时往往不知道如何下手. 好在 OpenJDK 官方文档给出了一个很详细的新手引导,即使是从没使用过模块系统的人,按照新手引导也能完成自己的第一个 Java 模块.我在这里只是将其翻译成中文(英语水平有限,如有纰漏,欢迎指出),希望更多人能学会如何使用模块系统,加速

eoLinker-AMS开源版JAVA版本正式发布

eoLinker-AMS开源版JAVA版本正式发布! 深感广大开发者的支持与厚爱,我们一直在努力为大家提供更多更好的接口服务.截止至2018年4月3日,eoLinker-AMS 开源版for PHP已经更新到了3.5.0,平均每周更新一个新版本--出色的优化迭代速度,上佳的功能支持,周到的用户支持服务,一切只为成就万物互联! eoLinker尊重每一种语言的使用者,也深知用户需求的多样性.为此,我们在发布eoLinker-AMS JAVA版的同时,正式启动多语言AMS开源计划!下一步,我们将会制

JAVA 版本微信公众账号开源项目招募新成员

大家好: jeecg开源社区,目前正在开展"JAVA 版本微信公众账号开源项目"的开发工作,欢迎有兴趣的朋友一起参与! 截止时间:20140510 详细联系方式:445654970 要求: 1.熟悉jeecg技术平台: 2.有足够的业余时间参与: 官方网站:http://www.jeecg.org/ JAVA 版本微信公众账号开源项目招募新成员,布布扣,bubuko.com

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

加速Java应用开发速度2——加速项目调试启动速度

上一篇Spring/Hibernate提升速度的文章主要是通过一些技巧来提升启动速度,还是做不到如类的热部署/热替换.因此再写一篇关于热部署/热替换的文章.之前也有很多人介绍过这些知识,不过比较分散,我写此篇的目的是聚合它们.本文以HotSpot虚拟机为例. 首先让我们来看两个概念:热部署.热替换 热部署 即在容器运行过程中,重新加载类或重新加载整个项目.常见的解决方案就是使用自定义ClassLoader: 部分加载的示例:如JSP.Play框架: 重新加载整个项目的示例:如Tomcat.Jet

菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty

做WEB开发,测试是一件很费时间的事情.所以我们就应该用更简单.更快捷的方式进行测试.今天就向大家介绍一个轻量级的容器--jetty.j今天说的etty是Maven的一个插件jetty-maven-plugin,与Maven配合起来使用非常的方便,它的配置也非常的简单,下面我们就看看它怎么用吧! 在pom.xml 文件的<project>标签下加入如下代码: <build> <plugins> <plugin> <groupId>org.mort

JAVA版本微信公众账号开源项目版本发布-jeewx1.0(捷微)

JeeWx, 敏捷微信开发,简称"捷微". 捷微是一款免费开源的微信公众账号开发平台. 平台介绍: 一.简介 jeewx是一个开源,高效,敏捷的微信开发平台采用JAVA语言,它是基于jeecg这个企业级快速开发框架实现的. jeewx的目的是最大化的简化微信开发的流程,使用开发者能把最好的精力放到微信具体业务开发,并能以最快的时间完成.把一些常规而频繁的工作交由jeewx来处理即可,平台兼备的代码生成器,在线开发,可以快速的完成企业应用.为此jeewx提供了详细的二次开发文档,关键代码