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)java

支持壓縮數字格式化

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新增方法
  1. String的transform(Function)
var result = "foo"
.transform(input -> input + " bar")
.transform(String::toUpperCase)
System.out.println(result); // FOO BAR
  1. 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能夠禁用
  • 新增-XX:+ExtensiveErrorReports
    • -XX:+ExtensiveErrorReports能夠用於在jvm crash的時候收集更多的報告信息到hs_err.log文件中,
      product builds中默認是關閉的,要開啓的話,須要本身添加-XX:+ExtensiveErrorReports參數
  • 新增安全相關的改進
    • 支持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
移除項
  • 移除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值
相關文章
相關標籤/搜索