写点什么

Java 9 新特性汇总

2014 年 9 月 18 日

继 2014 年 3 月份 Java 8 发布之后,Open JDK 加快了开发速度, Java 9 的发布已经提上日程。预计在 2016 年发布 Java 9, 同时公布了 JEP (JDK 改进提议) 中的前期列表。任职于 Takipi 的 Alex Zhitnitsky 整理了 Java 9 中一些纳入 JSR(Java 规范提案) 的新特性和大家一直期待但未确定的一些特性。这些特性有 Jigsaw 项目、新的智能编译工具、期待已久的 API(如简化了的进程 API、JSON API、货币处理 API 等)、代码分段缓存等。

现就对这些特性进行了一个全面的梳理。

已接受的特性

1、 Jigsaw 项目:模块化 JDK 源码

Jigsaw 项目即 JEP201 是为了模块化 Java 代码,并将 JRE 分成相互协作的组件。这个 JEP 是迈向 Jigsaw 四步中的第一步,它只是模块化 JDK 源代码,不会改变 JRE 和 JDK 的真实结构,从而使得编译系统能够模块编译并在构建时检查模块边界。这个项目原计划随 Java 8 发布,但因为推迟,所以被放到了 Java 9 中。Jigsaw 项目一旦完成,将允许开发者根据项目的需要自定义组件,从而减少 rt.jar 的大小;还可以做到使 Java 能够更加容易的应用到小型计算设备 (如网络设备) 中,同时也能够使得开发者更加容易地构建和维护这些类库。更多相关信息参见 JEP201。

2、简化了的进程 API

目前,Java 控制与管理系统进程的能力是有限的, 为了获得操作系统的一些信息需要调用本地程序或者其他变通方案。然而,在 Java 9 中将会新增一些新的、直接明了的方法来处理进程 ID、名字和状态以及枚举多个 JVM 和进程等,从而扩展 Java 与操作系统的交互能力。更多相关信息参见 JEP102

3、 轻量级的 JSON API

尽管目前有多种处理 JSON 的 Java 工具(如 Google 的 Gson、阿里巴巴的 FastJson、IBM 的 Json4J 等),但 JSON API 是 Java 语言的一部分,轻量并且运用了 Java 8 的新特性。JSON API 将放在 java.util 包里一起发布,这样,开发者就可以直接使用 JDK 而无需再引入第三方 JSON 工具包了。更多相关信息参见 JEP198

4、 钱和货币的相关 API

Java 9 引入了新的货币 API, 用来表示货币, 并支持币种之间的转换和各种复杂运算。更多的相关具体信息, 参见 JavaMoney 项目 JSR354

5、 改善锁争用机制

锁争用限制了许多 Java 多线程应用性能,新的锁争用机制改善了 Java 对象监视器的性能,并得到了多种基准测试的验证(如 Volano ), 这类测试可以估算 JVM 的极限吞吐量。实际中, 新的锁争用机制在 22 种不同的基准测试中都得到了出色的成绩。如果新的机制能在 Java 9 中得到应用的话, 应用程序的性能将会大大提升。更多相关信息参见 JEP143

6、代码分段缓存

Java 9 的另一个性能提升来自于 JIT(Just-in-time) 编译器。当某段代码被大量重复执行的时候, 虚拟机会把这段代码编译成机器码 (native code) 并储存在代码缓存里面, 继而通过访问缓存中不同分段的代码来提升编译器的效率。代码分段缓存机制将会提升许多方面的性能,如当 JVM 进行垃圾回收扫描的时候,就可以直接跳过永驻代码, 从而提升效率。更多相关信息参见 JEP197

7、智能 Java 编译工具

智能 Java 编译工具(sjavac)的第一阶段始于 JEP139 这个项目, 用于在多核处理器情况下提升 JDK 的编译速度。如今,这个项目已经进入第二阶段即 JEP199 , 其目的是改进 Java 编译工具,并取代目前 JDK 编译工具 javac,继而成为 Java 环境默认的通用的智能编译工具。更多相关信息参见 JEP199。

期待但未确定的特性

1. HTTP 2.0**** 客户端

虽然 HTTP 2.0 标准还没正式发布, 但是它已经进入了最终审查阶段, 并预计将在 Java 9 发布之前审查完毕。HTTP 2.0 客户端即 JEP110 将重新定义并实现一个全新的 Java HTTP 客户端, 用来取代现在的 HttpURLConnection, 同时还会实现 HTTP 2.0 和 WebSockets 等接口。另外,官方的 HTTP 2.0 RFC 预计于 2015 年 2 月发布, 它基于 Google 的 SPDY 协议。基于 SPDY 协议的网络相对于基于 HTTP 1.1 协议的网络有 11.81% 到 47.7% 的显著提速。更多相关信息参见 JEP110。

2. Kulla**** 项目: Java 的 REPL 实现

