Java12新特性 -- 其他新增,移除,废弃项
支持unicode 11
JDK 12版本包括对Unicode 11.0.0的支持。在发布支持Unicode 10.0.0的JDK 11之后,Unicode 11.0.0引
入了以下JDK 12中包含的新功能:
684 new characters
11 new blocks
7 new scripts.
其中:
684个新字符,包含以下重要内容:
66个表情符号字符(66 emoji characters)
Copyleft符号(Copyleft symbol)
评级系统的半星(Half stars for rating systems)
额外的占星符号(Additional astrological symbols)
象棋中国象棋符号(Xiangqi Chinese chess symbols)
7个新脚本:
Hanifi Rohingya
Old Sogdian
Sogdian
Dogra
Gunjala Gondi
Makasar
Medefaidrin
11个新块,包括上面列出的新脚本的7个块和以下现有脚本的4个块:
格鲁吉亚扩展(Georgian Extended)
玛雅数字(Mayan Numerals)
印度Siyaq数字(Indic Siyaq Numbers)
国际象棋符号(Chess Symbols)
支持压缩数字格式化
NumberFormat 添加了对以紧凑形式格式化数字的支持。
@Test
public void testCompactNumberFormat(){
var cnf = NumberFormat.getCompactNumberInstance(Locale.CHINA,
NumberFormat.Style.SHORT);
System.out.println(cnf.format(1_0000));
System.out.println(cnf.format(1_9200));
System.out.println(cnf.format(1_000_000));
System.out.println(cnf.format(1L << 30));
System.out.println(cnf.format(1L << 40));
System.out.println(cnf.format(1L << 50));
}
输出
1万
2万
100万
11亿
1兆
1126兆
增加项:String新增方法
- String的transform(Function)
var result = "foo"
.transform(input -> input + " bar")
.transform(String::toUpperCase)
System.out.println(result); // FOO BAR
- String的indent方法,调整String实例的缩进。
private static void testIndent() {
System.out.println("======test java 12 indent======");
String result = "Java\n Python\nC++".indent(3);
System.out.println(result);
}
Files新增mismatch方法,文件内容比对
public void testFilesMismatch() throws IOException {
FileWriter fileWriter = new FileWriter("tmp\\a.txt");
fileWriter.write("a");
fileWriter.write("b");
fileWriter.write("c");
fileWriter.close();
FileWriter fileWriterB = new FileWriter("tmp\\b.txt");
fileWriterB.write("a");
fileWriterB.write("1");
fileWriterB.write("c");
fileWriterB.close();
System.out.println(Files.mismatch(Path.of("tmp/a.txt"),Path.of("tmp/b.txt")));
}
其他新增项
- Collectors新增teeing方法用于聚合两个downstream的结果
- CompletionStage新增exceptionallyAsync、exceptionallyComposeAsync方法,允许方法体在异步线程执
行,同时新增了exceptionallyCompose方法支持在exceptionally的时候构建新的CompletionStage。 - ZGC: Concurrent Class Unloading
- ZGC在JDK11的时候还不支持class unloading,JDK12对ZGC支持了Concurrent Class Unloading,默认是
开启,使用-XX:-ClassUnloading可以禁用
- ZGC在JDK11的时候还不支持class unloading,JDK12对ZGC支持了Concurrent Class Unloading,默认是
- 新增-XX:+ExtensiveErrorReports
- -XX:+ExtensiveErrorReports可以用于在jvm crash的时候收集更多的报告信息到hs_err.log文件中,
product builds中默认是关闭的,要开启的话,需要自己添加-XX:+ExtensiveErrorReports参数
- -XX:+ExtensiveErrorReports可以用于在jvm crash的时候收集更多的报告信息到hs_err.log文件中,
- 新增安全相关的改进
- 支持java.security.manager系统属性,当设置为disallow的时候,则不使用SecurityManager以提升性
能,如果此时调用System.setSecurityManager则会抛出UnsupportedOperationExceptionkeytool新增-
groupname选项允许在生成key pair的时候指定一个named group新增PKCS12 KeyStore配置属性用于自
定义PKCS12 keystores的生成Java Flight Recorder新增了security-related的event支持ChaCha20 and
Poly1305 TLS Cipher Suites
- 支持java.security.manager系统属性,当设置为disallow的时候,则不使用SecurityManager以提升性
移除项
- 移除com.sun.awt.SecurityWarnin;
- 移除FileInputStream、FileOutputStream、- Java.util.ZipFile/Inflator/Deflator的finalize方法;
- 移除GTE CyberTrust Global Root;
- 移除javac的-source, -target对6及1.6的支持,同时移除--release选项;
废弃项
- 废弃的API列表见deprecated-list
- 废弃-XX:+/-MonitorInUseLists选项
- 废弃Default Keytool的-keyalg值
Java12新特性 -- 其他新增,移除,废弃项的更多相关文章
- Java12新特性 -- 默认生成类数据共享(CDS)归档文件
默认生成类数据共享(CDS)归档文件 同一个物理机/虚拟机上启动多个JVM时,如果每个虚拟机都单独装载自己需要的所有类,启动成本和内 存占用是比较高的.所以Java团队引入了类数据共享机制 (Clas ...
- Java13新特性 -- 新增 移除 废弃 已知问题等
新增 添加FileSystems.newFileSystem(Path, Map<String, ?>) Method 新的java.nio.ByteBuffer Bulk get/put ...
- Java12新特性
switch表达式(预览) 传统switch的缺点 匹配是自上而下的,如果忘记写break, 后面的case语句不论匹配与否都会执行; 所有的case语句共用一个块范围,在不同的case语句定义的变量 ...
- [置顶]
Kubernetes1.7新特性:新增自动伸缩条件和参数
一.核心概念 Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能.云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要 ...
- [置顶]
kubernetes1.7新特性:新增StorageOS卷插件和Local持久存储
背景介绍 在Kubernetes中卷的作用在于提供给POD存储,这些存储可以挂载到POD中的容器上,进而给容器提供存储. 从图中可以看到结构体PodSpec有个属性是Volumes,通过这个Volum ...
- Java12新特性 -- switch表达式
传统switch表达式的弊端: 匹配是自上而下的,如果忘记写break, 后面的case语句不论匹配与否都会执行: 所有的case语句共用一个块范围,在不同的case语句定义的变量名不能重复: 不能在 ...
- Java12新特性 -- 只保留一个 AArch64 实现
现状 当前 Java 11 及之前版本JDK中存在两个64位ARM端口.这些文件的主要来源位于src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录 ...
- Java12新特性 -- 增强G1,自动返回未用堆内存给操作系统
Java 12 中增强了 G1 垃圾收集器关于混合收集集合的处理策略,这节主要介绍在 Java 12 中同时也对 G1垃圾回收器进行了改进,使其能够在空闲时自动将 Java 堆内存返还给操作系统,这也 ...
- Java12新特性 -- 可中断的 G1 Mixed GC
G1是一个垃圾收集器,设计用于具有大量内存的多处理器机器.由于它提高了性能效率,G1垃圾收集器最终将取代CMS垃圾收集器. 该垃圾收集器设计的主要目标之一是满足用户设置的预期的 JVM 停顿时间. G ...
随机推荐
- linux 命令输出保存为文件的三种方式
一.ls >2.txt 将ls命令直接保存到home文件夹下的2.txt,命令窗口无显示 二.ls | tee 2.txt 也是直接保存在了home文件夹下的2.txt,命令 ...
- rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用
Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合:广义而言,Rootkit也可视为一项技术. 目录 1 rootkit是什么 2 rootkit的功能 root ...
- Kudu+Impala介绍
Kudu+Impala介绍 概述 Kudu和Impala均是Cloudera贡献给Apache基金会的顶级项目.Kudu作为底层存储,在支持高并发低延迟kv查询的同时,还保持良好的Scan性能,该特性 ...
- 201671030104 邓海祥 实验十四 团队项目评审&课程项目总结
项目 内容 课程名称 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 课程学习目标 (1)掌握软件项目评审会流程:(2)反思 ...
- 30、Python程序中的线程操作(oncurrent模块)
进程是cpu资源分配的最小单元,一个进程中可以有多个线程. 线程是cpu计算的最小单元. 对于Python来说他的进程和线程和其他语言有差异,是有GIL锁. GIL锁 GIL锁保证一个进程中同一时刻只 ...
- js的类型系统--js基于原型的基石是所有对象最终都能够类型自证
一.动态类型 变量能够类型自证的类型即为动态类型 二.基础与内置类型 三.对象与类型的关系 1.对象本身能够自证为基本类型: 2.元原型可能为一个空的集合: 3.复合对象的成员能够自证为基本类型: 4 ...
- 用OKR让你的员工嗨起来
在<OKR工作法>这本书中,作者主要用了叙述故事的方式来讲解了在OKR实践的整个过程,这样的讲解方式让整本书显得生动有趣,却又处处是引人深思的道理.比如说TeaBee在第一次OKR实践失败 ...
- Cortex Architecture
内容来自github 官方文档,参考连接:https://github.com/cortexproject/cortex/blob/master/docs/architecture.md Cortex ...
- 超实用文件监控多线程FTP上传工具
这是自己很久以前写的一个多线程FTP 上传工具,支持多账户,自定义线程数,自定义文件监控目录,可用做文件发布使用,非常实用,今天有小伙伴问起,现分享出来: using System; using Sy ...
- 「BJOI2018」治疗之雨
传送门 Description 有\(m+1\)个数,第一个数为\(p\),每轮:选一个数\(+1\),再依次选\(k\)个数\(-1\) 要求如果第一个数\(=N\),不能选它\(+1\),如果第一 ...