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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

仍然不安全:变成了Java 9功能的Java 6中的主要错误

發(fā)布時(shí)間:2023/12/3 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 仍然不安全:变成了Java 9功能的Java 6中的主要错误 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sun.misc.Unsafe的未來(lái)將如何發(fā)展?

隨著2015年即將結(jié)束,我們認(rèn)為這將是對(duì)Java社區(qū)過(guò)去一年中最熱門(mén)辯論之一進(jìn)行尸檢的好機(jī)會(huì)。 通過(guò)查看標(biāo)題,您中的大多數(shù)人可能已經(jīng)開(kāi)始在口腔中產(chǎn)生酸味并在腸道中產(chǎn)生憤怒的感覺(jué),但是如果您錯(cuò)過(guò)了該操作,讓我們來(lái)回顧一下所有引起大驚小怪的事情。

最重要的是:sun.misc.Unsafe不會(huì)走到任何地方

整個(gè)辯論始于7月,當(dāng)時(shí)Oracle正在考慮刪除許多開(kāi)發(fā)人員所依賴的作為JVM關(guān)鍵API之一的Unsafe庫(kù)。 該提案建議,在Java 9發(fā)行時(shí),Unsafe將被完全封裝,盡管該Java版本的發(fā)行日程仍遙遙無(wú)期,但僅此宣布就在開(kāi)發(fā)人員社區(qū)引起了軒然大波。