现在,Java 官方并没有提供 REPL(读取 - 求值 - 打印 - 循环) 的实现。当我们需要运行几行 Java 代码做一个快速测试时, 我们不得不把这几行代码封装在项目或者方法里,才可以完成测试,而 Kulla 弥补了这些不足。Kulla 将于 2015 年 4 月进行整合测试,如果 Kulla 进度比较快的话,或许能够加入到 Java 9 中,就有希望成为 Java 官方发布的 REPL 解决方案。更多关于 Kulla 的相关信息参见于 Kulla 的计划安排。

另外,请读者注意,JEP 和 JSR 来自 Java 发展的生态环境,包括对特定技术内容有共同兴趣的组织和个人组成的小组、至少由一个小组赞助和支持的项目(如最近的 Lambda 项目、Jigsaw 项目、Sumatra 项目)、被正式认可的 JEP 以及 JSR。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014 年 9 月 18 日 03:5517613
用户头像

发布了 92 篇内容, 共 39.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

限流与Guava RateLimiter原理解析

千珏

Java 微服务 限流算法 Guava 令牌桶

官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox

阿里巴巴云原生

go 容器 云原生 k8s 监控

公安一体化指挥调度平台建设解决方案,应急指挥调度系统开发

WX13823153201

为啥你写的代码总是这么复杂?

华为云开发者社区

软件 代码 代码注释 bug 复杂度

Linux C/C++ 学习路线总结!助我拿下腾讯offer

赖猫

后台开发 C/C++ Linux服务器开发

我崩溃了!BTAJ面试有关散列(哈希)表的面试题详解,电子版已问世

欢喜学安卓

android 程序员 面试 移动开发

“云演唱会”也有仪式感!能检票、可转赠,爱奇艺“云票”如何重构线上购票逻辑

爱奇艺技术产品团队

Amazon Glue 版本 2.0 将作业启动时间缩短了 10 倍,现已全面开放!

亚马逊云科技 (Amazon Web Services)

智慧党建三维云展厅可视化

一只数据鲸鱼

数据可视化 智慧党建 三维可视化

怎么进大厂?166位Java工程师的大厂面试经验分享

北游学Java

Java 面试 大厂

再次荣获最受观众喜爱奖

Serverless Devs

阿里云 云原生 cncf #Serverless

论好文章和烂文章

阿里巴巴云原生

程序员 开发者 云原生 写作技巧 成长与思考

现货量化倍投系统开发,马丁量化策略交易平台搭建

WX13823153201

数据和分析领导者为在这个不断变化的世界中取得成功而需要采取的三项行动

Geek_bacee5

Gartner 数据和分析领导者 信息技术研究 企业数据化转型 魔力象限

数据采集之js自定义采集

大数据技术指南

大数据

如何做一场高质量的分享

阿里巴巴云原生

深度学习 开发者 云原生 分享

如何高效地存储与检索大规模的图谱数据?

华为云开发者社区

存储 知识图谱 检索 图结构 表结构

Amazon Route 53 Resolver 落地中国区,轻松玩转私有域名互访不是梦!| 新服务上线

亚马逊云科技 (Amazon Web Services)

HuskyLens人工智能摄像头

不脱发的程序猿

人工智能 智能硬件 AIOT HuskyLens 人工智能摄像头

STM32电源框图解析(VDD、VSS、VDDA、VSSA、VREF+、VREF-、VBAT等的区别)

不脱发的程序猿

嵌入式 stm32 单片机 电源框图解析

CampusBulider(模模搭)学习笔记5:创建自定义建筑

森友小锘

前端 可视化 3D 3D可视化 数字孪生

MapReduce排序以及序列化

五分钟学大数据

大数据 hadoop mapreduce

更灵活的边缘云原生运维:OpenYurt 单元化部署新增 Patch 特性

阿里巴巴云原生

容器 运维 云原生 中间件 边缘计算

iMazing比iTunes好用在哪些地方

懒得勤快

揭秘 Amazon Go 无人商店是如何炼成的!

亚马逊云科技 (Amazon Web Services)

堪称完美!淘宝内部百亿级Java高并发系统架构设计PDF手册分享

Java架构追梦

Java 架构 高并发 淘宝网 亿级架构设计

云图说|不要小看不起眼的日志,“小日志,大作用”

华为云开发者社区

运维 日志 云日志服务 安全监控审计

2021年5月国产数据库排行榜:“华为高斯模式”取得成功,阿里OPA持续攀升

墨天轮

数据库 dba tdsql TiDB Gauss DB

Spring Cloud Bus 消息总线介绍

阿里巴巴云原生

Java 微服务 云原生 中间件 数据格式

嵌入式程序调用函数的内部过程和机制

不脱发的程序猿

单片机 嵌入式程序 嵌入式设计

牛!一次实战批量SRC和CNVD的奇技淫巧(全程干货,建议收藏)

代码熬夜敲

运维 网络安全 信息安全 渗透测试

Java 9新特性汇总-InfoQ