<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          重磅!JDK 17 發(fā)布,Oracle 宣布從 JDK 17 開始正式免費。。

          共 5442字,需瀏覽 11分鐘

           ·

          2021-09-29 08:54


          源 /         文/ 

          JDK 17 正式發(fā)布+免費

          果然,JDK 17 還是如期發(fā)布了,2021年09月14日。巧了,和蘋果發(fā)布會是一天,不知道是不是互相在蹭熱度,哈哈哈~~~

          不過,蘋果 13 確實不那么 13 香,庫克一如既往在擠牙膏式的更新。

          對比之下,我覺得還是 JDK 17 比較香,除了新增了不少新特性,Oracle 官方竟然宣布 JDK 17 可以免費商用了

          從官方的聲明中可以看得出:Oracle JDK 17 和未來的 JDK 版本是在免費使用許可下提供的,直到下一個 LTS 版本發(fā)布整整一年

          LTS 是什么意思呢?就是 Long-Term-Support,長期支持版本,不同于 16、15、14、13、12 這些過渡版本。

          生產(chǎn)環(huán)境下,最常用的三個版本,就是 JDK 6、JDK 8、JDK 11,JDK 17 會不會是下一個呢?

          上面這張圖是 Oracle 官方給出的 Oracle JDK 支持的時間線。可以看得到,JDK 17 最多可以支持到 2029 年 9 月份,長達 8 年!

          按照技術(shù)更新迭代的速度,8 年時間,真不短了!

          以 Oracle 的尿性來看,這次免費商用 8 年可謂是良苦用心,為的就是讓使用者放心大膽地將 JDK 升級到 JDK 17。

          不過,好像 JDK 8 支持的時間更長,可以延長到 2030 年 12 月。似乎我又發(fā)現(xiàn)了什么真理:他強任他強,我用 Java 8 !

          JDK 17 之前,LTS 版本都是 3 年發(fā)布一次,11 是 2018 年,8 是 2014 年,7 是 2011 年。

          之后呢,Oracle 計劃每兩年發(fā)布一次未來的 LTS 版本,也就是說,下一個 LTS 版本,也就是 JDK 21 將于 2023 年 9 月份發(fā)布。

          技術(shù)更新迭代的速度又快了呀!

          這里強調(diào)一點哈,非長期支持版本一定不要用于生產(chǎn)環(huán)境,不過拿來作為學習的對象還是可以的。

          JDK 17 提供了 14 個 JEP(JDK Enhancement Proposal,JDK 增強建議),也就是 14 個新特性,我們來一睹為快!

          特性說明
          306:Restore Always-Strict Floating-Point Semantics恢復(fù)始終執(zhí)行嚴格模式的浮點定義
          356:Enhanced Pseudo-Random Number Generators增強型偽隨機數(shù)生成器
          382:New macOS Rendering Pipeline新的 macOS 渲染管道
          391:macOS/AArch64 PortmacOS AArch64 端口
          398:Deprecate the Applet API for Removal棄用 Applet API
          403:Strongly Encapsulate JDK InternalsJDK 內(nèi)部強封裝
          406:Pattern Matching for switch (Preview)為 switch 支持模式匹配
          407:Remove RMI Activation移除 RMI 激活
          409:Sealed Classes密封類
          410:Remove the Experimental AOT and JIT Compiler移除實驗性的 AOT 和 JIT 編譯器
          411:Deprecate the Security Manager for Removal棄用安全管理器
          412:Foreign Function & Memory API (Incubator)外部函數(shù)和內(nèi)存 API(孵化中)
          414:Vector API (Second Incubator)矢量 API(二次孵化中)
          415:Context-Specific Deserialization Filters上下文特定反序列化過濾器

          Java 語言增強

          JEP 409:密封類,密封的類和接口,可以限制其他類或接口擴展或?qū)崿F(xiàn)它們。

          public abstract sealed class Shape permits Circle{

          }

          類 Shape 被關(guān)鍵字 sealed 修飾,表明它是一個密封類。這個密封類必須要指定它被哪些類繼承,比如說 Circle:

          public final class Circle extends Shape {
          }

          Circle 類必須用 final 關(guān)鍵字修飾,表明它不能再被其他類繼承了。

          這個密封類就有意思了,我只允許誰誰誰繼承,就有點指定繼承權(quán)的內(nèi)味了。

          庫的更新和改進

          JEP 306:恢復(fù)始終執(zhí)行嚴格模式的浮點定義。Java 最初只有嚴格的浮點語義,但從 JDK 1.2 開始,為了適應(yīng)當時硬件架構(gòu)的限制,默認情況下允許這些嚴格語義中的細微變化,而現(xiàn)在這些都沒有必要了。

          JEP 356:增強型偽隨機數(shù)生成器。為偽隨機數(shù)生成器 (PRNG) 提供新的接口類型和實現(xiàn)。

          JEP 382:新的 macOS 渲染管道。使用 Apple Metal API 為 macOS 實現(xiàn)了 Java 2D 渲染管道。新管道減少了 JDK 對已棄用的 Apple OpenGL API 的依賴。

          新平臺支持

          JEP 391:macOS AArch64 端口。該端口允許將 Java 應(yīng)用程序在新的基于 Arm 64 的 Apple Silicon 計算機上運行。

          刪除和棄用

          JEP 398:棄用 Applet API。Applet 是一種運行在 Web 瀏覽器內(nèi)的 Java 程序,早就過時了,刪除很有必要。

          JEP 407:刪除了遠程方法調(diào)用 (RMI) 激活機制。

          JEP 410:刪除實驗性的 AOT 和 JIT 編譯器,這兩個實驗功能并沒有被廣泛使用,刪了省得維護。

          JEP 411:棄用安全管理器。安全管理器可追溯到 Java 1.0,但多年來并沒有起到很好的保護作用,刪除了省心。

          面向未來的 Java 程序

          JEP 403:JDK 內(nèi)部強封裝,限制外部對 JDK 內(nèi)部類進行訪問,此更改會使應(yīng)用程序更安全,并減少對非標準、內(nèi)部 JDK 實現(xiàn)細節(jié)的依賴。

          后續(xù) JDK 版本的預(yù)覽和孵化器

          JEP 406 : 為 switch 支持模式匹配。

          我們希望將一個變量 o 與多個備選方案進行比較,但之前的 switch 不支持使用 instanceof 的模式匹配,于是我們只能用 if-else 來實現(xiàn)。

          static String formatter(Object o) {
              String formatted = "unknown";
              if (o instanceof Integer i) {
                  formatted = String.format("int %d", i);
              } else if (o instanceof Long l) {
                  formatted = String.format("long %d", l);
              } else if (o instanceof Double d) {
                  formatted = String.format("double %f", d);
              } else if (o instanceof String s) {
                  formatted = String.format("String %s", s);
              }
              return formatted;
          }

          JDK 17 在模式匹配的基礎(chǔ)上提供了 switch 語句的支持:

          static String formatterPatternSwitch(Object o) {
              return switch (o) {
                  case Integer i -> String.format("int %d", i);
                  case Long l    -> String.format("long %d", l);
                  case Double d  -> String.format("double %f", d);
                  case String s  -> String.format("String %s", s);
                  default        -> o.toString();
              };
          }

          這樣寫是不是就瞬間高大上了許多,舒服。

          JEP 412:外部函數(shù)和內(nèi)存 API(孵化器)。通過有效調(diào)用外部函數(shù)(JVM 外部的代碼),并通過安全訪問外部內(nèi)存,這使得 Java 程序能夠調(diào)用本機庫并處理本機數(shù)據(jù),而沒有 Java 本機接口 (JNI) 的脆弱性和復(fù)雜性。

          JEP 414:矢量 API(第二孵化器)。Vector API 由JEP 338 提出并作為孵化 API 集成到 Java 16 中。

          Vector API 旨在通過提供一種在 Java 中編寫復(fù)雜矢量算法的方法來提高矢量化計算的可預(yù)測和健壯性。許多領(lǐng)域都可以從這個顯式向量 API 中受益,包括機器學習、線性代數(shù)、密碼學、金融和 JDK 本身的代碼。

          官方鏈接:https://www.oracle.com/news/announcement/oracle-releases-java-17-2021-09-14/


          講良心話,JDK 更新的頻率是比以前更快了,但開發(fā)者的習慣仍然停留在 JDK 8 甚至 JDK 6 的層面上。

          主動升級到 JDK 11 的并不多,尤其是 Oracle 搞出商業(yè)收費后,大家升級的意愿就更淡了。

          不知道是不是出于開源或者叫免費的壓力,JDK 17 宣布可以免費商用了,并且打算以后的版本也保持這樣。

          這對使用者來說,無疑是一罐蜜糖,長達 8 年的時間支持,也許大家會愿意升級到 JDK 17 了!


          推薦閱讀


          7輪面試,耗費30天,我真的差點沒挺過去...


          迄今為止程序員寫過的最大Bug:虧損30億、致6人死亡,甚至差點毀滅世界


          某程序員自述:我,三十多歲,逃離北上廣,通過技術(shù)移民到加拿大!




          END


          頂級程序員:topcoding

          做最好的程序員社區(qū):Java后端開發(fā)、Python、大數(shù)據(jù)、AI


          一鍵三連「分享」、「點贊」和「在看」


          瀏覽 273
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  末成年小嫩xB性AV | 婷婷国产成人精品视频 | 免费看亚洲色情视频 | 91主播在线视频 | 成人免费看片 无需下载 |