六个月飞得如此之快,是时候再次仔细研究一下即将发布的新JDK版本。 让我们满足Java 12及其向开发人员介绍的功能。


自甲骨文推出其6个月加速发布节奏以来已经有一段时间了,要跟上每个版本及其添加到表中的功能越来越难了。

从好的方面来说,这种快速的发布速度也意味着Java引入了许多新功能供我们利用。 这意味着我们需要一直关注以查看添加了哪些令人兴奋的功能。 现在该看一下Java 12的全部含义了。

Java 12的新功能

雪兰多厄:低暂停时间的垃圾收集器

此实验功能希望添加一个名为Shenandoah的新垃圾收集(GC)算法,该算法是为更喜欢响应性和可预测的短暂停顿的应用程序而设计的。

此功能引入了一种算法,该算法足够有效,以允许程序在可用内存中运行,但也进行了优化,以永不中断正在运行的程序超过几毫秒的时间。

Shenandoah算法通过与正在运行的Java线程同时进行疏散工作,将有助于减少GC暂停时间。 它以并发CPU周期和空间为代价来交换暂停时间,并且暂停时间与堆大小无关,这意味着无论堆是200 MB还是200 GB,您都将具有相同的一致暂停时间。

Oracle确实注意到这并不是要解决所有JVM暂停问题,因为这些问题可能是由于安全时间(TTSP)问题或什至是监视应用程序膨胀引起的。 对于这些情况,该算法将不相关。

切换表达式

该JEP旨在扩展switch语句; 多向分支语句,它提供了一种基于表达式的值将执行分派到代码内不同部分的简便方法。

当前处于预览模式的此扩展使我们能够将switch用作语句或表达式,以简化编码并为即将到来的另一个JEP(Pattern Matching for instanceof( 305 ))做准备。

为了理解其含义,Oracle共享了以下示例。 不必要的冗长和视觉上嘈杂的代码通常掩盖了难以调试的错误,其中丢失的break语句表明发生了意外掉线:

标记为“ case L->”的新开关标签将表示仅在标签匹配时才执行箭头右侧的代码。 因此,现在可以编写之前的代码:

G1改进

Java 12附带了2个对默认垃圾收集器G1的更新。 第一个标题为“ G1的可终止混合集合 ”有助于使G1混合集合(如果它们超过暂停目标)可中止。

当前,G1使用分析引擎来选择收集期间要完成的工作量,一旦确定了收集集并开始了收集,则G1必须收集收集集所有区域中的所有活动对象而不停止。 这导致垃圾收集器超出了暂停时间目标,这是JEP旨在解决的问题。

G1的另一个功能还着重于提高垃圾收集器的性能,特别是返回未使用的已提交内存。

当前版本的G1仅在完整GC或并发周期中从Java堆返回内存。 由于G1努力避免完全避免出现完整的GC,并且仅根据Java堆占用和分配活动触发并发周期,因此在许多情况下,除非强制从外部进行,否则它不会返回Java堆内存。

那就是“ 从G1Swift返回未使用的承诺内存 ”的地方,着重于通过在G1空闲时自动将Java堆内存返回到操作系统来增强垃圾收集器。

还有什么?

Java 12中引入的其他功能包括:

  • Microbenchmark Suite –将微基准的基本套件添加到JDK源代码中,使开发人员可以轻松地运行现有的微基准并创建新的微基准。
  • JVM常量API –引入了一个API,以对关键类文件和运行时工件的名义描述进行建模,例如可从常量池中加载的常量。 该API对于处理Java类和方法的工具很有用。
  • 默认的CDS存档 -增强了JDK生成过程,以生成类数据共享(CDS)存档,并缩短了现成的启动时间。

这值得么?

通过不断的更新,我们看到了越来越多的功能引入该语言–但是开发人员对最近的更改有何感想? 在大型系统和企业中升级和实现新的语言功能并不总是那么容易,更不用说与遗留代码以及团队的本地技巧和黑客建立兼容性。

确实,当我们冷漠地审视最新的Java版本时,我们发现频繁发布并不意味着最新版本是最受欢迎的版本。 通过查看Google趋势,我们发现事实并非如此:

尽管Java 8是家族中“最古老”的成员,但不可否认的是它的流行程度。 Java 11正在受到关注,这可能是因为Java 11是最新的长期受支持的版本,而Java 12在列表的底部。 它是一个新版本,因此我们愿意给它一些时间,但是从当前状态来看,它似乎变化不大。

