lambda ::_Lambda项目:迈向多核及超越
生活随笔
收集整理的這篇文章主要介紹了
lambda ::_Lambda项目:迈向多核及超越
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
lambda ::
周一下午在JavaOne 2011的希爾頓舊金山大宴會廳B上做了“ Project Lambda:邁向多核和超越”(會議27400,不要與Brian Goetz的同名演講相混淆) 的演示 。大宴會廳關(guān)閉,這是一個非常大型的非主題演講場地,還有一臺大型攝像頭(帶攝像頭操作員)可以拍攝演示文稿。 可以認(rèn)為這意味著會議組織者對Java SE 8 ( JSR 337 )和Lambda項目的關(guān)注引起了極大的興趣。 演講者Alex Buckley (Java語言和虛擬機(jī)的規(guī)范負(fù)責(zé)人)和Daniel Smith (項目Lambda規(guī)范負(fù)責(zé)人)是演示者,接下來將展示其摘要。本課程涵蓋Java SE 8的主要新語言功能-lambda表達(dá)式,方法引用和擴(kuò)展方法-并探討現(xiàn)有和將來的庫將如何利用它們來使客戶端代碼同時具有更高的性能和更少的錯誤。 -容易。
功能接口是“一種方法的接口”。 Lambda表達(dá)式是“創(chuàng)建功能接口實現(xiàn)的一種方式”。 Lambda表達(dá)式允許簡單,簡潔地表達(dá)功能的“實質(zhì)”,尤其是與匿名類的膨脹相比。 幾張幻燈片中包含了一些代碼示例,這些代碼示例顯示了我們今天如何做以及l(fā)ambda表達(dá)式支持的更簡潔的表示形式。 Lambda表達(dá)式“可以引用封閉范圍內(nèi)的任何有效最終變量。” 這意味著final關(guān)鍵字不是必需的,而是需要在lambda表達(dá)式引用的方法中將其視為final(未分配引用)。 宣布了更多的lambda表達(dá)式規(guī)則: this指針引用了封閉對象而不是lambda表達(dá)式。 “無需在lambda表達(dá)式中使用參數(shù)類型”,因為它們是“根據(jù)功能接口的方法簽名來推斷的”(無需動態(tài)鍵入)。 方法引用支持“將方法作為lambda表達(dá)式使用”的“重用”。 Buckley談到外部迭代是Java庫中當(dāng)前的主要方法。 在這種習(xí)慣用法中,“客戶端決定迭代”并且“不是線程安全的”。 他談到了引入并行for循環(huán)來解決此問題的缺點,但從并行for方法中提取了一些概念:“過濾器”和“歸約器”。 Buckley引入了“內(nèi)部迭代有利于并行習(xí)語”的想法,因為它不需要串行執(zhí)行并且是線程安全的。 Java 8面臨的問題之一是需要改造庫以使用lambda表達(dá)式,但是它們已經(jīng)定義了在庫和集合中大量使用的接口。 可以用來解決此問題的一種方法是在Java中使用靜態(tài)擴(kuò)展方法,類似于C#中可用的方法。 這種方法有很多優(yōu)點,但也有一些主要缺點,例如無法使用反射。 決定重新考慮“不能向接口添加操作”的“規(guī)則”。 基于此,隨后決定添加虛擬擴(kuò)展方法 ,該方法在接口中提供默認(rèn)實現(xiàn),該接口僅在接收器類未使用默認(rèn)實現(xiàn)覆蓋該方法時使用。 幻燈片標(biāo)題為“您是否向Java添加了多個繼承?!” 指出“ Java始終具有類型的多重繼承”和“現(xiàn)在具有行為的多重繼承”,但仍不支持“狀態(tài)的多重繼承,這會導(dǎo)致大多數(shù)問題。” 幻燈片補(bǔ)充說,“行為的多重繼承是相當(dāng)良性的”,并且僅當(dāng)編譯分多個步驟進(jìn)行時,這確實是一個問題。 在此演示文稿中強(qiáng)調(diào)了擴(kuò)展方法是語言功能和虛擬機(jī)功能(“關(guān)于繼承和調(diào)用的其他所有內(nèi)容都是VM功能!”)。 為此,項目符號指出:“如果需要,調(diào)用界面將消除多種行為的歧義。” 非Java JVM語言可以“共享財富”擴(kuò)展方法,其中有一張幻燈片提供了三個示例。 Daniel Smith主持了有關(guān)并行庫主題的演示。 他展示了一張幻燈片“ Betain the New Iterable”,其中展示了一個Iterable接口,其中包括isEmpty() , forEach , filter , map , reduce和into 。 他還展示了可通過擴(kuò)展方法parallel()從Iterable獲得的Parallelterable接口上的幻燈片。 Smith在其關(guān)于社區(qū)貢獻(xiàn)的幻燈片中提供了對JSR 335,JSR 166和Lambda項目的引用。 他還列舉了JavaOne 2011上另外四個關(guān)于lambda表達(dá)式和緊密相關(guān)主題的會議。 史密斯以Brian Laetda在Project Lambda上的一句話作為結(jié)尾: …我們相信,對Java開發(fā)人員來說,我們能做的最好的事情就是讓他們輕而易舉地朝著更具功能性的編程風(fēng)格發(fā)展。 我們不會將Java變成Haskell,甚至不會變成Scala。 但是方向很明確。 ? 結(jié)論 Smith的示例清楚地表明,lambda表達(dá)式將為Java開發(fā)人員的日常工作提供巨大的好處。 他展示了我們都必須編寫數(shù)百或數(shù)千次的循環(huán)類型以及l(fā)ambda表達(dá)式使之更簡潔,更簡潔的語法。 該演示文稿已經(jīng)清楚地表明,隨著引入lambda表達(dá)式,Java將在流暢性和簡潔性方面獲得動態(tài)類型語言所享有的許多好處。 參考: JavaOne 2011:Lambda項目:在我們的JCG合作伙伴 Dustin Marx的啟發(fā)下,在Multimedia and Beyond上, 來自Inspired by Actual Events博客。翻譯自: https://www.javacodegeeks.com/2012/08/project-lambda-to-multicore-and-beyond.html
lambda ::
總結(jié)
以上是生活随笔為你收集整理的lambda ::_Lambda项目:迈向多核及超越的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java应用程序的令牌认证
- 下一篇: glassfish_重写到边缘–充分利用