Java 12新功能完整指南

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何预防光纤光缆布线中的雷击伤害

众所周知,光纤是具有不导电性的,可以免受冲击电流,光缆也具有良好的防护性能,光缆中的金属构件对地绝缘值较高,雷电流不易进入光缆,但因为光缆具有加强芯,特别是直埋光缆具有铠装层,…

三步法教你快速解决光纤收发器故障

光纤收发器,是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元,是网络通信中很重要的一种通信设备。但只要是机器,难免会有出现故障的时候,出现问题,找出问题,然后解决问题就…

网管光纤收发器产品硬件功能及网管收发器优点介绍

飞畅科技生产研发的网管型光纤收发器具有非网管收发器的全部功能,各种速率,单模/多模,单纤/双纤。此设备的网管界面设置简单,功能全面。此系列网管收发器支持多种网管方式,包括SNMP,WEB和Console等网管方式…

中北大学 软件构造 U+及上课代码详解

作业1 1.数据类型可分为两类:(原子类型) 、结构类型。 2.(数据结构)是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合 3.代码重构指的是改变程序的(结构)而不改变其行为,以便提高代码的可读性、易修改性等。 4.软件实…

如何挑选家用交换机 交换机选购攻略分享

现如今,伴随着网络的迅速普及,交换机的“身影”也开始出现在不少普通个人用户家庭中。不过许多家庭用户在挑选交换机时,往往都会将注意力集中到交换机的扩展性能上,他们一味地追求交换机的接口数要多;其实,…

oracle不维护java_宣布 Java 8 停止维护后,Oracle 又毙掉了 JavaOne!

2019 年 1 月之后,Oracle 将不会在网站上发布 Java SE 8 商业使用的更新下载。如需持续获取安全的 bug 修复和安全补丁以及 Java SE 8 或以前版本的稳定性支持,可以通过 Oracle Java SE 高级版,Oracle Java SE 高级桌面,或 Oracle…

工业以太网交换机有多少个快速以太网接口?

工业以太网交换机应用于复杂的工业环境中实时以太网数据传输,以太网交换机是非常的重要,它把握着一个网络的命脉,有人会提出以太网交换机有多少个快速以太网接口?到底该如何进行选择呢?接下来我们就跟随飞畅科技的小编…

java判断是否第一次出现_利用java判断字符首次出现的位置,java替换最后一个特定字符...

利用java判断字符首次出现的位置利用爪哇判断字符首次出现的位置,目的:(学习视频分享:java视频教程实现代码如下:导入Java。util。收藏品;导入Java。util。LinkedList导入Java。util。列表;导入Java。util。…

使用HTTPS和OAuth 2.0保护服务到服务的Spring微服务

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 如果您使用Spring Boot,Spring Cloud和Spring Cloud Config,则…

java ee13_一口气了解多线程及其Java实现

进程:进程就是应用程序在内存中分配的空间,也就是正在运行的程序,各个进程之间不干扰。同时进程保存着程序每一个时刻运行的状态。程序:用某种编程语言(java、python等)编写,能够完成一定任务或者功能的代码集合&#…

apache camel_Apache Camel中的断路器模式

apache camel骆驼通常在分布式环境中用于访问远程资源。 远程服务可能由于各种原因和期间而失败。 对于短时间后暂时不可用且可恢复的服务,重试策略可能会有所帮助。 但是某些服务可能会失败或挂起更长时间,从而使调用应用程序无响应且速度缓慢。 防止级…

matlab 形态学 颗粒_数字图像处理Matlab-形态学图像处理(附代码)

这是一篇基于matlab,数字图像处理的形态学研究与实现的文章,希望能对你产生帮助。我还写了一套《数字图像处理》(冈萨雷斯版本)的学习笔记,欢迎关注我的csdn同名主页,一起学习成长~1.Objectives:1.利用 MATLAB 研究二值…

视频光端机维护三大步骤

视频光端机分为发射端设备和接收端设备,发射端设备和摄像机一样置于室外,工程人员通常是对发射端设备过行维护测试。对于视频光端机的检修工作,我们一般分为三个步骤来进行测试。接下来就由飞畅科技的小编来带大家详细了解下视频光端机维护的…

2021年广东-国家开放大学考试指南(必看)-远程辅助以及微信公众号查题

考前准备工作 一、电脑以及摄像头、浏览器准备 1:一台比较流畅的电脑,这个千万不能马虎,万一考试电脑蓝屏或者卡顿,那是很要命的。 2:摄像头:笔记本有自带的可以用自带的,如果是台式机&#…

飞畅科技——视频光端机用光模块的选型详解

光模块的出现简化了数字视频光端机的设计,我们只要把光模块当作一个具有光电转换功能的部件就可以了。那么针对各种不同的光端机,应该怎样选择相应的光模块呢?接下来就由飞畅科技的小编来为大家详细介绍下视频光端机用光模块的选型&#xff0…

视频监控中的光端机是干什么用的?

现如今,随着社会的进步和经济的发展,人民生活开始富裕,经济宽裕的家庭用户已开始考虑使用监控产品来保护自己,监控已经呈现融入家庭生活的趋势。就数字监控而言,虽然是后起之秀,但依然是现阶段发展趋势。光…

每个Java开发人员都应该知道的10个基本工具

大家好,我们已经到了2019年的第二个月,我相信你们所有人都已经为2019年的学习目标以及如何实现这些目标制定了目标。 我一直在撰写一系列文章,为您提供一些知识,使您可以学习和改进以成为2019年更好的全方位开发人员,例…

spring集成jndi_Spring应用程序与JNDI连接池的集成测试

spring集成jndi我们都知道,无论何时连接到数据库,都需要使用连接池。 所有使用JDBC 4类的现代驱动程序都支持它。 在本文中,我们将概述Spring应用程序中的连接池,以及如何在非JEE环境(例如测试)中处理相同的…

数字光端机和模拟视频光端机的六个不同点

说到模拟视频光端机与数字光端机的不同之处,在这里飞畅科技的小编要介绍六点不一样的地方来详细讲解模拟视频光端机与数字光端机的不同。模拟视频光端机与数字光端机究竟有何区别,这也是众多用户所关心的确问题,本文从以下几个方面进行如下论…

在硒中按TagName定位元素

硒定位器是处理网页上的元素时的关键。 从ID,名称,类,标记名,XPath,CSS选择器等定位器列表中,可以根据需要选择其中任何一种,然后在网页上找到Web元素。 由于与tagName或linktext相比&#xff0…