这是否意味着Oracle应该停止六个月的节奏? 好吧,不。 做出此决定是为了使Oracle能够比以前更快地发布“较小”的功能,从而帮助Java与市场上的其他语言保持一致。

如果您提出要求,那么此更改只会帮助Java保持其功能和流行性,无论是对于编程领域的年轻新手还是即将来临的开发人员和资深人员而言。 现在我们唯一的问题是……Java 13将引入什么,这些功能将如何改变我们的编码方式?

翻译自: https://www.javacodegeeks.com/2019/04/complete-guide-java-12-new-features.html

Java 12新功能完整指南相关推荐

  1. java开发指南_Java 12新功能完整指南

    java开发指南 六个月飞得如此之快,是时候再次仔细研究一下即将发布的新JDK版本. 让我们满足Java 12及其向开发人员介绍的功能. 自Oracle推出加速六个月的发布节奏以来已经有一段时间了,要 ...

  2. Java 12 新特性与功能

    Java 12 新特性与功能 Java 12是Java SE的第12个版本,于2019年3月19日发布.Java 12的发布背景主要是为了帮助开发人员更加高效的进行编程工作,提高Java的性能和稳定性 ...

  3. Java 14 新功能介绍!

    Java 14 新功能介绍! Java 14预定于3月17日发布.那么,14版究竟有什么新功能,对于整天写代码.维护代码的Java开发者来说,哪些功能最有用呢? 作者 | Raoul-Gabriel ...

  4. java 8 新功能详解_Java 8和Java 14之间的新功能

    java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...

  5. Java 版本任你发,我用Java8.(Java 15 新功能介绍 )

    Java 15 在 2020 年 9 月发布,虽然不是长久支持版本,但是也带来了 14 个新功能,这些新功能中有不少是十分实用的. Java 15 官方下载:Archived OpenJDK GA R ...

  6. Java 17 新功能介绍(LTS)

    点赞再看,动力无限.Hello world : ) 微信搜「 程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Ja ...

  7. Spread for WinRT 7新功能使用指南

    您可以将Microsoft Excel 的强大功能嵌入到Windows 8 商店应用程序中,使用丰富的内嵌数据可视化功能展现核心数据和分析结果,按需定制富有创意的表格模版以及发挥更多便捷高效的作用.S ...

  8. java 8 新功能详解_Java 8的8个新功能

    java 8 新功能详解 注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide . Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经 ...

  9. android闪光灯测心率,MIUI 12新功能来了,通过闪光灯测心率,支持全部机型

    原标题:MIUI 12新功能来了,通过闪光灯测心率,支持全部机型 智能手表.手环测心率已经十分常见了,也是必备功能之一,不过手机测心率大家听说过吗?2016年中兴发布的Grand X 4手机通过将心率 ...

最新文章

  1. C++的STL队列实现栈
  2. iscroll上拉加载、下拉刷新
  3. visual studio 高级选项及配置
  4. 57、弱电网络管理入门与基础技术
  5. 计算机网络习题集与习题解析 pdf,计算机网络习题集与答案.pdf
  6. 除了Scrcpy,还有哪些免费的多屏协同软件,例举3款
  7. CodeSmith模板
  8. 大数据项目实战——基于某招聘网站进行数据采集及数据分析(五)
  9. 从明源动力到创新工场这一路走来
  10. pytorch学习笔记——2.4torch.nn模块简介
  11. 基于Arduino开发板的文本转语音(TTS)转换器
  12. Re:从0开始的微服务架构:(二)如何快速体验微服务架构?
  13. 手把手写深度学习(16):用CILP预训练模型搭建图文检索系统/以图搜图/关键词检索系统
  14. 三级分销如何做分销推广 如何设置分销比例
  15. 1546. 和为目标值且不重叠的非空子数组的最大数目-贪心算法
  16. JS前端数据多条件筛选
  17. 如何使用纯 CSS 制作四子连珠游戏
  18. 物联网浪潮之下,前端工程师如何迎刃而上?
  19. pc端如何把URL参数隐藏
  20. 智能卡与RFID技术

热门文章

  1. 2021牛客暑期多校训练营4 D-Rebuild Tree(prufer序列+树形dp)
  2. 工科数学分析无穷级数总结
  3. 【DP】方格计数(nowcoder 20107-B)
  4. org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation
  5. JavaFX UI控件教程(十四)之Tree View
  6. MySQL week()函数
  7. 【双11劲爆干货】阿里高级Java面试题(首发,70道)
  8. 什么是 CAS 机制
  9. 04-插入操作更新操作删除操作
  10. 被黑客盯上了…数据都给打包带走了…