JDK/Java14发布

  3月17日,JDK/Java14正式GA(GeneralAvailable)。

  此版本包含的JEP(Java/JDKEnhancementProposals,JDK增强提案)比Java12和13加起来的还要多。总共16个新特性如下:

  305:PatternMatchingforinstanceof(Preview)

  为instanceof运算符引入模式匹配(预览阶段)

  通过模式匹配,开发者可以用更简洁和更安全的方式来表达通用的程序逻辑。instanceof运算符的模式匹配支持从对象中按条件来提取组件,此语言特性目前处于预览阶段。

  343:PackagingTool(Incubator)

  打包工具(孵化阶段)

  创建一个用于打包独立Java应用程序的工具。

  345:NUMA-AwareMemoryAllocationforG1

  针对G1的NUMA-Aware内存分配

  通过实现NUMA-aware内存分配,提升G1在大型机器上的性能。

  349:JFREventStreaming

  JFR事件流

  暴露JDKFlightRecorder数据以进行连续监视。

  352:Non-VolatileMappedByteBuffers

  非易失性映射的字节缓冲

  非易失性映射的字节缓冲将添加新的JDK特定文件映射模式,该模式允许FileChannelAPI用于创建引用非易失性内存(NVM)的MappedByteBuffer实例。

  358:HelpfulNullPointerExceptions

  改进NullPointerExceptions,通过准确描述哪些变量为null来提高JVM生成的异常的可用性。该提案的作者希望为开发人员和支持人员提供有关程序为何异常终止的有用信息,并通过更清楚地将动态异常与静态程序代码相关联来提高对程序的理解。

  359:Records(Preview)

  Records提供了一种紧凑的语法来声明类,以帮助开发者写出更简洁的代码,这些类是浅层不可变数据(shallowlyimmutabledata)的透明拥有者。该特性主要用在特定领域的类,这些类主要用于保存数据,不提供领域行为。

  361:SwitchExpressions(Standard)

  SwitchExpressions在JDK12与13中都是预览状态,现在在JDK14中已成为稳定特性。switch表达式扩展了switch语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的switch语法,或者使用简化的“caseL->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为switch中的模式匹配做好准备。

  362:DeprecatetheSolarisandSPARCPorts

  弃用Solaris和SPARC端口

  弃用Solaris/SPARC,Solaris/x64和Linux/SPARC端口,以便在未来的版本进行移除。

  363:RemovetheConcurrentMarkSweep(CMS)GarbageCollector

  移除CMS(ConcurrentMark-Sweep)垃圾回收器。

  364:ZGConmacOS

  将ZGC垃圾回收器移植到macOS。

  365:ZGConWindows

  将ZGC垃圾回收器移植到Windows。

  366:DeprecatetheParallelScavenge+SerialOldGCCombination

  弃用ParallelScavenge+SerialOldGC的垃圾回收算法组合。

  367:RemovethePack200ToolsandAPI

  移除Pack200工具和API

  删除java.util.jar包中的pack200和unpack200工具以及Pack200API。

  368:TextBlocks(SecondPreview)

  文本块特性(TextBlocks)与常见的Python"anyinput"特性一样,它支持多行字符串文字,可以不需要使用大多数转义序列,并以一种可预测的方式自动设置字符串格式,同时可以让开发人员控制格式。虽然这不是特别复杂的特性,但对于开发中想将HTML代码引入Java来说是极大的便利,代码可读性也极大提高。目前处于第二个预览阶段。

  370:Foreign-MemoryAccessAPI(Incubator)

  外部内存访问API(孵化阶段)

  新增一个API以允许Java程序安全有效地访问Java堆之外的外部内存。

  点击查看详情,可用于生产环境的二进制包下载。