Java开发工具包(JDK)14已进入发布候选阶段,总体功能基本已确定。计划中的标准Java升级将具有新功能,例如JDK Flight Recorder事件流,模式匹配和开关表达式。

JDK 14计划在Java设定六个月的发布节奏之后,于2020年3月17 日正式发布。针对JDK 14的功能包括:

  • JFR事件流 提供一个API,用于持续使用来自流程内和流程外应用程序的JFR数据。JFR是用于收集有关正在运行的Java应用程序的概要分析和诊断数据的工具。事件流建议记录与非流情况相同的事件集,并且如果可能,开销小于百分之一。事件流必须与基于磁盘和基于内存的非流记录共存。在这种情况下,HotSpot VM使用JFR发出500个以上的数据点,而其中的大多数数据仅可通过分析日志文件来使用,因此很容易激发这种提议。当前,用户必须开始录制,停止录制,将内容转储到磁盘,然后解析录制文件。这对于应用程序概要分析非常有效,但不适用于监视目的。监控使用情况的一个示例是显示动态更新数据的仪表板。创建记录会产生开销,例如将数据从磁盘存储库复制到单独的记录文件。如果有一种方法可以在不创建新记录文件的情况下从磁盘存储库读取正在记录的数据,则可以避免很多开销。
  • 计划进行的改进 NullPointerExceptions涉及通过准确描述哪个变量为null来提高JVM生成的异常的可用性。该提案的作者希望为开发人员和支持人员提供有关程序过早终止的有用信息,并通过更清楚地将动态异常与静态程序代码相关联来提高对程序的理解。一个目标是减少开发人员的困惑和担忧NullPointerExceptions。
  • 非易失性映射的字节缓冲区将添加新的特定于JDK的文件映射模式,该模式允许使用FileChannel API创建MappedByteBuffer引用非易失性内存(NVM)的实例。NVM使程序员可以跨程序运行来构建和更新程序状态,而不会产生输入和输出操作通常需要的大量复制或翻译成本。这对于交易程序尤其重要。因此,此JDK增强建议的主要目标是确保客户端可以连贯且有效地从Java程序访问和更新NVM。第二个目标是使用在class中定义的受限制的JDK内部API来实现此提交行为Unsafe,因此除其他类外,它可以重用它。MappedByteBuffer可能需要提交给NVM。另一个目标是允许现有API跟踪在NVM上映射的缓冲区,以进行监视和管理。目标OS / CPU平台包括Linux / x64和Linux / AArch64。
  • 开关表达式通过扩展switch使其可以用作语句或表达式而简化了编码 。在JDK 12和JDK 13中都进行预览之后,开关表达式有望成为JDK 14的永久功能。开关表达式还为使用模式匹配做好了准备switch。模式匹配使开发人员可以更简洁,安全地从对象中有条件地提取组件。
  • G1垃圾回收器的NUMA感知内存分配,旨在提高大型计算机上的G1性能。
  • 删除并发标记扫描(CMS)垃圾收集器,该垃圾收集器先前已弃用并计划删除。CMS的后继者包括ZGC和Shenandoah。
  • 将ZGC移植到MacOS。到目前为止,仅Linux才支持它。
  • 删除java.util.jar软件包中的pack200和unpack200工具以及Pack200 API 。所有这些在Java SE 11中已弃用,目的是将来删除它们。Pack200是JAR文件的压缩方案。
  • 记录,它将提供一种紧凑的语法来声明为浅层不可变数据的透明持有者的类。该提案指出,声明浅不可改变的,行为良好的名义数据集合应该简单明了。
  • 一种打包工具,处于开发的孵化阶段,用于打包自包含的Java应用程序。该工具将基于JavaFX javapackager。此类工具已包含在Java中,但作为删除JavaFX的一部分从JDK 11中删除。
  • 通过为 操作员提供模式匹配来增强语言instanceof。这将是JDK 14中的预览功能。模式匹配可以更简洁和安全地表示程序中的通用逻辑,主要是从对象中有条件地提取组件。
  • 文本块的第二个预览,这是一种多行字符串文字,它避免了大多数转义序列的需要,并以可预测的方式自动格式化字符串。文本块将在需要时使开发人员可以控制格式,简化Java程序的编写,并增强字符串的可读性。文本块在JDK 13中进行了预览;JDK 14迭代将添加转义序列以管理显式空白和换行控制。
  • 不赞成使用Parallel Scavenge和Serial Old垃圾收集算法的组合。Java维护者认为这种组合很少使用,但需要大量维护。
  • 将ZGC(Z垃圾收集器)移植 到Windows。在恢复到提议的目标列表之后,此功能再次移至正式目标列表。
  • 外部存储器访问API,引入了Java程序的API,可以安全有效地访问Java堆外部的外部存储器。该API应该可以替代Java程序访问内存(包括nio.ByteBuffer和)的主要途径sun.misc.Unsafe。新的API应该能够在各种类型的内存上运行,包括本机,持久性内存和托管堆。API不可能破坏JVM的安全性。内存释放应在源代码中明确。该API有望帮助开发本机互操作支持,这是巴拿马项目的目标。
  • 弃用Solaris / Sparc,Solaris / x64和Linux / Sparc端口,以在将来的发行版中将其删除。放弃对这些端口的支持将使OpenJDK贡献者能够加速新功能的开发。尽管Solaris和Sparc是Java最初的创建者Sun Microsystems的关键技术,但近年来,它们已被Linux OS和Intel处理器取代了其技术领域。

