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. 使用java做一个能赚钱的微信群聊机器人(2020年基于PC端协议最新可用版)

    前言 微信群机器人,主要用来管理群聊,提供类似天气查询.点歌.机器人聊天等用途. 由于微信将web端的协议封杀后,很多基于http协议的群聊机器人都失效了,所以这里使用基于PC端协议的插件来实现. 声 ...

  2. C语言之枚举数据类型

    枚举数据类型概述:1.枚举类型是C语言的一种构造类型.它用于声明一组命名的常数,2.当一个变量有几种可能的取值时,可以将它定义为枚举类型.3.枚举类型是由用户自定义的由多个命名枚举常量构成的类型,其声 ...

  3. phpstudy nginx设置CORS跨域不起作用的可能解决方法

    今天搞了半天的跨域问题,想通过nginx配置跨域,希望以后本地调试程序都不用为这件事烦心.无非就是设置几个请求头: add_header Access-Control-Allow-Origin *; ...

  4. 重拾c++第四天(7):函数相关

    1.引用变量: int a; int &b = a; //引用变量 指向同一地址,必须在初始化时定义,且一直对原变量献上忠诚,主要针对类对象 2.函数重载最好用在功能相同,但数据类型不同的情况 ...

  5. kuangbin专题 专题九 连通图 Strongly connected HDU - 4635

    题目链接:https://vjudge.net/problem/HDU-4635 题目:有向图,给定若干个连通图,求最多还能添加几条边,添完边后,图仍然要满足 (1)是简单图,即没有重边或者自环 (2 ...

  6. cogs 1963. [HAOI 2015] 树上操作 树链剖分+线段树

    1963. [HAOI 2015] 树上操作 ★★★☆   输入文件:haoi2015_t2.in   输出文件:haoi2015_t2.out   简单对比时间限制:1 s   内存限制:256 M ...

  7. js-xlsx 一个实用的js 导出列表插件

    在前端开发过程中,导出列表功能的开发无非两种,一种是有后台生成,发生给前端下载,第二种是前端进行列表的导出工作.之前接触了一种前端导出列表的插件 tableExport.js ,但是其缺点很明显,需要 ...

  8. java小心机(6)| 多态的一些坑

    对于"多态"的概念,想必大家都很熟悉了,但我们还是来回顾一下吧 class Actor { public void act(){ System.out.println(" ...

  9. selenium,滚到页面底部的方法

    你可以用 execute_script方法来处理这个. 调用原生javascript的API,这样你想滚到哪里就能滚到哪里.   下面的代码演示了如何滚到页面的最下面:   driver.execut ...

  10. docker swoft

    docker swoft 安装并运行docker docker run -d -p 80:80 --name swoft swoft/swoft docker ps 查看正在运行的容器 docker ...