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

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

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

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

牛逼啊,JDK 16 剛發(fā)布半年(2021/03/16),JDK 17 又如期而至(2021/09/14),這個時間點牛逼啊,蹭蘋果發(fā)布會的熱度?記得當(dāng)年 JDK 15 的發(fā)布也是同天,巧了。。

雖然 iphone 13 發(fā)布了,但真的不是 13 香,真沒什么創(chuàng)新和亮點,一如繼往蘋果式擠牙膏,在 13 上真的擠到精髓了,這次我想說,JDK 17 更香!!

iPhone 13 降價算啥??JDK 17 直接干到免費!!!

Oracle 宣布,從 JDK 17 開始,后面的 JDK 都全部免費提供!!!

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

 

是的,你沒有看錯,Oracle 這次良心了,發(fā)大招了,JAVA 17+ 可以免費使用了,包括商用,更詳細的條款可以閱讀:

www.oracle.com/downloads/l…

來看下最新 Oracle Java 支持路線圖:

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

 

可以看到,JDK 17 是自 2018 年 JDK 11 后的第二個長期支持版本,支持到 2029 年 9 月,好家伙,支持時間長達 8 年,這下可以不用死守 JDK 8 了,JDK 17+ 也可以是一種新的選擇了。。

下一個第三個長期支持版本是 JDK 21,時間為 2023 年 9 月,這次長期支持版本發(fā)布計劃改了,不再是原來的 3 年一次,而是改成了 2 年一次!

另外,非長期支持版本還是半年發(fā)一次不變,下一個非長期支持版本計劃在 2022/03 發(fā)布,但注意不要用在生產(chǎn)。

JDK 17 新特性一覽

ID

特性

說明

1

306:Restore Always-Strict Floating-Point Semantics

恢復(fù)始終執(zhí)行嚴格模式的浮點定義

2

356:Enhanced Pseudo-Random Number Generators

增強型偽隨機數(shù)生成器

3

382:New macOS Rendering Pipeline

新的 macOS 渲染管道

4

391:macOS/AArch64 Port

macOS AArch64 端口

5

398:Deprecate the Applet API for Removal

棄用 Applet API

6

403:Strongly Encapsulate JDK Internals

JDK 內(nèi)部強封裝

7

406:Pattern Matching for switch (Preview)

為 switch 支持模式匹配

8

407:Remove RMI Activation

移除 RMI 激活

9

409:Sealed Classes

密封類

10

410:Remove the Experimental AOT and JIT Compiler

移除實驗性的 AOT 和 JIT 編譯器

11

411:Deprecate the Security Manager for Removal

棄用安全管理器

12

412:Foreign Function & Memory API (Incubator)

外部函數(shù)和內(nèi)存 API(孵化中)

13

414:Vector API (Second Incubator)

矢量 API(二次孵化中)

14

415:Context-Specific Deserialization Filters

上下文特定反序列化過濾器

JDK 17 這個版本提供了 14 個增強功能,另外在性能、穩(wěn)定性和安全性上面也得到了大量的提升,以及還有一些孵化和預(yù)覽特性,有了這些新變化,Java 會進一步提高開發(fā)人員的生產(chǎn)力。

JDK 17 新特性詳細介紹

下面是 JDK 17 中的 14 個新特性詳細介紹,分為 5 大類進行介紹!


1. 語言增強

409:Sealed Classes

密封類,這個特性在 JDK 15 中首次成為預(yù)覽特性,在 JDK 16 中進行二次預(yù)覽,在 JDK 17 這個版本中終于正式轉(zhuǎn)正了。

密封類可以用來增強 Java 編程語言,防止其他類或接口擴展或?qū)崿F(xiàn)它們。

來看下面這個示例:

public abstract sealed class Student
    permits ZhangSan, LiSi, ZhaoLiu {
    ...
        
}
復(fù)制代碼

類 Student 被 sealed 修飾,說明它是一個密封類,并且只允許指定的 3 個子類繼承。

