JDK/Java 14 可能带来什么新特性?

h4cd
 h4cd
发布于 2019年10月11日
收藏 13

JDK/Java 13 在一个月前已经发布,该版本带来了 5 大新特性,笔者观察到其中的 Text Blocks(文本块)特性似乎被讨论最多。文本块特性与常见的 Python """any input""" 特性一样,它支持多行字符串文字,可以不需要使用大多数转义序列,同时可以让开发人员控制格式。虽然这不是特别复杂的特性,但对于开发中想将 HTML 代码引入 Java 来说是极大的便利,代码可读性也极大提高。

关于 Java 13 的其它新特性这里不赘述,感兴趣的话可以看看文末推荐的几篇内容。这里想写的其实是:按照惯例,可以开始盯着 Java 14 的新特性了。

JDK 14 现在处于 Early-Access(EA,早期访问)阶段,按照发布周期正式版本将于明年 3 月 17 日发布。

目前最新版本是 build 17,各个 build 的更新说明可以查看:https://jdk.java.net/13/release-notes

本文引用 InfoWorld 的报导,介绍一下目前 JDK 14 中可能会出现的 3 项新特性。其中有两个特性被正式提了出来,还有一个特性则是预测性质,分别看看:

  • 改进 NullPointerExceptions,通过准确描述哪些变量为 null 来提高 JVM 生成的异常的可用性。该提案的作者希望为开发人员和支持人员提供有关程序为何异常终止的有用信息,并通过更清楚地将动态异常与静态程序代码相关联来提高对程序的理解。
  • 非易失性映射的字节缓冲将添加新的 JDK 特定文件映射模式,该模式允许 FileChannel API 用于创建引用非易失性内存(NVM)的 MappedByteBuffer 实例。NVM 使开发者可以跨程序构建和更新程序状态,而不会产生输入和输出操作通常需要的大量复制和翻译成本,这对于交易程序而言尤其重要。该增强提案主要目标是确保客户端可以连贯有效地从 Java 程序访问和更新 NVM;第二个目标是使用 Unsafe 类中定义的受限制 JDK 内部 API 来实现此提交行为,因此可以由可能需要提交给 NVM 的 MappedByteBuffer 之外的其它类重用;另一个目标是允许现有 API 跟踪在 NVM 上映射的缓冲区,以进行监控和管理。
  • Switch Expressions 在 JDK 12 与 13 中都是预览状态,预计在 JDK 14 中成为稳定特性。switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。

JDK 14 EA 版本下载地址:https://jdk.java.net/13

最后,需要注意的是 EA 阶段的特性也有可能永远不会出现在最终的 JDK/Java 14 正式 GA 版本中。

回到本文开头,关于 Java 13 的相关内容:

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:JDK/Java 14 可能带来什么新特性?
加载中

精彩评论

这波天秀
这波天秀
放心,中国的javaer 还会继续打磨jdk8,java8之后再无java
longforus
longforus
万年java8
冷月V天一
jdk哪个版本没有gc的优化?这是选择性看不见呀
dwingo
dwingo
直接编译也是有局限性的. 编译成最终机器码了就意味着很难再实现动态生成代码进行编译链接,高度优化的反射,运行时采集信息的JIT优化. 安卓现在是二者各有取舍. 至于安卓的内存问题主要是后台常驻服务太多,Java的JIT并不是主要原因.
dwingo
dwingo
JVM发展这么多年了,有效的优化手段基本用尽,已接近优化极限,现在的更新即使还有点性能提升也不值一提了.

最新评论(95

ooxxooxx
ooxxooxx
回复 @疯兔子 : 新项目都转PPT了,清爽的一逼
醉饮太平
万年8
f
freezingsky
java8,在国内也是花N的才切过来的。 之后的版本,虽说很多新的特性,但有那个精力 , 可以考虑学习Go。
不灬语丶
不灬语丶
回复 @yozoco : 语言不是只有效率,你要效率直接用C不是更好?苹果效率高运行效率高那么为啥服务端没有他呢?
y
yozoco
回复 @不灬语丶 : jvm就是在错误的方向发展,这点的学学苹果,运行效率第一
不灬语丶
不灬语丶
回复 @yozoco : 这样做就是退化了,现在大多语言也有vm只不过他们不叫jvm也没jvm高级而已。那你觉得oracle谷歌会没考虑过去掉jvm嘛
y
yozoco
回复 @不灬语丶 : 服务端更应该摆脱jvm,这个本身应该做在编译器上,不同系统编译出不同的执行文件而不是 一个系统装一个运行环境,程序严重依赖运行库
web实习虫
web实习虫
简称 j8
堂风
是不是一直用最新版,就能一直免费了?机智如我。
依然藏锋
依然藏锋
单线程的Nodejs吗?:grimacing:
返回顶部
顶部