日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等

發(fā)布時(shí)間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java 9距離(希望)數(shù)月了,現(xiàn)在該討論一下即將發(fā)生的變化以及您應(yīng)該采取的措施

Java 9即將來臨(我們正在計(jì)算到達(dá)的日子 ),其中包含一系列新功能和改進(jìn)功能。 這就是為什么我們決定創(chuàng)建一份清單來準(zhǔn)備自己的事情,以及可能需要我們更改或改編我們代碼的任何事情的原因。

在下面的文章中,我們捆綁了一些您應(yīng)該了解的新功能,并了解它們可能會(huì)(或可能不會(huì))影響我們編寫代碼的方式。 系好安全帶,我們將探索一個(gè)新的Java版本。

1.符合默認(rèn)的垃圾收集器

Java 9附帶了Garbage First Garbage Collector(G1 GC)作為其默認(rèn)的垃圾收集器(盡管如果我們確實(shí)愿意的話,我們?nèi)匀豢梢詫?duì)其進(jìn)行切換)。

G1是服務(wù)器樣式的垃圾收集器,設(shè)計(jì)用于具有大內(nèi)存的多處理器計(jì)算機(jī)。 它與其他垃圾收集器之間存在許多差異,包括串行,并行和CMS,我們?cè)谏弦黄恼轮幸呀?jīng)介紹了其中的一些。

為了讓您快速瀏覽,我們將重點(diǎn)介紹收集器之間的主要區(qū)別之一-結(jié)構(gòu)。 從Java 8開始,垃圾收集器將堆分為兩部分:

  • 年輕一代–分配和老化所有新對(duì)象
  • 老一代–用于存儲(chǔ)長(zhǎng)期存在的物體

(直到Java 8,永久生成的第三部分,其中包含JVM所需的元數(shù)據(jù)來描述應(yīng)用程序中使用的類和方法)。

使用G1,堆被劃分為一組大小相等的堆區(qū)域,每個(gè)堆區(qū)域都是一個(gè)連續(xù)的虛擬內(nèi)存范圍。 G1支持大于4GB的堆,并且是并行,并發(fā)和增量壓縮的低暫停垃圾收集器。

G1已在JDK 7和8中支持,因此您可以立即嘗試并查看它是否適合您的應(yīng)用程序。 如果您不喜歡更改,或者只是喜歡使用舊的垃圾收集器之一,請(qǐng)不要擔(dān)心。 您仍然可以將選擇的垃圾收集器設(shè)置為JVM啟動(dòng)參數(shù)的一部分,因此它不會(huì)受到此更改的影響。

2.拼圖即將來臨(也許)

拼圖項(xiàng)目感覺有點(diǎn)像“ 延遲 ”一詞的同義詞。 這個(gè)項(xiàng)目有一個(gè)從Java 7開始向Java 8過渡到Java 8并最終作為Java 9的一部分回退Java版本的歷史。

難怪,由于項(xiàng)目的復(fù)雜性。 Jigsaw旨在使Java模塊化并將JRE分解為可互操作的組件。 這意味著您將能夠創(chuàng)建針對(duì)項(xiàng)目實(shí)際需要的組件定制的按比例縮小的運(yùn)行時(shí)Jar(rt.jar)。

該項(xiàng)目旨在使Java可擴(kuò)展到小型計(jì)算設(shè)備,提高安全性和性能,并使開發(fā)人員更輕松地構(gòu)建和維護(hù)庫。

這是一個(gè)至關(guān)重要的項(xiàng)目,因此必然會(huì)有一些挫折和延誤。 最近的延遲來自IBM和Red Hat,它們都是Java社區(qū)流程執(zhí)行委員會(huì)(JCP)的成員,他們對(duì)該項(xiàng)目投了反對(duì)票。

兩家公司表示對(duì)當(dāng)前的Jigsaw項(xiàng)目不滿意,當(dāng)時(shí)Red Hat建筑部副總裁Scott Stark 指出: “我們對(duì)Jigsaw的實(shí)施決策以及范圍和共識(shí)提出了許多擔(dān)憂。專家小組的努力”。

斯塔克在電子郵件中表示:“就目前而言,紅帽不會(huì)投票贊成JPMS(Java平臺(tái)模塊系統(tǒng))的公共評(píng)審草案,因?yàn)樗环螶ava社區(qū)的最大利益”。

IBM高級(jí)技術(shù)人員Tim Ellison參加了該決定,并宣布 “ IBM也投票反對(duì)”,這反映了我們的立場(chǎng),即JSR(Java規(guī)范請(qǐng)求)目前尚不準(zhǔn)備超越公開審查階段并進(jìn)行最終草案草案”。

看起來,Oracle可能需要重新考慮項(xiàng)目Jigsaw。 但是現(xiàn)在,我們將繼續(xù)追溯到最新的更新發(fā)布日期 。

3. Unsafe現(xiàn)在是Java 9的正式組成部分

