0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Oracle官方宣布 Java 11(18.9 LTS) 正式發(fā)布

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-10-08 15:07 ? 次閱讀

有多少語言在提刀想反超 Java的路上?但萬萬沒想到,人家并未當回事,如今這款常青藤甚至越跑越歡,當我們還在使用 Java 7/8 時,它已經(jīng)一路跑到了 11。

和預(yù)期的時間差不多,北京時間 9 月 26 日,Oracle 官方宣布 Java 11(18.9 LTS) 正式發(fā)布,可供生產(chǎn)環(huán)境中使用,此次版本的更新,不僅提高了工作效率,也提供了HTTP/2ClientAPI

同時,這也是自 Oracle 宣布以六個月為周期更新后發(fā)布的第一個長期支持版本。下載地址如下:

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

JDK 11 主要特性

最新發(fā)布的 JDK 11 共帶來了 17 項更新:

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

309:Dynamic Class-File Constants(動態(tài)類文件常量)

315:Improve Aarch64 Intrinsics(改進 Aarch64 內(nèi)部函數(shù))

318:Epsilon: A No-Op Garbage Collector(Epsilon:No-Op 垃圾收集器)

320:Remove the Java EE and CORBA Modules(刪除 Java EE 和 CORBA 模塊)

321:HTTP Client (Standard)(HTTP 客戶端)

323:Local-Variable Syntax for Lambda Parameters(Lambda 參數(shù)的變量語法)

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

327:Unicode 10

328:Flight Recorder(飛行記錄器)

329:ChaCha20 and Poly1305 Cryptographic Algorithms(ChaCha20 和 Poly1305 加密算法)

330:Launch Single-File Source-Code Programs(啟動單文件源代碼程序)

331:Low-Overhead Heap Profiling(低開銷堆分配采樣方法)

332:Transport Layer Security (TLS) 1.3(TLS 1.3 的傳輸層安全性)

333:ZGC: A Scalable Low-Latency Garbage Collector(Experimental)(ZGC:可擴展的低延遲垃圾收集器,在實驗階段)

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

336:Deprecate the Pack200 Tools and API(棄用 Pack200 工具和 API)

開發(fā)者的角度來看,上面的特性中有幾點需要特別關(guān)注。

JEP 323 實現(xiàn)了 Java 10 中引入的局部變量類型推斷的擴展。類型推斷是從其余源代碼和鍵入規(guī)則中推導(dǎo)出的數(shù)據(jù)類型。這節(jié)省了開發(fā)者的工作時間,且不會使源代碼過于復(fù)雜,而提高了可讀性。

從 Java 10 開始,可以使用關(guān)鍵字 var 聲明局部變量,如下所示:

//FunktioniertseitJava10varzahl=5;//intvarstring="HelloWorld";//Stringvarobjekt=BigDecimal.ONE;//BigDecimal

在 Java 11 中,不同點在于開發(fā)者可以使用 var 聲明 lambda 參數(shù)。乍一看,這一舉措似乎有點多余,因為在寫代碼過程中可以省略 lambda 參數(shù)的類型,并通過類型推斷確定它們。但是,擴展名對于使用 @Nonnull 和 @Nullable 等類型注釋很有用。

//InferencevonLambda-ParameternConsumerprinter=(vars)->System.out.println(s);//statts->System.out.println(s);//aberkeineMischungvon"var"unddeklariertenTypenm?glich//BiConsumerprinter=(vars1,Strings2)->System.out.println(s1+""+s2);//NützlichfürTypeAnnotationsBiConsumerprinter=(@Nonnullvars1,@Nullablevars2)->System.out.println(s1+(s2==null?"":""+s2));

JDK 11 中另一個亮點在于仍處于實驗階段的新 HTTP Client API 的標準化,該 API 在 JDK 9 中被引入,在 JDK 10 中進行了更新,在本次 JDK 11 中包名由 jdk.incubator.http 改為 java.net.http。HTTP Client API 除了實現(xiàn)了HTTP(1.1和2)、WebSocket,同步和異步調(diào)用以及 Reactive Streams 現(xiàn)在也受支持。還使用清晰易懂的 Fluent 界面,將來可能會淘汰其他 HTTP 客戶端(如 Apache)的使用。