這個牛逼啊,有了這個特性,意味著以后不是你想繼承就繼承,想實現(xiàn)就實現(xiàn)了,你得經(jīng)過允許才行。轉(zhuǎn)正了,棧長會再詳細寫一篇,關(guān)注公眾號:Java技術(shù)棧,公眾號第一時間推送哦。


2. 預(yù)覽和孵化特性

406:Pattern Matching for switch (Preview)

為 switch 支持模式匹配(預(yù)覽中)

instanceof 模式匹配的概念大家都清楚吧?不清楚的可以看下這篇文章:Java 14 之模式匹配,非常贊的一個新特性!

這次在 JDK 17 華國 switch 語句支持模式匹配,是個什么鬼?來看下面的示例!

老代碼寫法:

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;
}
復(fù)制代碼

模式匹配新寫法:

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();
    };
}
復(fù)制代碼

牛逼,直接在 switch 上支持 Object 類型,這就等于同時支持多種類型,使用模式匹配得到具體類型,大大簡化了語法量,這個功能還是挺實用的,期待轉(zhuǎn)正,棧長會再詳細寫一篇,關(guān)注公眾號:Java技術(shù)棧,公眾號第一時間推送哦。

412:Foreign Function & Memory API (Incubator)

外部函數(shù)和內(nèi)存 API(孵化中)

改進了 JDK 14 和 JDK 15 引入的 API,通過有效調(diào)用外部函數(shù)(即 JVM 之外的代碼),以及安全地訪問外部內(nèi)存(JVM 之外的內(nèi)存),這些 API 可以調(diào)用本地庫和處理本地數(shù)據(jù),與 Java 運行環(huán)境之外的代碼和數(shù)據(jù)進行交互。

414: Vector API (Second Incubator)

矢量 API(二次孵化中)

Vector API 這是一個新的初始迭代孵化器模塊,模塊包:jdk.incubator.vector,用于表示在運行時可靠地編譯到支持的 CPU 架構(gòu)上的最佳矢量硬件指令的矢量計算,矢量運算可以提供優(yōu)于等效標量計算的性能,并且在機器學(xué)習(xí)、人工智能和密碼學(xué)等領(lǐng)域非常普遍。

本次增強的 API 允許以一種在運行時,可靠地編譯為支持的 CPU 架構(gòu)上的最佳向量指令的方式表達向量計算。


3. 核心增強

306:Restore Always-Strict Floating-Point Semantics

恢復(fù)始終執(zhí)行嚴格模式的浮點定義。

Java 最初只有嚴格的浮點語義,但從 JDK 1.2 開始,為了適應(yīng)當(dāng)時硬件架構(gòu)的限制,默認情況下允許這些嚴格語義中的細微變化,而現(xiàn)在這些都沒有必要了,已被 JEP 306 刪除。

356:Enhanced Pseudo-Random Number Generators

增強型偽隨機數(shù)生成器,java.util.random 包更新了,提高了不同 PRNGs(偽隨機數(shù)生成器)的互操作性,并使基于需求而不是硬編碼特定實現(xiàn)的算法變得容易。

這次更改包括偽隨機數(shù)生成器(PRNG)的新的接口類型和實現(xiàn),包括可跳 PRNGs 和一個可拆分的 PRNG 算法(LXM),以及全新的 RandomGeneratorFactory 類。

382:New macOS Rendering Pipeline

新的 macOS 渲染管道。

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

415: Context-Specific Deserialization Filters

上下文特定反序列化過濾器。

允許應(yīng)用配置 context-specific 和 dynamically-selected 過濾器,通過一個 JVM 范圍的過濾器工廠,用來為每個單獨的反序列化操作選擇一個過濾器。

403:Strongly Encapsulate JDK Internals

JDK 內(nèi)部強封裝,它是 JDK 16 中 JEP 396 的延續(xù),JDK 16 開始對 JDK 內(nèi)部大部分元素默認進行強封裝,sun.misc.Unsafe 之類的關(guān)鍵內(nèi)部 API 除外,從而限制對它們的訪問。

此外,用戶仍然可以選擇自 JDK 9 以來的默認的寬松的強封裝,這樣可以幫助用戶毫不費力地升級到未來的 Java 版本。


