jdk12(java se development kit)是全新发布的java jdk正式版本,这一版本又新增了8个新特性,让用户可以消除维护重复工作的两套,在这里用户可以实现jmh更多语句的应用,基准测试以及主语表达方式,欢迎有需要的用户来it猫扑下载!
关于jdk12
按java的发布周期,于美国时间 2019 年 3 月 19 日 —— java 12 正式发布了。这距离java 11发布的 2018 年 09 月 25 日 刚半年时间。
按照现在 java 每 6 个月一个版本的进度,让我们这些疲于开发业务需求的研发们望其项背啊。我们该如何在变化越来越快的 java 平台上让我们自己不被时代所抛弃,如何让我们的项目不被快速变化的 java 远远落下。

jdk12新特性
1、默认cds归档
通过在64位平台上的默认类列表的帮助下生成cds归档来改进jdk构建过程,从而有效地消除了运行java -xshare:dump。 此功能的目标包括:
1.)改进开箱即用的启动时间,以及
2.)摆脱使用-xshare:dump。
2、switch 表达式
使用java 12,switch不仅可以作为语句也可以作为表达式。 无论作为语句或者作为表达式,switch都可以使用传统/简化的作用域和控制流行为。 这将有助于简化代码,并为在switch中使用模式匹配铺平道路。
java开发人员正在增强java编程语言,以使用模式匹配来解决当前switch语句的几个问题。 这包括:switch块的默认控制流行为,switch块默认作用域(被视为单个作用域的块)和switch仅作为语句。
在java 11中,switch语句追随c和c++,默认情况下使用fall-through语义。 虽然传统的控制流程在编写低级代码时很有用,但随着switch在更高级别的环境中采用,易出错会盖过其灵活性。
3、shenandoah gc
shenandoah是一种垃圾收集(gc)算法,旨在保证低延迟(10 - 500 ms的下限)。 它通过在运行java工作线程的同时执行gc操作减少gc暂停时间。 使用shenandoah,暂停时间不依赖于堆的大小。 这意味着无论堆的大小如何,暂停时间都是差不多的。
这是一个实验性功能,不包含在默认(oracle)的openjdk版本中。
4、jmh 基准测试
此功能为jdk源代码添加了一套微基准测试(大约100个),简化了现有微基准测试的运行和新基准测试的创建过程。 它基于java microbenchmark harness(jmh)并支持jmh更新。
此功能使开发人员可以轻松运行当前的微基准测试并为jdk源代码添加新的微基准测试。 可以基于java microbenchmark harness(jmh)轻松测试jdk性能。 它将支持jmh更新,并在套件中包含一组(约100个)基准测试。
5、jvm 常量 api
jep 334引入了一个api,用于建模关键类文件和运行时artifacts,例如常量池。 此api将包括classdesc,methodtypedesc,methodhandledesc和dynamicconstantdesc等类。此 api 对于操作类和方法的工具很有帮助。
6、g1的可中断 mixed gc
此功能通过将mixed gc集拆分为强制部分和可选部分,使g1垃圾收集器更有效地中止垃圾收集过程。通过允许垃圾收集过程优先处理强制集,g1可以更多满足满足暂停时间目标。
g1是一个垃圾收集器,设计用于具有大量内存的多处理器机器。由于它提高了性能效率,g1垃圾收集器最终将取代cms垃圾收集器。
g1垃圾收集器的主要目标之一是满足用户设置的暂停时间。g1采用一个分析引擎来选择在收集期间要处理的工作量。此选择过程的结果是一组称为gc集的区域。一旦gc集建立并且gc已经开始,那么g1就无法停止。
如果g1发现gc集选择选择了错误的区域,它会将gc区域的拆分为两部分(强制部分和可选部分)来切换到处理mix gc的增量模式。如果未达到暂停时间目标,则停止对可选部分的垃圾收集。
7、g1归还不使用的内存
此功能的主要目标是改进g1垃圾收集器,以便在不活动时将java堆内存归还给操作系统。 为实现此目标,g1将在低应用程序活动期间定期生成或持续循环检查完整的java堆使用情况。
这将立即归还未使用的部分java堆内存给操作系统。 用户可以选择执行full gc以最大化返回的内存量。
8、移除多余arm64实现
java 12将只有一个arm 64位实现(aarch64)。 目标是删除所有与arm64实现相关的代码,同时保留32位arm端口和64位aarch64实现。
这将把重点转移到单个64位arm实现,并消除维护两个实现所需的重复工作。 当前的jdk 11实现中有两个64位arm实现。
常见问题
oracle对openjdk社区的计划是什么?
oracle计划继续使用java社区作为openjdk项目的一部分开发java se平台的下一版本。openjdk是oracle计划贡献的唯一开源java se实现。
oracle是否致力于openjdk?
是。oracle仍然致力于将openjdk作为**的开源java实现,我们将继续改进openjdk并欢迎外部贡献者。
oracle支持java开放式创新的计划是什么?
我们打算继续支持开源和开放标准。oracle致力于为最终用户提供选择,灵活性和更低的计算成本,我们无法强调使用开放标准的重要性,无论是在开源软件还是非开源软件的环境中。
oracle是否实行开源开发?
oracle正在领导或参与大量的开源项目。有关开源的列表以及有关oracle开源的更多信息,请参阅http://oss.oracle.com。
我可以更多地了解oracle对开源和开放标准的看法吗?
当然。有关 开源和开放标准的重要性,请 访问http://www.oracle.com/technetwork/oramag/2010/o40interview-086226.html,与oracle首席企业架构师edward screven进行面谈。
你能详细说明甲骨文的openjdk计划吗?
当然。javaone 2010 for java se宣布的路线图通过两个版本加速了java se的可用性,一个在2011年,另一个在2012年。相应的openjdk版本将继续作为oracle java development kit(jdk)7和jdk的基础。 8.您可以在 http://blogs.oracle.com/henrik/2010/10/java_roadmap_from_javaone_2010.html上找到有关路线图和oracle计划的更多信息。
jdk 7是oracle下一版java se平台实现的名称。openjdk开源社区中的jdk 7项目是oracle与更广泛的java和开源社区合作,致力于实现最近批准的java se 7 jsr中指定的功能。
jrockit会发生什么?它会成为openjdk的一部分吗?
oracle工程师目前正在努力将 oracle java hotspot java虚拟机(jvm)和oracle jrockit jvm合并为融合产品,该产品利用了这些市场领先实现的**功能。oracle计划将组合的oracle java hotspot和oracle jrockit jvm的结果贡献给openjdk。
oracle会改变openjdk许可模式吗?
不会.openjdk社区继续通过甲骨文以及其他公司,研究人员和个人的贡献而蓬勃发展,基于gpl的许可模式是这一成功的重要组成部分。甲骨文没有计划改变它。
我听说ibm正在加入openjdk?
是。oracle和ibm 于2010年10月宣布,我们将在openjdk社区中合作开发领先的开源java se实现,并使openjdk社区成为开源java se开发的主要位置。oracle和ibm将支持在javaone 2010之前提出的openjdk开发路线图,该路线图加速了java se在开源社区中的可用性。oracle和ibm之间的合作建立在openjdk作为java se主要开发平台以及oracle和ibm对java社区贡献的悠久历史的成功基础之上。您可以在 http://blogs.oracle.com/henrik/2010/10/java_roadmap_from_javaone_2010.html上找到有关路线图和oracle计划的更多信息。