unsafe jdk9_JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等
unsafe jdk9
Java 9距離(希望)數月了,現在該回顧一下即將發生的變化以及您應該采取的措施
Java 9即將來臨(我們正在計算到達的日子 ),其中包含一系列新功能和改進功能。 這就是為什么我們決定創建一份清單來準備自己的事情,以及可能需要我們更改或改編我們代碼的任何事情的原因。
在下面的文章中,我們捆綁了一些您應該了解的新功能,并了解它們可能會(或可能不會)影響我們編寫代碼的方式。 系好安全帶,我們將探索一個新的Java版本。
1.符合默認的垃圾收集器
Java 9附帶有Garbage First Garbage Collector(G1 GC)作為其默認的垃圾收集器(盡管我們仍然可以根據需要切換它)。
G1是服務器樣式的垃圾收集器,設計用于具有大內存的多處理器計算機。 它與其他垃圾收集器之間存在許多差異,包括串行,并行和CMS,我們在上一篇文章中已經介紹了其中的一些。
為了讓您快速瀏覽,我們將重點介紹收集器之間的主要區別之一-結構。 從Java 8開始,垃圾收集器將堆分為兩部分:
- 年輕一代–所有新對象均已分配并老化
- 老一代–用于存儲長期存在的物體
(直到Java 8,永久生成的第三部分,其中包含JVM所需的元數據,用于描述應用程序中使用的類和方法)。
使用G1,堆被劃分為一組大小相等的堆區域,每個堆區域都是一個連續的虛擬內存范圍。 G1支持大于4GB的堆,并且是一個并行,并發和漸進壓縮的低中斷垃圾收集器。
G1已在JDK 7和8中得到支持,因此您可以立即嘗試使用它 ,看看它是否適合您的應用程序。 如果您不喜歡更改,或者只是喜歡使用舊的垃圾收集器之一,請不要擔心。 您仍然可以將選擇的垃圾收集器設置為JVM啟動參數的一部分,因此它不會受到此更改的影響。
2.拼圖即將來臨(也許)
拼圖項目感覺有點像“ Delayed ”這個詞的同義詞。 這個項目有一個從Java 7開始向Java 8過渡到Java 8并最終作為Java 9的一部分推遲Java版本的歷史。
難怪,由于項目的復雜性。 Jigsaw旨在使Java模塊化并將JRE分解為可互操作的組件。 這意味著您將能夠針對項目實際需要的組件創建按比例縮小的運行時Jar(rt.jar)。
該項目旨在使Java可擴展到小型計算設備,提高安全性和性能,并主要使開發人員更容易構建和維護庫。
這是一個至關重要的項目,因此必然會有一些挫折和延誤。 最近的延遲來自IBM和Red Hat,它們都是Java社區過程執行委員會(JCP)的成員,他們對該項目投了反對票。
兩家公司表示對當前的Jigsaw項目不滿意,當時Red Hat建筑部副總裁Scott Stark 指出: “我們對Jigsaw的實施決策以及范圍和共識提出了許多擔憂。專家小組的努力”。
斯塔克在電子郵件中表示:“就目前而言,紅帽不會投票贊成JPMS(Java平臺模塊系統)的公共評審草案,因為它不符合Java社區的最大利益”。
IBM高級技術人員Tim Ellison加入了該決定,并宣布 “ IBM也投票反對”,這反映了我們的立場,即JSR(Java規范請求)目前尚不準備超越公開審查階段。并進行最終草案草案”。
看起來,Oracle可能需要重新考慮項目Jigsaw。 但就目前而言,我們將繼續追溯到最新的更新發行日期 。
3. Unsafe現在是Java 9的正式組成部分
從Java 6開始,sun.misc.Unsafe是JVM中的關鍵API之一,但是它僅打算由核心Java類使用,而不能由開發人員自己使用。 我們怎么知道? 由于唯一的構造函數已被私有化,因此其單例實例也被私有化。
該庫本身是用于執行低級, 不安全操作的方法的集合。 我們知道,標題已將其放棄。 該庫的用途之一是使用allocate Instance方法跳過對象初始化階段或繞過構造函數中的安全檢查。
但是,“下午知道早晨從未懷疑過的事情。” 許多庫開始使用Unsafe,它成為許多項目的關鍵庫。 由于不安全,Oracle計劃將其完全刪除。
Oracle產品管理高級總監唐納德·史密斯(Donald Smith) 表示: “ sun.misc.Unsafe必須在火災中死亡。 這是-等待-不安全。 它一定要走。” 哎喲。 可以想象,Java社區對此并不滿意,并反對這一決定。
花費了一段時間,但最終社區贏得了勝利,并且即將Unsafe封裝在Java 9中。為了使其安全起見,此類中的許多方法的功能都可以通過變量handle來使用。
4. REPL
Java 9即將引入JShell,這是第一個正式的Java REPL(Read-Eval-Print-Loop)。 到目前為止,在Java中還沒有“本地”的REPL方法。 它實際上是什么意思? 如果我們想運行幾行Java來快速地將它們自己檢出,則必須將它們包裝在單獨的項目或方法中。
可以通過替代解決方案(例如Java REPL Web控制臺就是其中之一)來評估代碼段,例如聲明,語句和表達式,但是JShell補充了本機和官方支持。
換句話說,我們現在就可以在編寫代碼片段后立即對其進行測試,而不必完成整個項目。 如果您想今天嘗試一下,請查看我們的JShell動手評論 。
有趣的事實: Oracle指出JShell是根據學術反饋創建的。 學校采用具有REPL功能的語言,因為它有助于降低編程的初始學習曲線。
5.有趣的新語言變化
JDK 9中對核心庫進行了一些增強,因此我們決定專注于最重要的更改。 第一個是Stack-Walking API ,它引入了一種處理堆棧跟蹤的正式方法。 此類包括遍歷堆棧的方法,可在我們感興趣的任何時候為我們提供當前線程的概述。
換句話說,Stack-Walking API將更改您遍歷堆棧跟蹤的方式。 如果您想了解有關此新功能的更多信息并了解我們的想法,請在此處查看我們的完整概述。
Java 9還將引入java.util.concurrent.Flow庫,該庫將包含嵌套在新類Flow中的支持Reactive Streams發布-訂閱框架的接口。 查看我們對該類及其帶來的變化的更深入的了解。
其他將更新的庫包括Process API ,它將改善對操作系統進程的控制和管理; Compact Strings將為字符串提供更節省空間的內部表示形式; Enhanced Deprecation ;改進@Deprecated注釋,以提供有關規范中API的狀態和預期配置
Java 9還將包括一組小的語言更改集,作為Project Coin的一部分,從合法標識符名稱集中刪除下劃線(從Java 8開始),并支持私有接口方法。
這只是即將進行的更改的一小部分,您可以在此處查看 Oracle所做的完整正式列表。
最后的想法
Java 9即將搖搖欲墜,對此我們再也不會感到興奮。 但是,雖然可能很想在正式發布之日開始使用它,但我們建議您在開始使用它之前檢查一下環境和代碼中需要做的事情。 或如Ice Cube所說, 在破壞自己之前最好先檢查一下自己 。 安全要比后悔好,尤其是在代碼方面。
如果您是早期采用者,或者迫不及待想嘗試Java 9,則可以立即進行檢查 。
翻譯自: https://www.javacodegeeks.com/2017/05/jdk-9-checklist-project-jigsaw-sun-misc-unsafe-g1-repl.html
unsafe jdk9
總結
以上是生活随笔為你收集整理的unsafe jdk9_JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hadooplinux搭建(hadoop
- 下一篇: jboss 配置上下文路径_为单个Web