4. 新平臺支持

391:macOS/AArch64 Port

macOS AArch64 端口,即提供可適用于 macOS 的 JDK 版本,該版本可在基于 Arm 64 的較新的 macOS 系統(tǒng)上本地化運行。


5. 棄用和移除項

411:Deprecate the Security Manager for Removal

棄用安全管理器。

安全管理器從 Java 1.0 開始,這些年來它一直都不是保護 Java 應(yīng)用程序代碼的主要手段,也很少用于保護 Java 服務(wù)器端代碼,所以這個版本標識為棄用狀態(tài)了,未來的版本會進行移除。

398:Deprecate the Applet API for Removal

棄用 Applet API。

Applet 是一種運行在 Web 瀏覽器內(nèi)的 Java 程序,但 Applet 早就沒什么鳥用了,現(xiàn)在還有哪款瀏覽器支持 Java Applet 的嗎?在坐的各位估計都沒聽過吧?

407:Remove RMI Activation

移除 RMI 激活。

RMI 激活機制已于 2020 年 9 月在 JDK 15 中移除了,遠程方法調(diào)用 (RMI) 激活機制現(xiàn)也已被移除,需要說明的是,RMI 激活是 RMI 中一個過時的組件,自 Java 8 以來一直是可選的。

410:Remove the Experimental AOT and JIT Compiler

移除實驗性的 AOT 和 JIT 編譯器。

AOT 和 JIT 這兩個實驗性的編譯器,自從在 JDK 9 中引入以來幾乎沒有怎么使用,市面上也出現(xiàn)了更為廣泛使用的替代方案,并且維護它們所需的工作量很大,所以在 JDK 16 中就已經(jīng)刪除了,本次從 OpenJDK 項目中刪除了源代碼。

JDK 17 都免費了,和 OpenJDK 還有區(qū)別?

有的,雖然兩者很接近,但也還是有一點區(qū)別!

1、Oracle JDK 提供了各種安裝程序,還包含更新規(guī)則,而 OpenJDK 只提供了一個純壓縮包;

2、Usage Logging 僅在 Oracle JDK 中可用;

3、Oracle JDK 要求第三方加密提供程序使用 Java 加密擴展(JCE)進行簽名,而 OpenJDK 繼續(xù)允許使用未簽名的第三方加密提供程序;

4、java -version 的輸出也是不同的,Oracle JDK 返回 java 并包含 Oracle 特定的標識符,OpenJDK 返回 OpenJDK 并且不包含特定于 Oracle 的標識符;

5、許可證不同,Oracle JDK 17+ 是根據(jù) Oracle 免費條款和條件許可發(fā)布的,而 OpenJDK 在 GPLv2wCP 下發(fā)布的;

6、Oracle JDK 源代碼含有 "ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.",其使用受許可條款約束的,而 OpenJDK 源代碼可參考 GPL 許可條款;

以上是兩者最主要的 6 點區(qū)別。

總結(jié)

最后,本文主要介紹了 JDK/Java 17 的 14 個新特性基本面,后面棧長有時間也會繼續(xù)更新一些 JDK 新特性詳細教程,關(guān)注公眾號Java技術(shù)棧第一時間推送哦。如果你想看歷史 Java 8+ 系列新特性教程,也可以在公眾號菜單中進行閱讀。

Java 17 發(fā)布了,Oracle 宣布 JDK 17 及之后的版本都免費使用,包括商用,爽!!!Oracle 這次真的良心了,或許是趨于某種壓力進行免費?

Java 確實是在走下坡路,即使如此,也是老當(dāng)益壯,是現(xiàn)在各大企業(yè)必用的語言之一。

雖然大部分人現(xiàn)在還在用著 JDK 7/8,甚至 6,還在寫著 JDK 5 的語法,現(xiàn)在隨著 JDK 17+ 的免費,或者在未來的不久,JDK 8 會逐漸被替代,JDK 17+ 慢慢走上舞臺。

 


作者:Java技術(shù)棧
鏈接:
https://juejin.cn/post/7008039791308570660
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

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

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定