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