Java 8中的5个功能将改变您的编码方式
Java 8在JVM和語言級別都包含了一些非常令人興奮的功能。 雖然最初為該發行版設想的某些功能已擴大范圍或已推出到第9版,但實際上有數十個新功能。 許多新添加的內容在編譯器,JVM或幫助系統級別都進行了后臺改進。 這樣,雖然我們可能會從中受益,但是我們不需要積極做任何事情(當然,除了安裝Java 8以外)來享受它們。
話雖如此,讓我們看一下您認為絕對必須了解的5個功能:
1. Lambda表達式
即使我們真的不想在這里成為主流,從開發人員的角度來看,毫無疑問,Java 8最主要的功能是對Lambda表達式的新支持。 這種語言的新增功能使Java成為功能編程的最前沿,在那里,其他基于功能JVM的語言(例如Scala和Clojure)就在Java中。
之前,我們已經研究了Java如何實現Lambda表達式 ,并將其與Scala所采用的方法進行了比較。 從Java的角度來看,這是迄今為止該語言中最大的新增功能之一。
至少,建議您熟悉Lambda語法,尤其是與數組和集合操作有關的地方,其中Lambda已緊密集成到核心語言庫中。 很可能您會開始在第三方和組織代碼中看到越來越多的代碼,例如下面的代碼段。
Map<Person.Sex, List<Person>> byGender =roster.stream().collect(Collectors.groupingBy(Person::getGender));*通過特定類字段的值對集合進行分組的一種非常有效的方法。
2.并行操作
通過將Lambda表達式添加到數組操作中,Java在內部迭代語言中引入了一個關鍵概念。 本質上,作為開發人員,我們習慣于將循環操作用作最基本的編程習慣用法之一,就在if和else之上。
Lambda表達式的引入扭轉了這種范式,現在通過核心庫本身對應用Lambda函數的集合進行實際迭代(即內部迭代)。
您可以將其視為迭代器的擴展,在該迭代器中,從要操作的集合中提取下一個項目的實際操作是由迭代器執行的。 這種設計模式帶來的令人興奮的可能性是,框架可以并行執行在長數組上執行的操作,例如排序,過濾和映射。 當處理連續處理冗長的集合的服務器代碼時,這可以從根本上減少工作量,從而顯著提高吞吐量。
這是與上述相同的代碼段,但是使用了框架的新并行處理功能–
ConcurrentMap<Person.Sex, List<Person>> byGender =roster.parallelStream().collect(Collectors.groupingByConcurrent(Person::getGender));*這是使此算法在多個線程上運行所需的相當小的更改。
3. Java + JavaScript =?
Java 8正試圖糾正其歷史上最大的錯誤之一-Java與JavaScript之間的距離越來越大,這種距離在最近幾年中才有所增加。 在此新版本中,Java 8引入了一個全新的JVM JavaScript引擎– Nashorn。 該引擎獨特地利用了Java 7中引入的一些新功能,例如invokeDynamic,可以像V8和SpiderMonkey之類的功能為Java的 JavaScript執行提供JVM級的速度。
這意味著下次您打算將JS集成到后端中時,無需設置node.js實例,而只需使用JVM執行代碼即可。 這里的額外好處是能夠在Java和JavaScript代碼進行過程中實現無縫互操作性,而不必使用各種IPC / RPC方法來彌合差距。
4.新的日期/時間API
多年來,當前的本機Java庫API的復雜性一直是Java開發人員的痛苦原因。 多年來,Joda時間和Java 8一直在填補這種空白。一個早期出現的直接問題是,為什么Java 8不采用Joda作為其本地時間框架。 由于在Joda中被認為是設計缺陷,因此Java 8從零開始實現了自己的新日期/時間API。 好消息是,與Calendar.getInstance()不同, 新API的設計考慮了簡單性,并且進行了清晰的操作以對人類可讀格式和機器時間格式的操縱值進行操作。
5.并發蓄電池
并發編程中最常見的方案之一是更新由多個線程訪問的數字計數器。 多年來,從同步塊(引入了高級別的爭用)到對AtomicInteger的讀/寫鎖定,有許多慣用的方法可以做到這一點。 盡管最后一個更高效,但是由于它們直接依賴于處理器CAS指令,因此它們需要更高的熟悉度才能正確實現所需的語義。
使用Java 8,該問題在框架級別通過新的并發累加器類得以解決,使您能夠以線程安全的方式非常有效地增加/減少計數器的值。 實際上,這不是口味或喜好問題的情況-在代碼中使用這些新類確實很容易。
您認為每個開發人員都應該知道其他語言功能嗎? 在評論部分添加它們。
翻譯自: https://www.javacodegeeks.com/2014/03/5-features-in-java-8-that-will-change-how-you-code.html
總結
以上是生活随笔為你收集整理的Java 8中的5个功能将改变您的编码方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建本地连接小技巧电脑如何创建本地连接
- 下一篇: 使用Mockito在Java中进行模拟入