java jdk12

基于Java SE(标准版)12的Java开发套件12的生产版本现已发布。 Oracle可以为Linux,Windows和MacOS提供JDK 12构建。

[ Java JDK 11中所有重要的新功能 。 • 15个Java框架,可为开发人员提供帮助 。 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

哪里可以下载JDK 12

您可以从Java.net网站下载JDK 12 。

开源构建是根据GNU通用公共许可证v2提供的,带有Classpath Exception。 在非开放源代码许可下,可以在Oracle技术网络上找到来自Oracle的JDK 12商业版本。

Java 12的新功能

雪兰多亚垃圾收集器

Java 12添加了Shenandoah(一种实验性垃圾收集算法) ,通过在运行Java线程的同时执行疏散工作来减少垃圾收集暂停时间。 Shenandoah为重视响应能力和可预测的短暂停顿的应用程序提供了合适的算法。 但是,其目的不是解决所有JVM暂停问题。

红帽公司目前在Aarch64和AMD64架构上支持Shenandoah。

G1垃圾收集器的可中止混合收集

如果Java 1混合集合可能超出暂停目标,则Java 12将使其中止。 G1的目标是达到用户为其收集暂停提供的暂停时间目标。

以前,高级分析引擎选择了收集期间要完成的工作量。 结果是一组称为集合集的区域。 确定集合并开始收集后,G1会立即收集所有区域中所有区域中的所有活动对象。 但是,如果应用程序的启发式方法选择的集合集太大,则可能导致G1超过暂停时间目标。

需要一种机制来检测启发式方法何时重复选择了不正确的工作量来进行收集,如果发生这种情况,则让G1分步执行增量工作,其中收集可以在每个步骤之后中止。 Java 12中引入的机制使G1可以更频繁地满足暂停时间目标。

Swift返回未使用的已提交内存

Java 12增强了G1,可以在空闲时自动将Java堆内存返回给操作系统。 当应用程序活动非常少时,将在合理的时间内释放此内存。

以前,G1仅在完全垃圾回收或并发周期中从堆返回内存。 由于G1试图避免完全垃圾回收,仅基于堆占用和分配活动触发并发周期,因此在许多情况下,除非被迫在外部这样做,否则它不会返回堆内存。 在通过使用付费资源的容器环境中,此行为是不利的。 即使当JVM由于不活动而仅使用其分配的内存的一小部分时,G1仍保留了整个堆。 因此,客户一直在为所有资源付费,而云提供商则无法充分利用其硬件。

使用Java 12,JVM可以检测堆未充分利用的阶段,并在此期间自动减少其堆使用情况。

JVM常数API

该API对密钥类文件和运行时工件的名义描述进行建模,尤其是可从常量池中加载的常量。 Java 12在新包java.lang.invoke.constant定义了一系列基于值的符号引用类型,以描述每种可加载常量。

常量池存在于每个Java类中,并在该类中存储操作数和字节码指令。 常量池中的条目描述了运行时工件(例如类和方法)或简单值(例如字符串和整数)。 这些条目称为可加载常量。

操纵类文件的程序必须对字节码指令进行建模,然后对可加载常量进行建模。 但是,使用标准Java类型对可加载常量进行建模是不够的。 对于描述字符串的可加载常量,这可能是可以接受的,但对于描述类的可加载常量,这是有问题的,因为生成“活动的” Class对象依赖于类加载的正确性和一致性。 但是,类加载具有许多环境依赖性和故障模式。

因此,处理可加载常量的程序如果可以操纵类和方法以及鲜为人知的工件(例如方法句柄和名义上象征形式的动态计算的常量),则可以简化。 因此,JVM常数API为库和工具提供了一种描述可加载常数的标准方法。

改进了启动,CDS和垃圾收集

Java 12增强了JDK构建过程,以在64位平台上使用默认类列表生成默认类数据共享(CDS)存档。 这可以缩短开箱即用的启动时间,并且无需运行-Xshare:dump即可从CDS中受益。 链接映像后,已将JDK构建过程修改为运行java-xshare:dump

包括了其他命令行选项,以微调垃圾回收堆时间,以改善常见情况下的内存布局。 具有更高级要求的用户,例如包含应用程序类和不同垃圾收集配置的自定义类列表,仍然能够创建自定义CDS存档。

减少了ARM端口数量

Java 12删除了所有与arm64端口相关的源,同时保留了32位ARM和64位aarch64 。 删除此端口将使贡献者将精力放在单个64位ARM实施上,并消除维护两个端口可能导致的重复工作。 当前,JDK中有两个64位ARM端口。

切换表达式

开关表达式通过扩展switch语句简化了编码,因此它既可以用作语句也可以用作表达式。 这使语句和表达式都可以使用“传统的”或“简化的”作用域,并控制流的行为。 这些更改导致更简单的“日常”编码,并为在switch使用模式匹配提供了方法。

随着Java构建者开始支持模式匹配,Java switch语句的不规则性已成为障碍。 这些包括开关块的默认控制流行为; 切换块的默认作用域,其中该块被视为一个单一作用域; 并仅以声明的方式进行切换。 Java的switch语句的当前设计紧密遵循诸如C ++之类的语言,并且默认情况下支持fallthrough语义。 此控制流对于编写低级代码很有用。 但是,当在较高级别的上下文中使用switch时,其容易出错的性质开始超过灵活性。

基本基准套件

JDK 12包括基本的微基准套件,已将其添加到平台的源代码中。 目的是使开发人员更容易运行现有基准或建立新基准。

Microbenchmarks套件提案于2014年7月创建,并于2018年11月初进行了更新,由Java Microbenchmark Harness (JMH)支持,用于构建用Java和其他JVM语言编写的基准。 该套件与JDK源代码位于同一目录中,开发人员可以轻松添加新的基准测试。

为新的JDK功能提供基准或创建涵盖JDK中所有内容的完整基准不是目标。 还要注意,常规JDK构建不需要基准测试套件,它是一个单独的构建目标。

该提案要求在wiki.openjdk.java.net上创建一个新页面,以解释如何开发基准测试和描述需求。 这些要求将要求遵守编码标准,可复制的性能和文档。

JDK 12更新

计划要求JDK 12在六个月内获得JDK 13的成功之前接受两次更新。 JDK 12是2017年9月随JDK 9引入的Oracle六个月发行计划的一部分。 与JDK 11不同,JDK 12是一个功能版本,而JDK 11是一个长期支持版本,已计划了数年的支持。

翻译自: https://www.infoworld.com/article/3301197/jdk-12-the-new-features-in-java-12.html

java jdk12

java jdk12_JDK 12:Java 12中的新功能相关推荐

  1. Java平台,标准版Oracle JDK 9中的新功能

    Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个 ...

  2. java中怎样定义实数_Java Math 类中的新功能,第 1 部分: 实数

    在这篇由两部分组成的文章中,Elliotte Rusty Harold 与您一起探讨经典 java.lang.Math 类中的"新"功能.第 1 部分主要讨论比较单调的数学函数.第 ...

  3. Java 11:String类中的新方法

    Java 11:String类中的新方法 Java 11没有很多特定于语言的功能.因此,令人惊讶的是,在Java String Class中引入了6种新方法. Java 11 String类新方法 让 ...

  4. Java 11中的新功能和API详解系列1

    Java 11中的新功能和API详解系列1 2018.9.27 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. JDK 11在语言语法方面有一个小改动,增加了相当数量的新API,以及 ...

  5. Java JDK 11:现在可以使用所有新功能

    为什么80%的码农都做不了架构师?>>>    删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能 目录 哪里可以下载JDK 11 Java 11 JDK中 ...

  6. Windows 12:发布日期、新功能、价格、硬件要求

    距离Windows 11首次发布仅一年时间,但关于 Windows 12 的传言已经开始四处流传.有报道称,微软正计划切换到Windows 的新更新周期,未来几个月将不会发布 Windows 11 2 ...

  7. bit1618c 功能简介_c 9中的新功能简介

    bit1618c 功能简介 With the upcoming release of .NET 5 - the release which unifies the .NET runtimes - Mi ...

  8. SQLSERVER2014中的新功能

    SQLSERVER2014中的新功能 转载自:http://blog.csdn.net/maco_wang/article/details/22701087 博客人物:maco_wang SQLSER ...

  9. spring 5.x(1)-----Spring Framework 5.x中的新功能

    Spring Framework 5.x中有什么新功能 5.1版中的新功能 一般核心修订 基础设施: 在类路径和模块路径上对JDK 11的无警告支持. 支持Graal原生图像约束(反射,参数名称). ...

  10. drx功能开启后_简单实用!小米手机中这些新功能真香

    小米手机作为国产机热销品牌之一,它除了有好看的外观,还有很多隐藏的实用功能,今天小编就来和大家分享5个小米手机里你不知道的功能. Al电话助理 看到陌生号码时,很多人第一反应就是挂掉,不想接听,但又担 ...

最新文章

  1. 海门工业机器人_海门凹凸模压标机推荐-无锡胜宝机电
  2. 黄聪:Python+NLTK自然语言处理学习(三):计算机自动学习机制
  3. leveldb原理和使用
  4. cms监控android,CMSV9道路监控终端
  5. delphi 调 web api_小程序web同构Kbone
  6. linux path环境变量起什么作用,shell基础(5)PATH环境变量的作用和使用方法
  7. (11)System Verilog对象复制
  8. 【数据库系统原理】实体-联系模型
  9. 面试之js 数组插入删除
  10. 【03】创建型-原型模式
  11. 华硕点亮系统无法连接到服务器,华硕点亮点亮后台管理系统
  12. 计算机蓝屏代码0x0000007b,电脑开机出现蓝屏代码0x0000007b怎么办?
  13. 统计假设检验之显著性检验(significance test)
  14. Http405错误,方法类型也没有错,解决办法
  15. ctags二进制形式内容
  16. 虎牙年报披露2019年扭亏为盈 腾讯操持下与斗鱼合并倒计时?
  17. 一张图区分0、null、undefined、Non-zero
  18. 水 hdu5208 2015-04-20 21:03 36人阅读 评论(0) 收藏
  19. 阿根廷世界杯夺冠,跨境卖家如何借势营销?
  20. 最强大易用的开源MODBUS库-YMODBUS,包含MASTER/SLAVE

热门文章

  1. SessionFactory:使用与配置
  2. 程序设计课程设计报告(学生成绩管理系统)
  3. fprintf 函数详解
  4. 8051单片机Proteus仿真与开发实例-OLED显示屏(SSD1306控制器)I2C驱动显示中文及图片仿真
  5. MPAndroidChart的详细使用——BarChart条形图组(三)
  6. 谓词表示法求解农夫、狼、山羊、白菜问题(个人理解)
  7. 云服务器云虚拟主机区别,带你了解云服务器和云虚拟主机有什么区别?
  8. Android: How to Capture Screen in Gingerbread(2.3中实现截屏)
  9. vi linux insert切换该行第一个字符,Linux之Vi命令讲解
  10. Dump文件介绍与使用