關於Java 9,你應該知道的5件事

圖片


2017年9月,Java宣佈發佈最新版本的Java 9。它是在Java 8發佈3年多以來的最新版本,它將一個更重要的 Java 交付給了開發者。編程


Java 9是 Java 發佈週期的重要轉折點。 在本文中,咱們將討論Java 9中的給開發者的新功能。從操做角度來看,性能和安全性有所變化與加強。 咱們將討論Java 9中最使人興奮的五個特性,以鼓勵更多開發者採用 Java 9。安全


模塊化app


這是咱們從Java 9 得來的最重要特性:Java平臺開始系統模塊化。ide


Java最大的問題在於它的運行時庫。 在一個大型平臺上進行20年的開發會形成很大的問題甚至損失。許多類會衝突,相信你在大型代碼庫中所遇到的那樣。 還有一點重要的是,沒有辦法在JDK中封裝私有類,這致使了外部第三方庫的激增,內部細節更復雜,這阻礙了Java平臺的發展。模塊化


使用Java 9後,JDK自己已是模塊化的,並配有90個獨立的模塊。oop

一個模塊將連接的數據包分組,其餘模塊只能訪問從模塊顯式導出的軟件包。最後,內部實現類能夠實現真正封裝。另外,模塊能夠設置對其它模塊的顯式依賴關係, 這些依賴關係在編譯和執行期間由模塊系統進行事先檢查。性能


模塊也可用於模塊化應用程序,而不只僅是JDK自己。測試


如今,你可使用封裝的包和顯式的依賴關係來建立屬於本身的模塊,而再也不使用脆弱的類路徑。spa


這些模塊爲更多結構化與可靠的應用提供了一條途徑。 固然,Java模塊系統不會在一晚上之間改變Java環境。 模塊系統將影響應用程序的設計,並在開發的全部階段均須要使用,包括開發,編譯,打包和運行。目前普遍採用模塊系統以前還須要一段時間。 設計


值得Java開發者高興的是,許多應用程序都支持遷移場景,可逐步演變爲模塊化應用程序與庫。


生產率


除了模塊系統以外,Java 9還交付了提升開發人員生產力的小功能。


好比,集合工廠方法容許你在單個語句中使用預約義元素建立不可變集合。不須要再用煩人的解決方法來建立小的預約義集合。


另一個主要的生產力加速器叫作 JShell,一個用於Java代碼的Read-Eval-Print-Loop。能夠交互式地輸入和評估JShell中的Java代碼片斷,而不用再編譯代碼來測試運行。 探索性編程在您從REPL得到即時反饋時具備新的含義。


JShel 已經與 IntelliJ IDEA 等主流IDE集成,容許開發者使用一個能夠訪問應用程序代碼的交互式環境。


性能


運行新版本的Java 9,意味着你在不更改代碼的狀況下得到性能改進。


在Java 9中,Compact Strings功能就是這種改進的一個例子,使用ASCII字符集徹底表示的任何字符串將以每字符每字節方式存儲。

字符串在ASCII範圍以外的字符串每一個字符一般須要兩個字節,大多數應用程序在運行中有大量的String對象,若是它們是簡單的字符串,則能夠大大減小內存使用量。


Java 9中的另外一個重要變化是,默認狀況下將Garbage Collector G1(垃圾優先)做爲垃圾收集器。它提供可調整的休眠時間與目標,並能夠執行增量式收集。


此更改的影響取決於你的應用程序的特性。一般來講,咱們能夠經過更少的GC休息來得到更低延遲的代碼執行,而G1GC垃圾優先則使用稍高的CPU功率來實現這一點。在切換到Java 9時,測試此垃圾回收器在你的應用程序上的效果很是重要。在某些狀況下,分配模式不必定適合G1GC方法,而且須要轉移到另外一個GC(或G1GC)。


安全性


開發人員的生產力特性遠遠不是採用Java 9的主要緣由,Java 9平臺 自己加入了衆多新的加強安全性的功能。


Java 9 的大多數安全加強功能都與安全聯網有關。如TLS的最新版本如今支持HTTPS鏈接,並支持證書。


另外一個安全加強功能是過濾輸入串行數據的功能。序列化一直是Java一直存在的問題,致使最近幾年一直有一些安全漏洞。如今能夠採用白名單或黑名單方法來過濾傳入的序列化數據流,從而最大限度地減小Java序列化的***。


發佈週期


到目前爲止,咱們已經關注了Java 9的技術特性,但Java 9 版本還有另外一個重要緣由,它標誌着「功能驅動」的Java 時代結束。


過去,選擇了一些重要的功能,當它們開發好時就建立了一個新的Java版本發佈。 實際上,上一個主要Java版本的發佈開發者等了三年多的時間。 這在如今的環境下是不可接受的,因此 Oracle 和 OpenJDK 項目正在轉向基於時間來發布新版本。


如今,每6個月就會發佈一個新版本的Java。它將包含當時準備好的全部功能。在這6個月的發佈版本中,若有必要,可能會發布重要修復程序的更新。


這個新的發佈時間表有幾個含義。首先,Java版本變得更加頻繁和可預測,目前的更新計劃是在每一年的3月和9月發佈。 新的版本號計劃每六個月增長一次主要版本,這就是說,2018年3月發佈 的下一個版本將是Java 10。目前版本名稱的方案還在討論中。


對於許多公司團隊來說,每6個月更新一次的Java版本並不太具備吸引力。 所以,會在每三年指定一個長期版本(LTS),LTS的第一個版本將於2018年9月發佈,這意味着Java 9 將不會支持長期版本。


小結


咱們欣喜地看到,這些新的發佈策略使Java比以往更加靈活。主要的功能分解爲漸進式步驟,每6個月交付一次更新。 每次完成時都會發布功能,若是缺乏一個版本,則在6個月內就會有另外一個版本發佈出來。


即便在20年之後,Java 仍然會以使人興奮和快捷的速度繼續前行。

相關文章
相關標籤/搜索