日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文主要講述一下JAVA15的新特性

Java15的新特性

 

版本號

java -versionopenjdk version "15" 2020-09-15OpenJDK Runtime Environment (build 15+36-1562)OpenJDK 64-Bit Server VM (build 15+36-1562, mixed mode, sharing)

從version信息可以看出是build 15+36

特性列表

339:Edwards-Curve Digital Signature Algorithm (EdDSA)

新增rfc8032描述的Edwards-Curve Digital Signature Algorithm (EdDSA)實現 使用示例

// example: generate a key pair and signKeyPairGenerator kpg = KeyPairGenerator.getInstance("Ed25519");KeyPair kp = kpg.generateKeyPair();// algorithm is pure Ed25519Signature sig = Signature.getInstance("Ed25519");sig.initSign(kp.getPrivate());sig.update(msg);byte[] s = sig.sign();// example: use KeyFactory to contruct a public keyKeyFactory kf = KeyFactory.getInstance("EdDSA");boolean xOdd = ...BigInteger y = ...NamedParameterSpec paramSpec = new NamedParameterSpec("Ed25519");EdECPublicKeySpec pubSpec = new EdECPublicKeySpec(paramSpec, new EdPoint(xOdd, y));PublicKey pubKey = kf.generatePublic(pubSpec);

360:Sealed Classes (Preview)

JDK15引入了sealed classes and interfaces.用于限定實現類,限定父類的使用,為后續的pattern matching的exhaustive analysis提供便利 示例

package com.example.geometry;?public abstract sealed class Shape    permits Circle, Rectangle, Square {...}?public final class Circle extends Shape {...}?public sealed class Rectangle extends Shape     permits TransparentRectangle, FilledRectangle {...}public final class TransparentRectangle extends Rectangle {...}public final class FilledRectangle extends Rectangle {...}?public non-sealed class Square extends Shape {...}

這里使用了3個關鍵字,一個是sealed,一個是permits,一個是non-sealed;permits的這些子類要么使用final,要么使用sealed,要么使用non-sealed修飾;針對record類型,也可以使用sealed,因為record類型暗示這final

package com.example.expression;?public sealed interface Expr    permits ConstantExpr, PlusExpr, TimesExpr, NegExpr {...}?public record ConstantExpr(int i)       implements Expr {...}public record PlusExpr(Expr a, Expr b)  implements Expr {...}public record TimesExpr(Expr a, Expr b) implements Expr {...}public record NegExpr(Expr e)           implements Expr {...}

371:Hidden Classes

JDK15引入了Hidden Classes,同時廢棄了非標準的sun.misc.Unsafe::defineAnonymousClass,目標是為frameworks提供在運行時生成內部的class

372:Remove the Nashorn JavaScript Engine

JDK15移除了Nashorn JavaScript Engine及jjs tool,它們在JDK11的被標記為廢棄;具體就是jdk.scripting.nashorn及jdk.scripting.nashorn.shell這兩個模塊被移除了

373:Reimplement the Legacy DatagramSocket API

該特性使用更簡單及更現代的方式重新實現了java.net.DatagramSocket及java.net.MulticastSocket以方便更好的維護及debug,新的實現將會更容易支持virtual threads

374:Disable and Deprecate Biased Locking

該特性默認禁用了biased locking(-XX:+UseBiasedLocking),并且廢棄了所有相關的命令行選型(BiasedLockingStartupDelay, BiasedLockingBulkRebiasThreshold, BiasedLockingBulkRevokeThreshold, BiasedLockingDecayTime, UseoptoBiasInlining, PrintBiasedLockingStatistics and PrintPreciseBiasedLockingStatistics)

375:Pattern Matching for instanceof (Second Preview)

instanceof的Pattern Matching在JDK15進行Second Preview,示例如下:

public boolean equals(Object o) {     return (o instanceof CaseInsensitiveString cis) &&         cis.s.equalsIgnoreCase(s); }

377:ZGC: A Scalable Low-Latency Garbage Collector

ZGC在JDK11被作為experimental feature引入,在JDK15變成Production,但是這并不是替換默認的GC,默認的GC仍然還是G1;之前需要通過-XX:+UnlockExperimentalVMOptions -XX:+UseZGC來啟用ZGC,現在只需要-XX:+UseZGC就可以 相關的參數有ZAllocationSpikeTolerance、ZCollectionInterval、ZFragmentationLimit、ZMarkStackSpaceLimit、ZProactive、ZUncommit、ZUncommitDelay ZGC-specific JFR events(ZAllocationStall、ZPageAllocation、ZPageCacheFlush、ZRelocationSet、ZRelocationSetGroup、ZUncommit)也從experimental變為product

