Java 14 来了!

2020 年 3 月 26 日 CSDN

整理 | 弯月, 责编 | 郭芮
头图 | CSDN 下载自视觉中国
出品 | CSDN(ID:CSDNnews)

近日,Oracle发布了Java 14版,这是自从Java采用六个月一次的发布周期之后的第五次发布。
此次的发布与之前的Java 11、12和13一样,离不开OpenJDK社区无数个人和组织的无私奉献。JDK 14修正了1986个JIRA问题,其中1458个来自Oracle的员工,另外528个来自独立开发者和其他公司的开发者的提交。

Java 14的新功能和改动

Java 14提供了16个主要的改进和变更,包括两个孵化器模块、三个预览特性、两个弃用的功能以及两个删除的功能。其中“孵化器模块”的意思是将尚未定稿的API和工具先交给开发者使用,以获得反馈,并用这些反馈进一步改进Java平台的质量。而“预览特性”则是规格已经成型、实现已经确定,但还未最终定稿的功能。它们出现在Java中的目的是收集在真实世界中使用后的反馈信息,促进这些功能的最终定稿。
最后,一些功能通过“弃用”的方式从JDK中移除,也就是说,开发者不应该继续使用这些功能,应当将使用这些功能的现有代码迁移到其他API上。使用Java 9引入的jdeprscan工具可以对jar文件进行静态扫描,找出使用了被弃用API的功能,从而方便开发者修改这些API调用。
JDK 14中的16项改动包括:
1.JEP 305:instanceof的模式匹配(预览):该预览功能给instanceof带来了模式匹配功能。有了该功能,开发者就不需要写大量的样板代码,从而提高生产力,还能实现更精确的类型安全的代码。
2.JEP 343:打包工具(孵化器模块):这个孵化器工具为开发者带来了一种打包Java应用的方式,可以将Java应用打包成平台所需的格式。开发者可以使用该工具,将现代应用程序的运行时和应用程序打包成单一的交付物。
3.JEP 345:G1的NUMA-Aware的内存分配:该功能改进了G1垃圾回收器在非一致内存访问(NUMA)系统上的整体性能。
4.JEE 349:JFR事件流:该功能可以公开JDK Flight Recorder(JFR)的数据,用于持续监视,从而简化各种工具和应用程序访问JFR数据的方式。
5.JEP 352:非易失性映射字节缓冲区(Non-Volatile Mapped Byte Buffers):该特性为JDK增加了一种文件映射模式,用于访问非易失性内存。非易失性内存能够持久保持数据,因此可以利用该特性来改进性能。
6.JEP 358:非常实用的NullPointerException:该特性改进了NullPointerException的可读性,能更准确地给出null变量的信息。该特性可以帮助开发者提高生产力,以及改进各种开发工具和调试工具的质量。
7.JEP 359:Record(预览特性):该预览特性提供了一种更为紧凑的语法,用于定义浅层不可变的数据。值得一提的是,该特性可以大幅减少定义类似数据类型时所需的样板代码,但它的最终目的是提供更好的数据建模方式。
8.JEP 361:switch表达式:这是JDK 12和JDK 13中的预览特性,现在是完整特性了。该特性规定,switch可以当作语句使用,也可以当作表达式使用。这可以简化日常的编码方式,也为模式匹配(JEP 305)特性打下了基础。
9.JEP 362:弃用Solaris和SPARC的移植:该JEP中,Solaris和SPARC的移植版被弃用,以后将被移除。
10.JEP 363:删除并行标记清理(Concurrent Mark Sweep,简称CMS)垃圾回收器:CMS垃圾回收器在两年前JDK 6的时代就被弃用,建议转用CMS的后继者G1回收器,而现在G1回收器已成为默认回收器好几年了。
11.JEP 364:macOS上的ZGC:尽管许多使用ZGC的用户都使用类Linux的环境,但在Windows和macOS上,人们也需要ZGC进行开发和测试。许多桌面应用也可以从ZGC中得到好处。因此,ZGC特性被移植到了Windows和macOS上。
12.JEP 365:Windows上的ZGC:同上。
13.JEP 366:弃用ParallelScavenge和SerialOld GC组合:Parallel Scavenge和Serial Old垃圾回收算法的组合被弃用,这种组合极少被用到。
14.JEP 367:删除Pack200工具和API:删除了pack200和unpack200工具,以及java.util.jar包中的Pack200 API。这些工具和API从Java SE 11就被弃用了。
15.JEP 368:文本块(预览第二版):文本块(Text Block)在Java 13中收到了第一版预览的反馈(JEP 355)后,增加了两个新的转移序列,于Java 14中作为新的预览特性出现。文本块的好处包括:使用跨行文本简化代码编写,增强Java程序中用字符串表示的其他语言的代码的可读性,解析新的转义序列等等。
16.JEP 370:外部内存访问API(Foreign-Memory Access API,孵化器模块 ):该孵化器模块引入了一个新的API,允许Java程序有效、安全地访问位于Java堆之外的外部内存。

工具支持

下列IDE支持Java 14:
  • JetBrains IDEA

  • Apache NetBeans

  • Eclipse IDE

一些流行的自动化构建工具也正在积极准备支持Java 14,比如Apache Maven及其Gradle 6.3插件开始支持Java 14。

参考链接:https://blogs.oracle.com/java-platform-group/the-arrival-of-java-14
【End】

防疫、复工如何并行?天云数据推出人工智能监测方案!到底如何做到事前预防,而不是事后诸葛亮?本周四晚8点天云数据VP陈勇为各位揭晓答案!扫描下方二维码免费报名

推荐阅读 
Siri 自动拨打 911、Google 建筛查网站、IBM 测药物成分,国际抗疫在行动!
百度成立互联网医院;钉钉招小学生产品体验师;iOS 13.4 上线 | 极客头条
人生苦短,不光要用Python,还要在VSCode里用

农村中专生逆袭记:证书等身,收到阿里、腾讯、滴滴大厂面试邀请

为什么要在油气行业中应用 IoT?这 8 个应用场景告诉你 IoT 在油气行业中可以做什么

数字合约如何将所有权下放?如何使用脚本系统将交易转换为可编程的智能合约?答案就在这篇文章里!

你点的每一个在看,我认真当成了喜欢

点击阅读原文,参与报名

登录查看更多
0

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
6大最常用的Java机器学习库一览
AI前线
4+阅读 · 2018年10月9日
Java开发者必看!机器学习开发库精选
云栖社区
5+阅读 · 2018年8月22日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Arxiv
5+阅读 · 2017年7月23日
VIP会员
相关资讯
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
6大最常用的Java机器学习库一览
AI前线
4+阅读 · 2018年10月9日
Java开发者必看!机器学习开发库精选
云栖社区
5+阅读 · 2018年8月22日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Top
微信扫码咨询专知VIP会员