日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Java 11新特性解读

發(fā)布時(shí)間:2025/3/20 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 11新特性解读 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

美國(guó)當(dāng)?shù)貢r(shí)間9月25日,Oracle 官方宣布 Java 11 (18.9 LTS) 正式發(fā)布,可在生產(chǎn)環(huán)境中使用!這是自 Java 8 后的首個(gè)長(zhǎng)期支持版本,將支持到2026年,可以使用下面的地址進(jìn)行下載:

https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

版本更新說(shuō)明

在Java的版本上,按照官方的說(shuō)法,Java 的版本發(fā)布周期變更為每六個(gè)月一次 —— 每半年發(fā)布一個(gè)大版本,每個(gè)季度發(fā)布一個(gè)中間特性版本,并且承諾不會(huì)跳票。通過(guò)這樣的方式,開(kāi)發(fā)團(tuán)隊(duì)可以把一些關(guān)鍵特性盡早合并到 JDK 之中,以快速得到開(kāi)發(fā)者反饋,在一定程度上避免出現(xiàn)像 Java 9 這樣兩次被迫延遲發(fā)布的窘?jīng)r。

按照官方的說(shuō)法,新的發(fā)布周期會(huì)嚴(yán)格遵循時(shí)間點(diǎn),將于每年的3月份和9月份發(fā)布。所以 Java 11 的版本號(hào)是 18.9(LTS)。不過(guò)與 Java 9 和 Java 10 這兩個(gè)被稱為“功能性的版本”不同(兩者均只提供半年的技術(shù)支持),Java 11 不僅提供了長(zhǎng)期支持服務(wù),還將作為 Java 平臺(tái)的參考實(shí)現(xiàn)。Oracle 直到2023年9月都會(huì)為 Java 11 提供技術(shù)支持,而補(bǔ)丁和安全警告等擴(kuò)展支持將持續(xù)到2026年。

許可證

按照官方的說(shuō)法,從 Java 11 開(kāi)始,Oracle 將在 GPLv2 許可證下提供 JDK 版本,采用 Classpath Exception (GPLv2+CPE) 的方式,滿足了在商業(yè)許可下使用 Oracle JDK 作為 Oracle 產(chǎn)品或服務(wù)的一部分,或者不想使用開(kāi)源軟件的需求。這種使用開(kāi)源許可證和商業(yè)許可證的組合取代了歷史上的“BCL”許可證,該許可證具有免費(fèi)和付費(fèi)商業(yè)條款的組合。

新特性

根據(jù)官網(wǎng)的公開(kāi)信息,此處的Java 11主要更新了 17 個(gè) JEP。

  • 181: Nest-Based Access Control(基于嵌套的訪問(wèn)控制)

  • 309: Dynamic Class-File Constants(動(dòng)態(tài)的類文件常量)

  • 315: Improve Aarch64 Intrinsics(改進(jìn) Aarch64 Intrinsics)

  • 318: Epsilon: A No-Op Garbage Collector(Epsilon 垃圾回收器,又被稱為"No-Op(無(wú)操作)"回收器)

  • 320: Remove the Java EE and CORBA Modules(移除 Java EE 和 CORBA 模塊,JavaFX 也已被移除)

  • 321: HTTP Client (Standard)

  • 323: Local-Variable Syntax for Lambda Parameters(用于 Lambda 參數(shù)的局部變量語(yǔ)法)

  • 324: Key Agreement with Curve25519 and Curve448(采用 Curve25519 和 Curve448 算法實(shí)現(xiàn)的密鑰協(xié)議)

  • 327: Unicode 10

  • 328: Flight Recorder(飛行記錄儀)

  • 329: ChaCha20 and Poly1305 Cryptographic Algorithms(實(shí)現(xiàn) ChaCha20 和 Poly1305 加密算法)

  • 330: Launch Single-File Source-Code Programs(啟動(dòng)單個(gè) Java 源代碼文件的程序)

  • 331: Low-Overhead Heap Profiling(低開(kāi)銷的堆分配采樣方法)

  • 332: Transport Layer Security (TLS) 1.3(對(duì) TLS 1.3 的支持)

  • 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)(ZGC:可伸縮的低延遲垃圾回收器,處于實(shí)驗(yàn)性階段)

  • 335: Deprecate the Nashorn JavaScript Engine(棄用 Nashorn JavaScript 引擎)

  • 336: Deprecate the Pack200 Tools and API(棄用 Pack200 工具及其 API)

新特性體驗(yàn)

那么,作為一名Java程序猿,Java 11究竟帶來(lái)了哪些改變呢,對(duì)于我們寫(xiě)代碼會(huì)有什么幫助呢?

1,在Lambda表達(dá)式中使用var

本地變量類型var是java 10提出的新概念,它可以從上下文中推斷出本地變量的類型,從而提高代碼可讀性。

public?class?Main?{????public?static?void?main(String[]?args)?throws?Exception?{????????URL?url?=?new?URL("http://www.oracle.com/");????????URLConnection?conn?=?url.openConnection();????????Reader?reader?=?new?BufferedReader(????????????????new?InputStreamReader(conn.getInputStream()));????}}

使用var聲明后,上面的代碼可以改寫(xiě)成:

public?class?Main?{????public?static?void?main(String[]?args)?throws?Exception?{????????var?url?=?new?URL("http://www.oracle.com/");????????var?conn?=?url.openConnection();????????var?reader?=?new?BufferedReader(????????????????new?InputStreamReader(conn.getInputStream()));????}}

在上面的代碼中,我們使用var代替了URL、URLConnection、Reader,提高了代碼的可讀性,也方便了開(kāi)發(fā)。 但是在JAVA 10中,var變量不能在lambda表達(dá)式中聲明,在JAVA 11中,解決了這個(gè)問(wèn)題。現(xiàn)在,我們可以在lambda表達(dá)式中使用var,例如:

(var?x,?var?y)?->?x.process(y)//等價(jià)于(x,?y)?->?x.process(y)

2,標(biāo)準(zhǔn)化的HTTP Client API

以前我們?cè)诔绦蛑惺褂肏ttpClient時(shí),通常會(huì)引入apache的HttpClient工具包。現(xiàn)在,我們可以使用JDK原生的 HttpClient。

  • public class HttpTest {

  • ? ?public static void main(String[] args) throws Exception {

  • ? ? ? ?String uri = "http://www.oracle.com/";


  • ? ? ? ?HttpClient client = HttpClient.newHttpClient();

  • ? ? ? ?HttpRequest request = HttpRequest.newBuilder()

  • ? ? ? ? ? ? ? ?.uri(URI.create(uri))

  • ? ? ? ? ? ? ? ?.build();


  • ? ? ? ?HttpResponse<String> response =

  • ? ? ? ? ? ? ? ?client.send(request, HttpResponse.BodyHandlers.ofString());


  • ? ? ? ?System.out.println(response.body());

  • ? ?}

  • }

  • 上面的例子是同步的get請(qǐng)求,還有其他的方法HttpClient也是提供的,例如:異步get、post提交、并發(fā)請(qǐng)求、Get Json和Post Json等。更多資料請(qǐng)查看附件的鏈接:

    JDK 11 發(fā)布說(shuō)明

    https://www.oracle.com/technetwork/java/javase/11u-relnotes-5093844.html

    JDK 11 官方文檔

    https://docs.oracle.com/en/java/javase/11/

    JDK 11 新特性

    https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html#NewFeature


    轉(zhuǎn)載于:https://blog.51cto.com/13883927/2339000

    總結(jié)

    以上是生活随笔為你收集整理的Java 11新特性解读的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。