JDK14都要问世了,你还在用JDK8吗的更多相关文章

  1. Jdk14都要出了,还不能使用 Optional优雅的处理空指针?

    1. 前言 如果你没有处理过空指针,那么你不是一位真正的 Java 程序员. 空指针确实会产生很多问题,我们经常遇到空的引用,然后又想从这个空的引用上去获取其他的值,接着理所当然的碰到了 NullPo ...

  2. Jdk14 都要出了,Jdk9 的新特性还不了解一下?

    Java 9 中最大的亮点是 Java 平台模块化的引入,以及模块化 JDK.但是 Java 9 还有很多其他新功能,这篇文字会将重点介绍开发人员特别感兴趣的几种功能. 这篇文章也是 Java 新特性 ...

  3. 都2019年了,还问GET和POST的区别

    摘要: 对比GET与POST. 原文:都9102年了,还问GET和POST的区别 作者:程淇铭 Fundebug经授权转载,版权归原作者所有. 1. 前言 最近看了一些同学的面经,发现无论什么技术岗位 ...

  4. CentOS 8 都发布了,你还不会用 nftables?

    原文链接:CentOS 8 都发布了,你还不会用 nftables? 如果你没有生活在上个世纪,并且是云计算或相关领域的一名搬砖者,那你应该听说最近 CentOS 8 官方正式版已经发布了,CentO ...

  5. [转帖]CentOS 8 都发布了,你还不会用 nftables?

    CentOS 8 都发布了,你还不会用 nftables? https://www.cnblogs.com/ryanyangcs/p/11611730.html 改天学习一下 原文链接:CentOS ...

  6. Android IOS WebRTC 音视频开发总结(六九)-- qq视频通话都是p2p,我们还怕啥?

    本文主要介绍在线教育这个行业,文章最早发表在我们的微信公众号上,支持原创,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.rtc.help 先简单介绍什么是p2p? p是peer ...

  7. 都9102年了,还不会Docker?10分钟带你从入门操作到实战上手

    Docker简述 Docker是一种OS虚拟化技术,是一个开源的应用容器引擎.它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支 ...

  8. Context都没弄明白,还怎么做Android开发?

    Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言 ...

  9. CDR都特价了,你还用破解版?

    目前,CDR X6特价活动,从18的年的元旦一直持续到现在,真可谓是痛快淋漓,大喜若狂,但是,似乎好像是....这么强有力的活动马上就要告一段落了,因为限量1000 套的抢购要卖!完!了!难不难过,痛 ...

随机推荐

  1. php5升php7代码修改整理

    1. 为什么升级至php7 a.安全需要 过早以至于不维护的php版本难免会有未修补的漏洞,安全性要求较高的行业是要及时升级的. b.性能提升(开启opcache hugepage) 据说性能提升一倍 ...

  2. 【ARM】---STM32位带操作总结---浅显易懂

    正在准备做毕业设计,配置LED_Config()的时候,又看到了位带操作的宏定义,我又嘀咕了,什么是位带操作,一年前在使用位带操作的时候,就查阅过好多资料,Core-M3也看过,但是对于博主这种“低能 ...

  3. poi解析excel(含有公式)

    /** * Jun 25, 2012 */ import java.io.File; import java.io.FileInputStream; import java.io.IOExceptio ...

  4. 保存数据到txt

    join用的不错 a = "Hello, world" b = "你好,世界" c = "How are you?" with open(f ...

  5. angular 构建可以动态挂载的配置服务

    angular 构建可以动态挂载的配置服务 Intro 在 angular 中可以指定 environment 来区分不同环境下的配置,然而 environment 中的配置会在打包时是固定的,想要像 ...

  6. 解决浮点运算精度不准确,BigDecimal 加减乘除

    package com.kflh.boxApi.utils.util; import java.math.BigDecimal; /** * @program: BoxApi * @descripti ...

  7. 管理2000+Docker镜像,Kolla是如何做到的

    根据 DockerHub 上的数据,整个 Kolla 项目管理的 镜像有 2000 多个,这么多的镜像,是怎么定义,又是如何构建的呢? 简介 我们一直在说的 Kolla,通常情况下泛指,包括了 Kol ...

  8. 团队项目-Beta冲刺1(七个小矮人)

    团队项目-Beta冲刺1(七个小矮人) 一.格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScien ...

  9. pc端的弹性布局适配方案

    方案及原理:使用rem单位,通过window.onresize来监听浏览器窗口,获取窗口宽度,并改变跟字体大小来达到弹性适配效果. function adaptor(){ //为了便于计算,这里以19 ...

  10. 优雅写Java之四(类与对象)

    一.类相关用法 二.Bean 三.泛型与注解 四.序列化