HttpClientclient=HttpClient.newHttpClient();HttpRequestrequest=HttpRequest.newBuilder().uri(URI.create("http://openjdk.java.net/")).build();client.sendAsync(request,asString()).thenApply(HttpResponse::body).thenAccept(System.out::println).join();

JEP 330(啟動單文件源代碼程序)現(xiàn)在可以啟動尚未編譯的類。如今單文件程序在編寫小實用程序時很常見,特別是腳本語言領(lǐng)域。從中開發(fā)者可以省去用 Java 編譯程序等不必要工作,以及減少新手的入門障礙。在基于 Java 10 的程序中可以通過三種方式啟動:

作為* .class文件

作為* .jar文件中的主類

作為模塊中的主類

現(xiàn)在,Java 11 中可以在源代碼文件中聲明類:

#javaHelloWorld.java//statt#javacHelloWorld.java#java-cp.hello.World

在 Unix 操作系統(tǒng)上,Java 文件甚至可以直接作為 Shebang 文件執(zhí)行:

#!/path/to/java--sourceversion

#./HelloWorld.java

其他值得注意的變化包括支持 Unicode 10 標準以及將 Profiler Flight Recorder 集成到 OpenJDK 中(之前僅適用于 Oracle JDK)。Flight Recorder 的目標是盡可能高效地記錄應(yīng)用程序數(shù)據(jù),以便在出現(xiàn)問題時分析 Java 應(yīng)用程序和 JVM。

API 的變化

此外,Java 類庫也有不少小的改動。 特別是字符串:

|WelcometoJShell--Version11|Foranintroductiontype:/helpintro//UnicodezuStringjshell>Character.toString(100)$1==>"d"jshell>Character.toString(66)$2==>"B"http://ZeichenmitFaktormultiplizierenjshell>"-".repeat(20)$3==>"--------------------"http://Enth?lteinTextkeineZeichen(h?chstensLeerzeichen)?jshell>Stringmsg="hello"msg==>"hello"jshell>msg.isBlank()$5==>falsejshell>Stringmsg=""msg==>""jshell>msg.isBlank()$7==>true//AbschneidenvonführendenodernachgelagertenLeerzeichenjshell>"helloworld".strip()$8==>"helloworld"jshell>"helloworld".strip()$9==>"helloworld"jshell>"helloworld".stripTrailing()$10==>"helloworld"jshell>"helloworld".stripLeading()$11==>"helloworld"jshell>"".strip()$12==>""http://Textezeilenweiseverarbeitenjshell>Stringcontent="thisisamultilinecontent Mostlyobtainedfromsomefile whichwewillbreakintolines usingthenewapi"content==>"thisisamultilinecontent Mostlyobtainedfro...ines usingthenewapi"jshell>content.lines().forEach(System.out::println)thisisamultilinecontentMostlyobtainedfromsomefilewhichwewillbreakintolinesusingthenewapi

Java 11 計劃于本月,即 9 月 25 日發(fā)布。與 Java 10 不同,Java 11 不僅提供了長期支持,還將作為 Java 平臺的參考實現(xiàn)。新的長期支持版本每三年發(fā)布一次,根據(jù)后續(xù)的發(fā)布計劃,Java 17 將于 2021 年發(fā)布。

Java 11:刪除了什么?

Oracle JDK 將不再包含 JavaFX(OpenJDK 從未提供過)。相反,JavaFX 通過 OpenJFX 作為單獨的下載提供,并且可以像任何 Java 應(yīng)用程序中的任何其他庫一樣使用。除 JavaFX 外,還將停止對 Applet 和 Java Web Start 的支持。如果仍然想使用 Java Web Start,那么必須保持在 JDK 8 的版本,直至 Oracle 停止免費更新后,花錢購買該服務(wù)。

另一個在 Java 11 中被棄用的 JavaScript 引擎 Rhino。預(yù)計它將在 Java 的未來版本中徹底消失。不過值得注意的是,Rhino 從未真正將自己斷言為 Node.js 上的服務(wù)器端 JavaScript 實現(xiàn)基礎(chǔ)。通過 GraalVM,Oracle 現(xiàn)在采用其他方式在 JVM 上本地運行其他編程語言。

