jdk 1.8 jdk8_JDK 8功能的可疑方面
jdk 1.8 jdk8
我們大多數使用Java進行開發的人通常都熱衷于JDK 8附帶的功能和改進。 但是,最近有幾篇文章指出了某些功能可能會被濫用和濫用,并可能在將來導致一些其他問題。 這些功能使我想起了J2SE 5中引入的自動裝箱功能,雖然有其有用的情況,但是如果未正確理解和應用,也會導致問題。 在這篇文章中,我引用了其他人關于這些可疑功能的文章。 請注意,本文并非與任何發行版相關的“正常” 已知問題 。
Lambda表達式似乎是JDK 8的最大新功能 ,但Tal Weiss撰寫了一篇名為Java 8中Lambda表達式的黑暗面的文章。 在那篇文章中,Weiss寫出了lambda表達式和Nashorn JavaScript引擎的“陰暗面”(他認為這是JDK 8的第二大功能)。 他談到“代碼與運行時之間的距離”,并指出“我們為更短,更簡明的代碼,更復雜的調試和更長的合成調用棧付出了代價”。
在Java 8的“愛與恨”中 , Andrew C. Oliver和Michael Brush提供了有關JDK 8的一些主要新功能的很好的介紹。他們認為接口上的默認方法 “允許多種繼承”,并且“可能” [成為Java 8中大多數人關心的細節。“ 他在評估時總結了這篇文章:“危險的功能是功能接口。 如果使用不當,可能會引起很多頭痛。”
Peter Verhas在Java 8默認方法一文中對接口上默認方法的潛在問題進行了詳細的分析:什么可以做和不能做? 以及如何不使用Java 8默認方法 。 他在一篇文章中指出:“向接口添加默認方法可能會使某些類無法使用。” 在另一篇文章中,他補充說:“默認方法是技術錯誤”,并引用了以下事實:默認方法已添加到Java接口中,以支持現有實現的向后兼容性,而這些方法需要添加到接口中以支持新的JDK 8。特征。
Lukas Eder 在Java 8的黑暗面中表達了對默認方法的不同關注:無法使默認方法最終或同步,以及引入了“ default”關鍵字。 這篇文章中指出的另一個有趣的“ caveat”是lambda表達式對重載的影響。
Tal Weiss的另一篇文章《 Java 8中的新并行API》:The Glitz and Glamour背后 ,著眼于魏斯在測量“新Java 8并行操作API”在負載下的性能時觀察到的一些問題。 Weiss觀察到,“在已經是多線程環境的環境中添加線程并不能幫助您”,并提醒我們,“盡管這些都是非常強大且易于使用的API,但它們并不是靈丹妙藥 。 我們仍然需要對何時雇用他們做出判斷。”
Lukas Krecan警告使用Java 8并行流之前請三思,并寫道:“問題是所有并行流都使用公共的fork-join線程池 ,如果您提交了長時間運行的任務,則會有效地阻塞池中的所有線程。” 為了解決這個問題,Krecan建議“(確保)提交到公共fork-join池的所有任務都不會卡住,并會在合理的時間內完成”或“不要使用并行流并等到Oracle允許我們指定用于并行流的線程池。”
Edwin Dalorzo的文章“ Java 8中為什么會有接口污染”著眼于類型擦除 , 檢查的異常以及缺少值類型 ( JEP 169 )如何導致JDK 8中的設計決策“污染了” Java接口。 這篇文章將Brian Goetz關于JDK 8設計決策的引文與作者自己的評論混合在一起,以指出“對于黑暗面的存在有很好的解釋”。
當然,新發布的JDK 8和基于Java的工具之間存在問題。 例如,在《 Hello Java 8》(以及如何使GlassFish變得無語……)一文中 , Cay Horstmann記錄了GlassFish 4在“用錯誤的Java版本編譯了WAR”時沒有編寫任何堆棧跟蹤信息。
盡管引用的帖子指出了與JDK 8最令人期待的功能有關的合理問題,例如lambda表達式,流,接口默認方法和Nashorn JavaScript引擎,但我仍然對使用JDK開發Java的勇敢新世界感到興奮8 。 這篇文章中突出顯示的帖子是提醒您謹慎謹慎地使用這些新功能,以便我們在享受它們帶來的優勢的同時,盡可能地減少因不明智使用而帶來的新危險和成本。
翻譯自: https://www.javacodegeeks.com/2014/04/dubious-aspects-of-features-of-jdk-8.html
jdk 1.8 jdk8
總結
以上是生活随笔為你收集整理的jdk 1.8 jdk8_JDK 8功能的可疑方面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝京东方最早10月底获苹果批准 量产iP
- 下一篇: 华硕将推 ROG 白夜魔机械键盘:75%