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

歡迎訪問 生活随笔!

生活随笔

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

java

unsafehelper java_Java 9中将移除 Sun.misc.Unsafe

發(fā)布時(shí)間:2023/12/2 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unsafehelper java_Java 9中将移除 Sun.misc.Unsafe 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

災(zāi)難將至,Java 9中將移除 Sun.misc.Unsafe

Oracle 正在計(jì)劃在Java 9中去掉 sun.misc.Unsafe API。 這絕對將是一場災(zāi)難,有可能會徹底破壞整個(gè) java 生態(tài)圈。 幾乎每個(gè)使用 java開發(fā)的工具、軟件基礎(chǔ)設(shè)施、高性能開發(fā)庫都在底層使用了 sun.misc.Unsafe。 下面是上面鏈接中文檔提到一個(gè)小列表:

Netty

Hazelcast

Cassandra

Mockito / EasyMock / JMock / PowerMock

Scala Specs

Spock

Robolectric

Grails

Neo4j

Spring Framework

Akka

Apache Kafka

Apache Wink

Apache Storm

Apache Hadoop

Apache Continuum

… 這個(gè)列表很長。。。

然而, Oracle 看起來是鐵了心毫無理由的去掉它。下面是一個(gè)來自他們郵件列表的評論: n

恕我直言 — sun.misc.Unsafe 必須死掉。 它是“不安全”的。它必須被廢棄。請忽略一切理論上(想象中的)羈絆,從此走上正確的道路吧。

這個(gè)工程師似乎是毫無根據(jù)的憎恨 Unsafe。。。

Oracle應(yīng)該怎么做?

當(dāng)前Unsafe 類是一個(gè)強(qiáng)有力的工具。 沒有必要去掉它。對這個(gè)類的特性有些明確的需求,這就是為什么事實(shí)上幾乎每個(gè) Java 程序都在使用它,不知不覺中許多流行的 Java庫也在使用它。

提供完整的文檔、發(fā)布 Unsafe 類

Oracle 應(yīng)該接受現(xiàn)實(shí),并將Unsafe轉(zhuǎn)為公開 API,提供完善的文檔和開發(fā)示例。 當(dāng)前,沒有準(zhǔn)確的文檔,開發(fā)中需要通過 stackoverflow 帖子或者其他一些隨機(jī)的博客學(xué)習(xí)怎么使用 Unsafe。 移除 Unsafe 的一個(gè)主要論據(jù)是:使用它太容易讓開發(fā)中犯錯(cuò)了。如果有完善的官方文檔或許可以改善這一現(xiàn)狀。

隨 Unsafe一起發(fā)布新的替代 API

除了 Unsafe 文檔外,Oracle 應(yīng)該發(fā)布一個(gè)更易用的 API,提供 Unsafe 相同的功能。 這是上面文檔中的提議的一部分。然而這不太應(yīng)該以移除 Unsafe 為代價(jià)。 人們在開發(fā)新軟件的時(shí)候就會逐步過渡到新的 API,Unsafe 就自動被廢棄了。

這類似于向 Java 8引入 java.time 包中的新的 DateTime API。 新的日期 API 的引入并不表示之前的DateTime API 被徹底移除或者隱藏到某個(gè)特殊 JVM flag 里。那樣也肯定會引發(fā)一些事故。

實(shí)際上最可能會變成什么樣子?

根據(jù)事情的發(fā)展趨勢,Oracle 看起來會:

在 Java 9正常模式下移除 Unsafe 類。

僅在必須的情況下通過向 JVM 傳遞一個(gè)特殊的 flag 啟動 Unsafe

這將導(dǎo)致絕對的災(zāi)難!

不僅類似 Cassandra 或Zookeeper 等基礎(chǔ)軟件,幾乎所有的 Java 程序,包括 web 應(yīng)用也會掛掉,因?yàn)樗麄兪褂玫幕A(chǔ)庫可能在底層使用了 Unsafe。

從此打開 Unsafe flag 將會成為啟動 JVM 的默認(rèn) flag 之一,因?yàn)槿绻淮蜷_它的話 Java 應(yīng)用會在毫無提示的情況下崩潰。

因?yàn)榇蠖鄶?shù)環(huán)境不會默認(rèn)把這個(gè)JVM flag 打開,當(dāng)他們的系統(tǒng)升級 Java時(shí)軟件系統(tǒng)會掛掉。 Java 打破了向后兼容的承諾。所有的基礎(chǔ)庫、軟件基礎(chǔ)設(shè)施從此變?yōu)閮蓚€(gè)版本:

Java 9之前的版本 – 使用 Unsafe

Java 9兼容 – 不使用 Unsafe。

遷移至 Java 9的進(jìn)程會因此而變緩慢,這將影響整個(gè) Java 生態(tài)系統(tǒng)。這將會類似于 Python 2升級到 Python 3的過程。

這種錯(cuò)誤 JVM 社區(qū)之前曾經(jīng)犯過

你是不是任務(wù)這太荒唐了,Oracle 絕不可能犯這樣的錯(cuò)誤?事實(shí)上它曾做過類似的事情了, 例如Java 7中的字節(jié)碼校驗(yàn)器。

結(jié)論

現(xiàn)在是該讓大家開始意識到這個(gè)問題的時(shí)候了。從 JVM中去掉Unsafe或者把它隱藏在某個(gè)特殊的 flag 里面勢必導(dǎo)致一場災(zāi)難。

參考鏈接

總結(jié)

以上是生活随笔為你收集整理的unsafehelper java_Java 9中将移除 Sun.misc.Unsafe的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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