我們看到Reddit,Twitter和多個(gè)博客對(duì)此舉表示了批評(píng),許多開(kāi)發(fā)人員感到甲骨文“背叛了”,原因有以下三個(gè)主要原因:

  • Unsafe提供了對(duì)有助于開(kāi)發(fā)許多工具的低級(jí)功能的訪問(wèn)。
  • 這些相同的功能在內(nèi)部JVM庫(kù)之外沒(méi)有任何其他選擇。
  • 許多開(kāi)發(fā)人員擔(dān)心sun.misc.Unsafe的封裝會(huì)產(chǎn)生負(fù)面影響,甚至將許多工具減少到無(wú)法使用的狀態(tài)。
  • 暫時(shí)存在一個(gè)折衷方案,這是Java平臺(tái)組首席架構(gòu)師Mark Reinhold建議的三步解決方案 。 該解決方案概述了封裝內(nèi)部API(例如Unsafe)的所需過(guò)程:

  • 如果它在JDK 8中具有受支持的替代品,那么它將被封裝在JDK 9中
  • 如果它在JDK 8中沒(méi)有受支持的替代品,則它將不會(huì)封裝在JDK 9中,因此外部代碼仍然可以訪問(wèn)它; 并進(jìn)一步,
  • 如果它在JDK 9中具有受支持的替代產(chǎn)品,那么它將不推薦使用,并將其封裝在JDK 9中,甚至可能在JDK 10中將其刪除。
  • 所以現(xiàn)在的問(wèn)題是:Oracle為什么要尋求消除不安全并從頭開(kāi)始這場(chǎng)風(fēng)暴? 要了解,我們可能應(yīng)該在做出任何判斷之前以一種或另一種方式客觀地看待事物。

    如何變得不安全

    我們唯一可以啟動(dòng)檢查此類火災(zāi)原因的過(guò)程的地方就是Unsafe庫(kù)本身。 許多開(kāi)發(fā)人員已經(jīng)開(kāi)始依靠其獨(dú)特的功能來(lái)完成各種任務(wù),但是,請(qǐng)不要忘記,Unsafe庫(kù)實(shí)際上并不意味著內(nèi)部開(kāi)發(fā)團(tuán)隊(duì)之外的任何人都可以訪問(wèn)。 它曾經(jīng)是而且仍然是一種不規(guī)則,巧合,各種錯(cuò)誤。

    當(dāng)然,這是一次非常有用和快樂(lè)的巧合,但它根本就不會(huì)發(fā)生。 多年以來(lái),各種不安全的用途已成為實(shí)際上的標(biāo)準(zhǔn),但是這些用途中的任何一種的起源仍源于錯(cuò)誤。 因此,期望Oracle無(wú)限期地保留過(guò)時(shí)的Sun *庫(kù)有點(diǎn)不合邏輯。畢竟,如果我們中有人發(fā)現(xiàn)了自己代碼中的錯(cuò)誤,我們是否會(huì)努力消除它?

    社區(qū)的反應(yīng)–一場(chǎng)災(zāi)難

    隨著Unsafe風(fēng)暴席卷整個(gè)Java開(kāi)發(fā)人員社區(qū),有兩個(gè)主要問(wèn)題不斷出現(xiàn)。 第一個(gè)是先前討論的背叛感(是否合理,取決于您的觀點(diǎn))。 第二個(gè),也許稍微更合理-出于合理的擔(dān)心,封裝Unsafe將有史以來(lái)第一次違反Java的一項(xiàng)主要承諾-向后兼容性。

    一些開(kāi)發(fā)人員一直在發(fā)布有關(guān)消除或限制訪問(wèn)Unsafe的可能結(jié)果的世界末日帖子,稱許多工具,庫(kù)和基礎(chǔ)結(jié)構(gòu)軟件直接或在可見(jiàn)代碼下方使用該庫(kù),其中包括Hazelcast,Cassandra,Spring等。其他。

    如果要完全實(shí)現(xiàn)Oracle的封裝計(jì)劃,那么使用一個(gè)或多個(gè)這些工具的任何開(kāi)發(fā)人員都會(huì)遇到嚴(yán)重的困難。

    甲骨文的立場(chǎng)–

    該庫(kù)的名稱應(yīng)表明該庫(kù)存在使用風(fēng)險(xiǎn),并且Oracle所做的一切實(shí)際上都是在試圖最大程度地降低任何潛在風(fēng)險(xiǎn)。 在任何地方使用標(biāo)題為“不安全”的庫(kù)有點(diǎn)像看到雷區(qū),成功穿越它,然后邀請(qǐng)所有朋友也穿越它,因?yàn)樗盀槟ぷ鳌薄?那只會(huì)導(dǎo)致一個(gè)結(jié)果:

    多年來(lái),Oracle一直在解釋說(shuō),盡管他們贊賞所有社區(qū)使用Unsafe庫(kù)在開(kāi)發(fā)方面所做的努力,但是訪問(wèn)這樣低級(jí)的庫(kù)應(yīng)該被視為有使用風(fēng)險(xiǎn)。 不負(fù)責(zé)任地使用未記錄的庫(kù)可能會(huì)在使用該庫(kù)的任何平臺(tái)上導(dǎo)致各種內(nèi)存問(wèn)題和其他處理過(guò)載。 就Oracle而言,這就是“不太理想的結(jié)果”的確切定義。 可能需要注意的是,并不是所有Java中的“棄用”在發(fā)生時(shí)都被認(rèn)為是不好的,有些人,例如刪除PermGen最終被稱贊為“ 非常積極” 。

    最后的想法

    看起來(lái),盡管Java平臺(tái)團(tuán)隊(duì)看到了抗議的蔓延(他們很可能知道抗議即將來(lái)臨)并最終找到了解決該問(wèn)題的合理解決方案,或者至少可以與開(kāi)發(fā)人員社區(qū)一起生活。

    距離Java 9的實(shí)際發(fā)布版本還有1年多的時(shí)間,無(wú)論是否以任何形式或形式存在Unsafe庫(kù),而且其他更改和聲明可能很快就會(huì)到來(lái)。 您可以訪問(wèn)我們的倒計(jì)時(shí)站點(diǎn)java9countdown.xyz并注冊(cè)新聞通訊,以獲取有關(guān)Java 9所有相關(guān)問(wèn)題的最新信息。

    翻譯自: https://www.javacodegeeks.com/2016/01/still-unsafe-major-bug-java-6-turned-java-9-feature.html

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

    總結(jié)

    以上是生活随笔為你收集整理的仍然不安全:变成了Java 9功能的Java 6中的主要错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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