從Java 6開始,sun.misc.Unsafe是JVM中的關(guān)鍵API之一,但是它僅打算由核心Java類使用,而不能由開發(fā)人員自己使用。 我們?cè)趺粗?#xff1f; 由于唯一的構(gòu)造函數(shù)已被私有化,因此其單例實(shí)例也被私有化。

該庫本身是用于執(zhí)行低級(jí), 不安全操作的方法的集合。 我們知道,標(biāo)題已將其放棄。 該庫的用途之一是使用allocate Instance方法跳過對(duì)象初始化階段或繞過構(gòu)造函數(shù)中的安全檢查。

但是,“下午知道早晨從未懷疑過的事情。” 許多庫開始使用Unsafe,它成為許多項(xiàng)目的關(guān)鍵庫。 由于不安全,Oracle計(jì)劃將其完全刪除。

甲骨文產(chǎn)品管理高級(jí)總監(jiān)唐納德·史密斯(Donald Smith) 表示: “ sun.misc.Unsafe必須在火災(zāi)中死亡。 這是-等待-不安全。 它必須去。” 哎喲。 可以想象,Java社區(qū)對(duì)此并不滿意,并對(duì)此決定提出了抗議。

花費(fèi)了一段時(shí)間,但最終社區(qū)贏得了勝利,并且即將Unsafe封裝在Java 9中。為了使其安全起見,此類中的許多方法的功能都可以通過變量handle來使用。

4. REPL

Java 9即將引入JShell,這是第一個(gè)正式的Java REPL(Read-Eval-Print-Loop)。 到目前為止,在Java中還沒有“本地”的REPL方法。 這到底是什么意思? 如果我們要運(yùn)行幾行Java來快速地將它們自己檢出,則必須將它們包裝在單獨(dú)的項(xiàng)目或方法中。

可以通過替代解決方案(例如Java REPL Web控制臺(tái)就是其中之一)來評(píng)估代碼段,例如聲明,語句和表達(dá)式,但是JShell補(bǔ)充了本機(jī)和官方支持。

換句話說,我們現(xiàn)在就可以在編寫代碼片段后立即對(duì)其進(jìn)行測(cè)試,而不必完成整個(gè)項(xiàng)目。 如果您想今天嘗試一下,請(qǐng)查看我們的JShell動(dòng)手評(píng)論 。

有趣的事實(shí): Oracle指出JShell是根據(jù)學(xué)術(shù)反饋創(chuàng)建的。 學(xué)校采用具有REPL功能的語言,因?yàn)樗兄诮档途幊痰某跏紝W(xué)習(xí)曲線。

5.有趣的新語言變化

JDK 9中對(duì)核心庫進(jìn)行了一些增強(qiáng),因此我們決定專注于最重要的更改。 第一個(gè)是Stack-Walking API ,它引入了一種處理堆棧跟蹤的正式方法。 此類包括遍歷堆棧的方法,可在我們感興趣的任何時(shí)候?yàn)槲覀兲峁┊?dāng)前線程的概述。

換句話說,Stack-Walking API將更改遍歷堆棧跟蹤的方式。 如果您想了解有關(guān)此新功能的更多信息并了解我們的想法,請(qǐng)?jiān)诖颂幉榭次覀兊耐暾攀觥?

Java 9還將引入java.util.concurrent.Flow庫,該庫將包含嵌套在新類Flow中的支持Reactive Streams發(fā)布-訂閱框架的接口。 查看我們對(duì)該類及其帶來的變化的更深入的了解。

其他將更新的庫包括Process API ,它將改進(jìn)對(duì)操作系統(tǒng)進(jìn)程的控制和管理; Compact Strings將為字符串提供更節(jié)省空間的內(nèi)部表示形式; Enhanced Deprecation ;改進(jìn)@Deprecated注釋,以提供有關(guān)規(guī)范中API的狀態(tài)和預(yù)期配置

Java 9還將包括一組小的語言更改集,作為Project Coin的一部分,從合法標(biāo)識(shí)符名稱集中刪除下劃線(從Java 8開始),并支持私有接口方法。

這只是即將進(jìn)行的更改的一小部分,您可以在此處查看 Oracle所做的完整正式列表。

最后的想法

Java 9即將搖搖欲墜,對(duì)此我們?cè)僖膊粫?huì)感到興奮。 但是,盡管在正式發(fā)布之日可能會(huì)開始使用它,但我們建議您在開始使用它之前檢查一下環(huán)境和代碼中需要做的事情。 或就像Ice Cube曾經(jīng)說過的,最好在破壞自己之前先檢查一下自己 。 安全比后悔好,尤其是在代碼方面。

如果您是早期采用者,或者迫不及待想嘗試Java 9,則可以立即進(jìn)行檢查 。

翻譯自: https://www.javacodegeeks.com/2017/05/jdk-9-checklist-project-jigsaw-sun-misc-unsafe-g1-repl.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。