順便說一下,從 Java 11 開始,Java 運行時環(huán)境(JRE)將僅存在于服務(wù)器版本中,而不再存在于桌面中。但是,對于具有模塊系統(tǒng)和 jlink 工具的桌面應(yīng)用程序,開發(fā)者現(xiàn)在可以輕松創(chuàng)建或調(diào)整運行時環(huán)境。

JDK 11 是否值得更新?

今年四月,Oracle 發(fā)布官方聲明表示即將停止對 JDK 8 的正常支持(免費更新):

2019 年 1 月之后,Oracle 將不會在其網(wǎng)站上發(fā)布 Java SE 8 商業(yè)使用的進一步更新下載。如需持續(xù)獲取安全的 Bug 修復(fù)和安全補丁以及 Java SE 8 或以前版本的穩(wěn)定性支持,可以通過 Oracle Java SE 高級版、Oracle Java SE 高級桌面、或 Oracle Java SE 套件。

這意味著,在 2019 年 1 月之后,開發(fā)者想要使用老版本只能付費了,從中也側(cè)面看出,Oracle 在間接性鼓勵用戶主動升級。不過,據(jù)各種對 Java 用戶調(diào)查如 Jaxenter發(fā)現(xiàn),大多數(shù)的開發(fā)者依舊停留在 Java 8 以內(nèi)的版本。

其實,這也不足為怪,當開發(fā)者剛開始吐槽新版本帶來的問題時,Java 已搭載上了火箭更新到了下一版本,讓大家措手不及。此前,就連Java Collection Framework 的創(chuàng)建者 Josh Bloch 都在吐槽Java 9 模塊系統(tǒng)(Project Jigsaw)帶來令人頭痛的問題,甚至建議:

現(xiàn)在說Project Jigsaw將在 JDK 之外實現(xiàn)廣泛使用還為時過早。與此同時,除非你有迫切需要,否則最好避免使用它們。

那么對于 JDK 11 是否值得立即更新使用?按照 Oracle 公布支持的路線圖來看,如文章開頭所述,Java 11 將會獲得 Oracle 長期的服務(wù)支持,直至 2026 年 9 月。相比 Java 9 和 10 這兩個僅提供半年技術(shù)支持的版本來說,JDK 11 的發(fā)布無疑對個人開發(fā)者以及企業(yè)都是一件好事。

那么,再結(jié)合其新特性,你會選擇更新到 JDK 11 嗎?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2952

    瀏覽量

    104489
  • Oracle
    +關(guān)注

    關(guān)注

    2

    文章

    286

    瀏覽量

    35086