378:Text Blocks

Text Blocks在JDK13被作為preview feature引入,在JDK14作為Second Preview,在JDK15變為最終版

379:Shenandoah: A Low-Pause-Time Garbage Collector

Shenandoah在JDK12被作為experimental引入,在JDK15變為Production;之前需要通過-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC來啟用,現在只需要-XX:+UseShenandoahGC即可啟用

381:Remove the Solaris and SPARC Ports

Solaris and SPARC Ports在JDK14被標記為廢棄,在JDK15版本正式移除

383:Foreign-Memory Access API (Second Incubator)

Foreign-Memory Access API在JDK14被作為incubating API引入,在JDK15處于Second Incubator

384:Records (Second Preview)

Records在JDK14被作為preview引入,在JDK15處于Second Preview

385:Deprecate RMI Activation for Removal

JDK15廢棄了RMI Activation,后續將被移除

細項解讀

上面列出的是大方面的特性,除此之外還有一些api的更新及廢棄,主要見JDK 15 Release Notes,這里舉幾個例子。

添加項

  • Support for Unicode 13.0 (JDK-8239383)

升級了Unicode,支持Unicode 13.0

  • Added isEmpty Default Method to CharSequence (JDK-8215401)

給CharSequence新增了isEmpty方法 java.base/java/lang/CharSequence.java

    /**     * Returns {@code true} if this character sequence is empty.     *     * @implSpec     * The default implementation returns the result of calling {@code length() == 0}.     *     * @return {@code true} if {@link #length()} is {@code 0}, otherwise     * {@code false}     *     * @since 15     */    default boolean isEmpty() {        return this.length() == 0;    }
  • Added Support for SO_INCOMING_NAPI_ID Support (JDK-8243099)

jdk.net.ExtendedSocketOptions新增了SO_INCOMING_NAPI_ID選型

  • Specialized Implementations of TreeMap Methods (JDK-8176894)

JDK15對TreeMap提供了putIfAbsent, computeIfAbsent, computeIfPresent, compute, merge方法提供了overriding實現

  • New Option Added to jcmd for Writing a gzipped Heap Dump (JDK-8237354)

jcmd的GC.heap_dump命令現在支持gz選型,以dump出gzip壓縮版的heap;compression level從1(fastest)到9(slowest, but best compression),默認為1

  • New System Properties to Configure the TLS Signature Schemes (JDK-8242141)

新增了jdk.tls.client.SignatureSchemes及jdk.tls.server.SignatureSchemes用于配置TLS Signature Schemes

  • Support for certificate_authorities Extension (JDK-8206925)

支持certificate_authorities的擴展

移除項

  • Obsolete -XX:UseAdaptiveGCBoundary (JDK-8228991)

淘汰了-XX:UseAdaptiveGCBoundary

廢棄項

  • Deprecated -XX:ForceNUMA Option (JDK-8243628)

廢棄了ForceNUMA選項

  • Disable Native SunEC Implementation by Default (JDK-8237219)

默認禁用了Native SunEC Implementation

已知問題

  • java.net.HttpClient Does Not Override Protocols Specified in SSLContext Default Parameters (JDK-8239594)

HttpClient現在沒有覆蓋在SSLContext Default Parameters中指定的Protocols

其他事項

  • DatagramPacket.getPort() Returns 0 When the Port Is Not Set (JDK-8237890)

當DatagramPacket沒有設置port的時候,其getPort方法返回0

  • Improved Ergonomics for G1 Heap Region Size (JDK-8241670)

優化了默認G1 Heap Region Size的計算

小結

Java15主要有如下幾個特性

  • 339:Edwards-Curve Digital Signature Algorithm (EdDSA)
  • 360:Sealed Classes (Preview)
  • 371:Hidden Classes
  • 372:Remove the Nashorn JavaScript Engine
  • 373:Reimplement the Legacy DatagramSocket API
  • 374:Disable and Deprecate Biased Locking
  • 375:Pattern Matching for instanceof (Second Preview)
  • 377:ZGC: A Scalable Low-Latency Garbage Collector
  • 378:Text Blocks
  • 379:Shenandoah: A Low-Pause-Time Garbage Collector
  • 381:Remove the Solaris and SPARC Ports
  • 383:Foreign-Memory Access API (Second Incubator)
  • 384:Records (Second Preview)
  • 385:Deprecate RMI Activation for Removal

doc

  • JDK 15 Features
  • JDK 15 Release Notes
  • Oracle JDK 15 Release Notes
  • Java SE deprecated-list
  • The Arrival of Java 15
  • Java 15 and IntelliJ IDEA

分享到:
標簽:Java15
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定