Java?17的一些新特性介紹
前言
Java17將是一個長期支持的LTS版本。
Java采用了6個月的發(fā)布周期。也就是說,它將每6個月發(fā)布一個新版本的Java。每隔3年,LTS版本就會發(fā)布一次。目前,Java 11是LTS版本,于2018年9月發(fā)布。但在Java17發(fā)布后,它將是最新的LTS支持。
許多組織依賴LTS版本,所以他們使用的是Java11。但在Java17發(fā)布后,他們將使用Java17(可能)。
自從將Java9發(fā)布到Java16之后,Java添加了許多Java開發(fā)人員渴望的特性和改進??纯此?,我們可以說Java正在緩慢而穩(wěn)定地追趕其他編程語言。它讓Java開發(fā)人員感到高興,因為我們已經聽膩了“Java已死”。
Java 17中的Sealed 密封類
sealed class 密封類允許描述哪個類或接口可以擴展或實現(xiàn)這個類或接口。簡而言之,我們可以限制誰可以使用這個類或接口。假設我們有一個學生抽象類,如果我們將其設為一個密封類,并且只允許ScienceStudent
和CommerceSudent
擴展該類,那么只有這些類才能擴展該Student
,而其他類如果試圖擴展該類,則會出錯。
public abstract sealed class Student permits ScienceStudent , CommerceStudent { ... }
這提供了一種比訪問修飾符更具聲明性的方法來限制超類的使用。
Java 17提供了更好的隨機生成器
Java 17為偽隨機數(shù)生成器(PRNG)提供了新的接口類型和實現(xiàn)。它引入了一個名為RandomGenerator
的新接口。該接口的目標是為所有現(xiàn)有和新的PRNG提供統(tǒng)一的API。
RandomGenerator
提供名為ints、longs、doubles、nextBoolean、nextInt、nextLong、nextDouble和nextFloat
的方法,以及它們當前的所有參數(shù)變化。以下是提供的四個新的專用隨機發(fā)生器接口:
SplittableRandomGenerator
JumpableRandomGenerator
LeapableRandomGenerator
ArbitrarilyJumpableRandomGenerator
所有這些接口都擴展了接口。
此功能的目標是:
- 使各種PRNG算法更容易在應用中互換使用。
- 通過提供PRNG對象流,更好地支持基于流的編程。
- 消除現(xiàn)有PRNG類中的代碼重復。
- 小心地保留
java.util.Random
Java對增強安全性的關注
通過JEP403,Java對JDK內部進行了強封裝。這意味著,它將限制用戶直接使用Java的內部內容,并鼓勵用戶使用標準API。使用內部構件的原因可能會導致問題,尤其是在安全方面。此功能的目標是:
- 繼續(xù)改進JDK的安全性和可維護性,這是Jigsaw項目的主要目標之一。
- 鼓勵開發(fā)人員從使用內部元素遷移到使用標準API,這樣他們和他們的用戶都可以升級到未來的Java版本,而無需大驚小怪
另一個安全更新是JEP 411:不推薦刪除安全管理器。嗯,這不完全是一個更新,而是朝著刪除一個功能邁出的一步。安全管理器可以追溯到Java 1.0。多年來,它一直不是保護客戶端Java代碼的主要手段,也很少用于保護服務器端代碼。因此,在即將發(fā)布的Java版本中,它將完全從Java中刪除。
Pattern Matching For Switch預覽
此功能是一個預覽功能,不會在標準軟件包中提供。
在Java16中,我們獲得了“instanceOf的模式匹配”功能。類似地,這種切換模式匹配功能將改進普通舊的單equals類型的切換表達式。下面是一個開關表達式的代碼簡介。
Object o = 123L; String formatted = 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 406上看到更多關于此功能的示例和詳細說明。
到此這篇關于Java 17的一些新特性介紹的文章就介紹到這了,更多相關Java 17 新特性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用純Java實現(xiàn)一個WebSSH項目的示例代碼
這篇文章主要介紹了使用純Java實現(xiàn)一個WebSSH項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03Spring Security角色繼承實現(xiàn)過程解析
這篇文章主要介紹了Spring Security角色繼承實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08MyBatis實現(xiàn)動態(tài)SQL更新的代碼示例
本文博小編將帶領大家學習如何利用 MyBatis 攔截器機制來優(yōu)雅的實現(xiàn)這個需求,文中通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2023-07-07SpringMVC的組件之HandlerExceptionResolver詳解
這篇文章主要介紹了SpringMVC的組件之HandlerExceptionResolver詳解,不管是在處理請求映射(HandlerMapping),還是在請求被處理(Handler)時拋出的異常,DispatcherServlet都會委托給HandlerExceptionResolver進行異常處理,該接口只有一個方法,需要的朋友可以參考下2023-10-10springboot后端接收前端傳數(shù)組參數(shù)三種方法
這篇文章主要給大家介紹了關于springboot后端接收前端傳數(shù)組參數(shù)三種方法,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2023-07-07@Transactional注解異常報錯之多數(shù)據源詳解
這篇文章主要介紹了@Transactional注解異常報錯之多數(shù)據源詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01