原文標題:Java 11 正式發(fā)布!

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Oracle與亞馬遜云科技宣布建立戰(zhàn)略合作伙伴關(guān)系

    提高敏捷性、靈活性和安全性 北京2024年10月8日?/美通社/ -- 亞馬遜云科技與Oracle宣布推出Oracle Database@Amazon Web Services,支持企業(yè)在亞馬遜云
    的頭像 發(fā)表于 10-08 17:25 ?535次閱讀

    甲骨文發(fā)布Java 23

    全球領(lǐng)先的軟件開發(fā)企業(yè)甲骨文(Oracle)近日隆重宣布推出Java 23(Oracle JDK 23),這一里程碑式的更新標志著全球排名第一的編程語言和開發(fā)平臺再次邁出堅實步伐。
    的頭像 發(fā)表于 09-19 16:36 ?279次閱讀

    JDK8升級JDK11最全實踐干貨來了

    1、前言 截至目前(2023年),Java8發(fā)布至今已有9年,2018年9月25日,Oracle發(fā)布Java11,這是
    的頭像 發(fā)表于 06-25 14:51 ?378次閱讀
    JDK8升級JDK<b class='flag-5'>11</b>最全實踐干貨來了

    潤和軟件受邀參與openEuler 24.03 LTS發(fā)布

    近日,由OpenAtom openEuler(簡稱"openEuler")社區(qū)主辦的openEuler 24.03 LTS版本發(fā)布會(以下簡稱“發(fā)布會”)在北京成功舉辦。本次
    的頭像 發(fā)表于 06-15 10:07 ?724次閱讀

    Oracle確認Java/JDK 11官方支持延長至2032年1月?

    此外,Solaris操作系統(tǒng)上的Java SE 8和Java SE 11官方支持也同步延期至2030年12月及2032年1月,進一步延長了該平臺上的
    的頭像 發(fā)表于 05-16 15:57 ?1049次閱讀

    甲骨文發(fā)布AI編程助手,助用戶編寫Java、SQL程序

    據(jù)悉,Oracle Code Assist基于甲骨文先進的云計算平臺——Oracle Cloud Infrastructure (OCI)構(gòu)建,重點優(yōu)化各項Java、SQL程序以及OCI應(yīng)用開發(fā)環(huán)節(jié)。
    的頭像 發(fā)表于 05-13 10:19 ?459次閱讀

    Ubuntu 24.04 LTS選用Linux 6.8為默認內(nèi)核

    關(guān)于Ubuntu 24.04 LTS使用何種內(nèi)核版本,一直備受關(guān)注。Canonical工程師Andrea Righi昨日宣布,Ubuntu 24.04將默認搭載Linux 6.8內(nèi)核。
    的頭像 發(fā)表于 01-29 11:27 ?980次閱讀

    Oracle 2024年Java發(fā)展藍圖分析

    OracleJava 開發(fā)者布道師 Nicolai Parlog 于近日發(fā)布一段視頻,介紹了 2024 年的 Java 工作規(guī)劃。
    的頭像 發(fā)表于 01-26 14:27 ?1263次閱讀

    XMC Pinout Tool是否可以不受限制地使用免費的Java版本運行?

    我有幾個關(guān)于 XMC 引腳排列工具的問題。 首先我想問一下 XMC Pinout Tool 是否可以不受限制地使用免費的 Java 版本(Oracle Java SE v17 LTS
    發(fā)表于 01-22 06:18

    一文了解Java 21的新功能

    JDK 21 于 2023 年 9 月 19 日發(fā)布,是繼之前的 LTS 版本 JDK 17 之后最新的長期支持 (LTS) 版本。在本文中,我們將探討 JDK 21 新引入的功能。
    的頭像 發(fā)表于 12-21 16:19 ?1228次閱讀
    一文了解<b class='flag-5'>Java</b> 21的新功能

    java環(huán)境搭建及配置教程

    Development Kit(JDK) JDK是Java開發(fā)的核心組件,它包含了Java編譯器、Java 虛擬機和一些Java工具。您可以在Or
    的頭像 發(fā)表于 12-06 15:50 ?733次閱讀

    idea怎么創(chuàng)建Java項目

    : 安裝Java開發(fā)環(huán)境 一個Java項目需要在計算機上安裝Java開發(fā)環(huán)境(JDK),我們可以從Oracle官方網(wǎng)站上下載并安裝最新版本的
    的頭像 發(fā)表于 12-06 14:09 ?854次閱讀

    idea的java運行配置怎么弄

    包(JDK) 首先,你需要下載并安裝Java開發(fā)工具包(JDK)。訪問Oracle官方網(wǎng)站,選擇適合你所使用操作系統(tǒng)的JDK版本。下載安裝程序并按照指示進行安裝。安裝完成后,你需要配置系統(tǒng)環(huán)境變量。 配置系統(tǒng)環(huán)境變量 在Wind
    的頭像 發(fā)表于 12-06 14:04 ?2024次閱讀

    eclipse設(shè)置java運行環(huán)境

    Development Kit(JDK),它是Eclipse所需的Java編譯器和運行時環(huán)境。你可以在Oracle官方網(wǎng)站上找到JDK的最新版本,并按照指示進行安裝。 配置環(huán)境變量:安裝完成后,需要配置環(huán)境變量,使得系統(tǒng)能夠找
    的頭像 發(fā)表于 12-06 11:29 ?1444次閱讀

    簡單了解Java的新特性

    ,Java 17 于 2021 年發(fā)布。這兩個版本之間相隔了 7 年。Java17是一個長期支持(LTS)的版本,會有更穩(wěn)定和持久的維護和更新。
    的頭像 發(fā)表于 11-23 16:38 ?1051次閱讀
    簡單了解<b class='flag-5'>Java</b>的新特性