jdk8新特性stream Java 12 / JDK 12正式發(fā)布,你們公司還在用哪個(gè)版本?
Java 12 / JDK 12正式發(fā)布,你們公司還在用哪個(gè)版本?盡管java12已經(jīng)發(fā)布,但大多數(shù)公司仍然使用java8甚至java7.6。Java9發(fā)布后,我去了解了它。模塊化編程可能更有吸引力。
Java 12 / JDK 12正式發(fā)布,你們公司還在用哪個(gè)版本?
盡管java12已經(jīng)發(fā)布,但大多數(shù)公司仍然使用java8甚至java7.6。Java9發(fā)布后,我去了解了它。模塊化編程可能更有吸引力。
現(xiàn)在我們公司的大多數(shù)人仍在使用java 7,有些人厭倦了使用java 8的lameda、stream、localdate和其他與其他接口兼容的轉(zhuǎn)換。所以現(xiàn)在Java8是主流,而6.7更常用。
Java 8中用法優(yōu)雅的Stream,性能也“優(yōu)雅”嗎?
我經(jīng)歷了從java6到j(luò)ava8的“朝代更迭”,并給出了自己的看法。
首先,不可否認(rèn)的是,流絕對(duì)是優(yōu)雅的代名詞。它的串行調(diào)用模式和強(qiáng)大的API能力都賦予了程序員一種特殊的技能:高效和簡(jiǎn)潔。
但事情并不是絕對(duì)的,但就性能而言,流真的比傳統(tǒng)迭代好嗎?事實(shí)上,情況并非如此。我們應(yīng)該根據(jù)實(shí)際情況來(lái)看待這個(gè)問(wèn)題。
在極少量的迭代中,我們看不到性能效果的差異。以下幾點(diǎn)是建立在依賴大量數(shù)據(jù)迭代的前提下的。
分為以下幾點(diǎn)進(jìn)行討論:
1。不管是什么程序,它都必須在載體上運(yùn)行,而公共載體就是服務(wù)器。因此,很容易認(rèn)為CPU的處理能力直接影響性能。
如果你想測(cè)試單核CPU的性能,特別是當(dāng)你想用單核CPU代替單核CPU時(shí),當(dāng)CPU是多核的時(shí)候,并行處理的性能明顯較差,而且隨著核數(shù)的增加,流的優(yōu)勢(shì)會(huì)逐漸顯現(xiàn)出來(lái)。畢竟,并行處理仍然是由于串行處理。
2. 事情不是絕對(duì)的。并非所有情況下,流都不如串行處理中的傳統(tǒng)迭代好。例如,在復(fù)雜對(duì)象(公共順序?qū)ο?,包含大量信息)的處理中,測(cè)試結(jié)果表明流的性能仍然是由于普通的迭代,更不用說(shuō)多核CPU下的并行處理了。這里再次強(qiáng)調(diào),不要在單核下使用串行,你會(huì)發(fā)現(xiàn)性能并檢查它
!3. 最后,我想談?wù)勎业膫€(gè)人經(jīng)歷。在使用并行流時(shí),在迭代處理中進(jìn)行多個(gè)外部接口調(diào)用時(shí)應(yīng)謹(jǐn)慎。您可能會(huì)發(fā)現(xiàn),并行后上下文線程切換的代價(jià)并不一定比串行線程好,而且還會(huì)影響系統(tǒng)的穩(wěn)定性。
最后,在代碼整潔性方面,stream仍然有明顯的優(yōu)勢(shì),但是在性能方面,我們還是要根據(jù)實(shí)際情況做出合理的選擇,這樣才能寫(xiě)出最“優(yōu)雅”的代碼。
以上三點(diǎn)是個(gè)人觀點(diǎn)和日常工作中遇到的實(shí)際場(chǎng)景的總結(jié)。如果有什么不對(duì)勁或不同意見(jiàn),可以留言指出,共同討論,共同進(jìn)步。
java14早就有了,為什么還有人用java8?
更別說(shuō)java8了,現(xiàn)在有些企業(yè)還在用java5,你敢相信嗎?
首先,我需要說(shuō)明的是,任何企業(yè)使用的技術(shù)可能都不是那么新。新技術(shù)只是意味著這種技術(shù)比現(xiàn)有技術(shù)出現(xiàn)得晚,沒(méi)有人能保證它是否容易使用。未經(jīng)核實(shí)很容易出錯(cuò)。
在Java方面,實(shí)際上java7之后的語(yǔ)法沒(méi)有太大的變化,也就是說(shuō),即使只使用java7之前的版本,也完全可以滿足開(kāi)發(fā)需求。
我們使用java8的原因無(wú)非是java8的新特性:lambda表達(dá)式和stream可以大大簡(jiǎn)化代碼。至于效率的提高,我也沒(méi)有感覺(jué)到。而且,java8之后的版本是半年,現(xiàn)在只推出java13。Java14應(yīng)該還在醞釀中。
此外,有些項(xiàng)目已經(jīng)運(yùn)行了好幾年,并草率地提出了最新版本。所有工具和插件的兼容性也需要驗(yàn)證。有鑒于此,大多數(shù)企業(yè)使用java8也就不足為奇了。