Valhalla项目的价值
我對Valhalla項(xiàng)目的進(jìn)度一直很感興趣,但是Brian Goetz最近的信息“ Valhalla項(xiàng)目:目標(biāo) ”提高了我的興趣。 我經(jīng)常喜歡Goetz的作品,因?yàn)樗Y(jié)合了我最想成為技術(shù)作者的兩個(gè)特征:他比他所寫的內(nèi)容更了解他所寫的主題,而且還能夠以可接近的水平介紹這些概念。向我們其他人缺乏他在這一領(lǐng)域知識(shí)的深度。 郵件“ Valhalla項(xiàng)目:目標(biāo) ”在許多方面都具有重要意義,并且很容易接近; 任何對Valh??alla項(xiàng)目為何如此激動(dòng)感興趣的人都應(yīng)該直接閱讀該書。 盡管我建議閱讀原始的,易于理解的消息 ,但我通過閱讀本文中的此消息收集了一些意見。
在我的軟件開發(fā)人員職業(yè)生涯中,無論我使用哪種編程語言,我通常都會(huì)發(fā)現(xiàn)大多數(shù)軟件開發(fā)都需要一系列權(quán)衡取舍 。 遇到性能最好的代碼比慢代碼的可讀性差的地方很常見。 實(shí)際上,這種權(quán)衡是導(dǎo)致過早優(yōu)化的原因 。 過早優(yōu)化的危險(xiǎn)在于它是“過早的”,因?yàn)閷?shí)際上并不需要通過可讀性較低的代碼獲得的性能提升,因此人們正在有效地交換“更危險(xiǎn)”或“更昂貴”的代碼以獲得不必要的性能優(yōu)勢。
在Java中,通常在使用對象時(shí)進(jìn)行這種折衷。 對象通常更易于使用,并且是與高度使用的標(biāo)準(zhǔn)Java集合一起使用所必需的,但是對象的開銷在內(nèi)存和開銷方面可能會(huì)非常昂貴。 Goetz在“ Valhalla項(xiàng)目:目標(biāo)”中指出,Valhalla項(xiàng)目有可能成為相對罕見的情況之一,在這種情況下,可以實(shí)現(xiàn)“安全性,抽象性,封裝性,表達(dá)性和[和]可維護(hù)性”。
Goetz提供了與對象和維護(hù)對象標(biāo)識(shí)相關(guān)的成本的簡要摘要。 從對在不需要對象身份的情況下維護(hù)對象身份的缺點(diǎn)的簡要說明之后,Goetz轉(zhuǎn)向了現(xiàn)在期望的Java值類型如何解決此問題的描述。 除了簡要描述值類型的優(yōu)點(diǎn)外,Goetz還為值類型提供了一些備用名稱和短語,可能有助于更好地理解它們:
- “像Java類一樣的聚合放棄了它們的身份”
- “代碼就像一個(gè)類,就像一個(gè)整數(shù)一樣工作”
- “更快的對象”
- “可編程原語”
- “便宜的東西”
- “更豐富的原語”
關(guān)于值類型,Goetz寫道:“我們不必強(qiáng)迫用戶在抽象/封裝/安全性和性能之間進(jìn)行選擇。 我們可以同時(shí)擁有?!?我們不是每天都有蛋糕也可以吃 。
在“ Valhalla項(xiàng)目:目標(biāo)”中,Goetz還討論了“擴(kuò)展泛型以允許對所有類型進(jìn)行抽象的目標(biāo),包括基本類型,值甚至是void”。 他使用了JDK的示例,該示例需要在其API中提供多種方法來涵蓋非引用類型但必須由API支持的項(xiàng),因?yàn)椤胺盒湍壳皟H限于僅對引用類型進(jìn)行抽象?!?Goetz指出,即使自動(dòng)裝箱允許在API中使用原語,并期望與該原語相對應(yīng)的引用類型(例如將int參數(shù)自動(dòng)裝箱為Integer引用),這種裝箱也會(huì)降低性能。 在對問題進(jìn)行了適當(dāng)?shù)慕忉屩?#xff0c;Goetz總結(jié)道:“如果我們一次編寫一個(gè)通用類或方法,并抽象所有可能的數(shù)據(jù)類型,而不僅僅是引用類型,那么對每個(gè)人來說都會(huì)更好?!?他補(bǔ)充說:“能夠一次編寫東西……意味著更簡單,更富表現(xiàn)力,更常規(guī),更可測試,更可組合的庫,而在處理原語和值時(shí)不會(huì)像今天的拳擊那樣失去性能。”
Goetz在聲明“ Valhalla:目標(biāo)”時(shí)總結(jié)說:“ Valhalla可能是出于性能方面的考慮,但是將其視為增強(qiáng)抽象性,封裝性,安全性,可表達(dá)性和可維護(hù)性的一種更好的方法-“不”放棄性能。 從這個(gè)角度來看,我真的很喜歡Valhalla項(xiàng)目:我們可以獲得使用對象和引用類型的許多好處,同時(shí)又不放棄使用基元的性能好處。
Valhalla項(xiàng)目:目標(biāo)為您提供了許多簡潔而平易近人的思路。 閱讀這篇文章增加了我對Valhalla項(xiàng)目的未來的興趣,我希望我們可以在JDK中看到它。
翻譯自: https://www.javacodegeeks.com/2016/10/value-project-valhalla.html
總結(jié)
以上是生活随笔為你收集整理的Valhalla项目的价值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果公司宣布“未来不会在任何新产品中使用
- 下一篇: 因此,甲骨文杀死了java.net