最新 Java 發(fā)展趨勢(shì)報(bào)告

來(lái)源? | InfoQ
作者 ?| Michael Redlich, Ben Evans, Erik Costlow, Johan Janssen 等
我們關(guān)注 Java,以及 Kotlin 和 Scala 等相關(guān)語(yǔ)言、Java 虛擬機(jī)(JVM)和基于 Java 的框架和工具。
我們探討 Java 最主要的趨勢(shì),如 Java 新版本的采用,以及 Jakarta EE、Quarkus、Micronaut、Helidon、MicroProfile 和 MicroStream 等框架的演變。
本報(bào)告主要有兩個(gè)目標(biāo):
幫助技術(shù)負(fù)責(zé)人做出中長(zhǎng)期的技術(shù)投資決策。
幫助個(gè)體開發(fā)者選擇將其寶貴的時(shí)間和資源投入到何種技能的學(xué)習(xí)和發(fā)展中去。這是我們發(fā)布的第三份 Java 趨勢(shì)報(bào)告。不過,我們從 2006 年開始就在內(nèi)部跟蹤 Java 和 JVM 的趨勢(shì),因此,我們實(shí)際上已經(jīng)對(duì)這個(gè)話題做了充分的報(bào)道。
為了把握當(dāng)前和未來(lái)的趨勢(shì),我們采用了 Geoffrey Moore 在其同名著作中首倡的 "跨越鴻溝 "技術(shù)成功心理模型。我們?cè)噲D識(shí)別出那些符合 Moore 所說(shuō)的早期市場(chǎng)的想法,即 "客戶群是由技術(shù)愛好者和有遠(yuǎn)見的人組成的,他們希望在機(jī)會(huì)或迫在眉睫的問題上占得先機(jī)"。
和 2020、2019 年的 Java 發(fā)展趨勢(shì)報(bào)告一樣,下面是 2021 年我們內(nèi)部使用的主題圖譜:

作為背景信息,下面是 2020 年我們內(nèi)部使用的主題圖譜。

除了 Innovators 領(lǐng)域的一些新技術(shù)之外,其他值得注意的變化包括:將 Spring(及其相關(guān)項(xiàng)目)、Jakarta EE 和 Scala 的版本定義為不同類別。我們決定采用這種方法是為了避免將成熟度和采用情況不同的技術(shù)歸入一個(gè)類別。
計(jì)劃于 2022 年底發(fā)布的 Spring Framework 6 和 Spring Boot 3 將經(jīng)歷一次大幅修改以采用模塊化,并將需要 JDK 17+ 和 Jakarta EE 9。最近,Spring Framework 6 的第一個(gè)里程碑版本已經(jīng)提供了預(yù)覽。
Spring Native 是 2021 年初推出的一個(gè)新工具,可以將當(dāng)前用 Java 或 Kotlin 編寫的 Spring Boot 應(yīng)用程序轉(zhuǎn)換為 GraalVM 原生鏡像,該項(xiàng)目目前處于早期開發(fā)階段。
2021 年初發(fā)布的 Scala 3 進(jìn)行了大幅修改,增加了許多新特性、新語(yǔ)法和備受期待的新 Dotty 編譯器,該編譯器已經(jīng)開發(fā)了好幾年了。
2021 年 4 月,微軟推出了 Microsoft Build of OpenJDK,即他們自己的 OpenJDK 下游發(fā)行版,進(jìn)一步增加了對(duì) Java 編程語(yǔ)言的投入。
AdoptOpenJDK 加入了 Eclipse 基金會(huì),并立即改名為 Adoptium。向 Adoptium 的過渡工作包括建立一個(gè) Eclipse 工作組,并將 AdoptOpenJDK 拆分為 Adoptium 頂級(jí)項(xiàng)目下的多個(gè)子項(xiàng)目:Eclipse AQAvit、Eclipse Temurin 和 Eclipse Temurin Compliance。
下面是幾位 InfoQ Java Queue 編輯和 Java Champion 針對(duì)各種主題的討論的簡(jiǎn)單匯總:
Michael Redlich,??松梨诠こ萄芯坎块T高級(jí)研究員和 InfoQ Java Queue 編輯。
Ben Evans,紅帽公司高級(jí)首席軟件工程師、Java Champion 和 InfoQ Java Queue 編輯。
Erik Costlow,Contrast Security 開發(fā)者關(guān)系總監(jiān)和 InfoQ Java Queue 編輯。
Johan Janssen,Sanoma Learning 軟件架構(gòu)師和 InfoQ Java Queue 編輯。
Karsten Silz,資深 Java 全棧開發(fā)人員和 InfoQ Java Queue 編輯。
Monica Beckwith,微軟高級(jí)首席工程師和 Java Champion。
Ana Maria Mihalceanu,紅帽開發(fā)大使和 Java Champion。
Reza Rahman,微軟 Azure 首席 Java 項(xiàng)目主管。
Simon Ritter,Azul 公司副首席技術(shù)官和 Java Champion。
我們認(rèn)為,這可以為我們?cè)趦?nèi)部主題圖譜上對(duì)某些技術(shù)的建議定位提供更多的背景信息。
Beckwith:通過“JEP 403:JDK 內(nèi)件強(qiáng)封裝”,Java 現(xiàn)在成了更有力的 OOP 原則執(zhí)行者。通過一個(gè)平臺(tái)無(wú)關(guān)的 Vector API 進(jìn)行向量計(jì)算。語(yǔ)言增強(qiáng),如 Records,JVM 改進(jìn),如 Valhalla 項(xiàng)目,消除了許多冗長(zhǎng)的內(nèi)容,并進(jìn)一步擁抱了不變性的概念,為性能優(yōu)化提供了可能。
Mihalceanu:2021 年,無(wú)論是 Java 的 LTS 版本,還是非 LTS 版本,都給 Java 開發(fā)者帶來(lái)了驚喜。Java 17 的發(fā)布證實(shí),預(yù)覽功能中的許多功能現(xiàn)在已正式可用,并將長(zhǎng)期可用。它也增加了將一些仍在 Java 8 上運(yùn)行的項(xiàng)目遷移到更新版本的緊迫感。Java 17 是長(zhǎng)期支持版本,它實(shí)現(xiàn)了 NullPointerExceptions 這個(gè) Java 開發(fā)人員長(zhǎng)期以來(lái)的夢(mèng)想。
Rahman:一如既往,Java 生態(tài)系統(tǒng)的各個(gè)部分都保持著活力。這證明了 Java 的根本優(yōu)勢(shì)。我認(rèn)為,Java SE 17 特別受歡迎,尤其是像 Records 這樣的功能。像 WildFly、Payara 和 Open Liberty 這樣的運(yùn)行系統(tǒng)正在采用 Java SE 17。雖然一些開發(fā)者已經(jīng)采用了 Java SE 11,但 Java SE 8 仍然非常有黏性。Java SE 17 有可能最終改變這種狀況。
Ritter:JDK 17 的發(fā)布意義重大。這意味著所有的 OpenJDK 發(fā)行版都有了一個(gè)新的長(zhǎng)期支持(LTS)版本。對(duì)于那些為了盡可能保持穩(wěn)定和安全而不希望每六個(gè)月升級(jí) Java 版本的人來(lái)說(shuō),這是一個(gè)重要的發(fā)行版。我們看到,一些小的語(yǔ)言特性往平臺(tái)添加的速度比以往任何時(shí)候都更快,我喜歡這種方式。這要?dú)w功于六個(gè)月的發(fā)布節(jié)奏,這也使得孵化器模塊和預(yù)覽功能都更實(shí)用。
關(guān)于 JVM 在云環(huán)境中的運(yùn)行機(jī)制方面也有一些有趣的進(jìn)展,如 OpenJDK 中有一個(gè)名為檢查點(diǎn)協(xié)調(diào)恢復(fù)(CRaC)的新項(xiàng)目。像 Records 這樣的特性是開發(fā)新代碼的上佳選擇。
Evans:Java 17 LTS 發(fā)布,已具備能力部署使用了記錄和密封類型的代碼,還有用于監(jiān)控 JVM 組的 JFR 流。在可觀察性領(lǐng)域走向標(biāo)準(zhǔn)化——特別是 OpenTelemetry。對(duì)于 Java 靜態(tài)部署的含義(“靜態(tài) Java”)出現(xiàn)了早期共識(shí)的跡象。我還認(rèn)為,Panama 將是一個(gè)超出人們預(yù)期的項(xiàng)目。
Costlow:現(xiàn)在,JDK 有太多沒什么差異的發(fā)行版。微軟有一個(gè),Eclipse 有 Adoptium with Temurin,Oracle 也有他們自己的,還有 Azul、AWS Corretto、Red Hat、Liberica、SAP Machine 等 OpenJDK 構(gòu)建。我看到,這些東西在快速增加,但很難把它們都搞清楚。Snyk 的調(diào)查似乎與我看到的使用情況一致。鑒于它們都是兼容的,我希望市場(chǎng)能提供一個(gè)隨機(jī)裝置,我只要告訴它 ”給我個(gè) OpenJDK“就行,讓新晉 Java 開發(fā)人員不用再為選擇哪個(gè) JDK 發(fā)行版而苦惱。
Eclipse 的品牌建設(shè)尤其令人困惑:Adoptium 是 Eclipse 里面的一個(gè)小組,而 Eclipse 也是一個(gè)小組。你在使用 Temurin,它是 OpenJDK。想象一下,假如你在自己學(xué)習(xí) Java,碰到這樣一句話:"Eclipse Temurin 是 Adoptium 提供的 OpenJDK 發(fā)行版的名字"。品牌名稱還是越少越好。
Janssen:來(lái)自 Bellsoft 的 Liberica 實(shí)際上提供了相當(dāng)有趣的產(chǎn)品,這使得他們不同于其他 JDK 供應(yīng)商。例如,有一個(gè)完整的 JDK 仍然包含 JavaFX。我只知道 ojdkbuild 提供了一個(gè)類似的構(gòu)建。除此之外,他們還有其他多個(gè) JDK 和 JRE 的變種。
Azul 支持非 LTS 版本,并會(huì)在更長(zhǎng)的時(shí)間內(nèi)提供小版本更新。部分供應(yīng)商還提供 Docker 鏡像等。所以差異還是有一些的,但最終用戶很難對(duì)它們進(jìn)行比較,并正確選擇使用哪一個(gè)。
Rahman:從 Java EE 到 Jakarta EE 的過渡是我們這個(gè)領(lǐng)域最大最重要的技術(shù)轉(zhuǎn)換之一。Jakarta EE 9.x 的推出為這一轉(zhuǎn)換打下了堅(jiān)實(shí)的基礎(chǔ)。很高興看到 Jakarta EE 10 正朝著 2022 年初發(fā)布的方向前進(jìn)??雌饋?lái),Jakarta EE 大使貢獻(xiàn)指南中的許多項(xiàng)目都正在實(shí)現(xiàn)過程中,這可以填補(bǔ)一些長(zhǎng)期存在的空白。我認(rèn)為,Java EE 的長(zhǎng)期用戶可以松一口氣了。
我也非常高興地看到,Jakarta EE 9.x 發(fā)展勢(shì)頭不錯(cuò)。大多數(shù)運(yùn)行時(shí)已經(jīng)完成了從 javax 到 jakarta 命名空間的過渡,包括 Tomcat 和 Jetty。Spring Framework 6 正致力于同時(shí)采用 Java SE 17 和 Jakarta EE 9。同樣,MicroProfile 5 也正在向 Jakarta EE 過渡。根據(jù) 2021 年 Jakarta EE 開發(fā)者調(diào)查,相當(dāng)多的開發(fā)者已經(jīng)過渡到 jakarta 命名空間或正在計(jì)劃這樣做。
Jakarta EE 10 Core Profile 正在為實(shí)現(xiàn) Quarkus 和 Helidon 的完全兼容鋪路,MicroProfile Config API 正在向新的 Jakarta 配置規(guī)范過渡,MicroProfile Context Propagation 也在發(fā)生著同樣的變化。MicroProfile REST 客戶端和 JWT Propagation 也可能會(huì)發(fā)生同樣的情況。
Redlich:隨著 Jakarta EE 9 的發(fā)布,工具供應(yīng)商可以支持新的 jakarta 包命名空間,開發(fā)團(tuán)隊(duì)可以測(cè)試應(yīng)用程序向新命名空間的遷移,而運(yùn)行時(shí)供應(yīng)商可以測(cè)試并提供選項(xiàng)和能力,為遷移和兼容 Jakarta EE 8 提供支持。Jakarta EE 9 也被認(rèn)為是一個(gè)創(chuàng)新的基礎(chǔ),有助于推動(dòng) Jakarta EE 10 及后續(xù)版本的新特性。
Mihalceanu:構(gòu)建本地可執(zhí)行文件是另一個(gè)經(jīng)常被標(biāo)記為 "最需要 "的話題,因?yàn)閲@容器化應(yīng)用程序更小更快的競(jìng)賽仍在繼續(xù)。
Rahman:看到 Spring Native 不斷取得進(jìn)展也是非常好的。
Costlow:我很高興地看到,原生應(yīng)用程序的角色已逐步成型,但令人失望的是,缺少一個(gè)具體的規(guī)范或工作組。情況似乎會(huì)變成這樣,“你得到了 GraalVM 碰巧提供的東西”,但它的行為有時(shí)與標(biāo)準(zhǔn) JDK 不同——相似但不相同。
Janssen:Spring Native 攜啟動(dòng)速度快和內(nèi)存占用率低的優(yōu)勢(shì)與所有 GraalVM 及其他框架展開了競(jìng)爭(zhēng)。
Silz:一旦 Spring Boot 支持 GraalVM 的本地編譯,快速而小巧的原生 Java 程序?qū)⒊蔀橹髁?。這將使得 Java 在無(wú)服務(wù)器解決方案方面更具競(jìng)爭(zhēng)力,并可能有助于其在微服務(wù)領(lǐng)域的采用。我說(shuō) "可能 ",是因?yàn)槲艺J(rèn)為,到今天為止,對(duì)于長(zhǎng)期運(yùn)行的進(jìn)程,JVM JIT 的吞吐量 / 性能仍然優(yōu)于 GraalVM。無(wú)論怎樣,這都會(huì)得到大量媒體的報(bào)道,并使 Java 在整體上更具競(jìng)爭(zhēng)力。
Beckwith:ARM64 現(xiàn)在是商用硬件。因此,為在 ARM64 上部署而優(yōu)化過的 Java 開發(fā)工具包和 Java 運(yùn)行時(shí)環(huán)境已經(jīng)越來(lái)越主流。
Silz:Java 16 支持 Windows on ARM。但我認(rèn)為,只有 Java 17 和 ARM on macOS 一起才能打開方便之門。我相信,大約有四分之一的 Java 開發(fā)者使用 Mac。而到 2022 年底,他們只能購(gòu)買帶有 ARM 的 Mac。我預(yù)計(jì)這也將推動(dòng) Windows/Linux on ARM 變得更好。
結(jié)盟 == Java 云原生
Redlich:MicroProfile 和 Jakarta EE 工作組是 Eclipse 基金會(huì)下兩項(xiàng)互補(bǔ)的計(jì)劃,他們合作成立了 Java 云原生(CN4J),一個(gè)定義 Jakarta EE 和 MicroProfile 定位和合作關(guān)系的聯(lián)盟,包括品牌和云原生技術(shù)。
Rahman:看到 Quarkus 在 Java EE 和 Spring 開發(fā)者中取得了應(yīng)有的進(jìn)展,真是讓人驚喜。我也很高興能夠看到 Jakarta EE 和 MicroProfile 最終結(jié)盟。
Costlow:對(duì)于 Gluon 為使單個(gè) JavaFX 代碼庫(kù)隨處可運(yùn)行所做的工作,我印象非常深刻。Web 是之前缺失的部分,而坦率地說(shuō),客戶端 Java 現(xiàn)在看起來(lái)又很酷了。
Silz:我認(rèn)為 JPMS 試圖解決三個(gè)問題:應(yīng)用服務(wù)器的類加載困境;更好地組織 JDK 和所有的 Java 應(yīng)用;減少部署 / 運(yùn)行時(shí)的 JVM 內(nèi)存占用。
然而,至少在 JPMS 多次推遲后終于推出時(shí),這些問題都已經(jīng)有了足夠好的解決方案:用于類加載的 OSGI;用于 Java 程序結(jié)構(gòu)的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) / 清潔架構(gòu) /Modulith/ArchUnit 測(cè)試;以及用于減少 JVM 內(nèi)存占用的提前編譯。
盡管我們可能有少數(shù)數(shù)據(jù)點(diǎn)不可靠,但它們都顯示,Java 8 及更早版本的使用量要大于等于 Java 11 及更新版本的使用量。我認(rèn)為,這部分是因?yàn)槟K使 Java 9+ 獲得了“很難從 Java 8 升級(jí)上去”的名聲,這點(diǎn)也為 Mark Reinhold 所承認(rèn)。這是 JPMS 所帶來(lái)的一個(gè)意想不到的后果。這意味著至少有一半的 Java 開發(fā)者無(wú)法利用過去 7 年中 Java 取得的進(jìn)步,因?yàn)樗麄儽焕г诹?Java 8 上。
在模塊上投入了 7 年多,其間的機(jī)會(huì)成本意味著許多其他的 Java 改進(jìn)要么被擱置,要么只出現(xiàn)在 Java 10 及后續(xù)版本中。變量關(guān)鍵字 var、新的 switch 語(yǔ)法和 Java Record 減少了 Java 中許多臭名昭著的樣板代碼。如果這些都出現(xiàn)在 Java 9 中,而不是 Java 模塊中,我想 Java 現(xiàn)在的情況會(huì)更好,因?yàn)樗鼮殚_發(fā)者帶來(lái)了更高的生產(chǎn)力。
Beckwith:得益于現(xiàn)有垃圾收集器的改進(jìn),許多架構(gòu)師和開發(fā)人員已經(jīng)控制了 GC(垃圾收集)的暫停時(shí)間。還有許多人通過將工作負(fù)載遷移到低延遲、自適應(yīng)的 GC 來(lái)控制尾部延遲。
Evans:在市場(chǎng)份額方面,Java 11 已經(jīng)基本上與 Java 8 持平。容器取得突破性進(jìn)展,現(xiàn)在已成為大多數(shù) Java 應(yīng)用程序的部署方式。Quarkus 日趨成熟,并吸引了大量的新粉絲。
Redlich:Eclipse 基金會(huì)下成立了多個(gè)工作組:MicroProfile、OSGi 和 Adoptium(以前稱為 AdoptOpenJDK)。MicroProfile 工作組和 Jakarta EE 工作組在 Cloud Native for Java(CN4J)聯(lián)盟倡議上展開了合作。
微軟創(chuàng)建了自己的 OpenJDK 下游發(fā)行版——Microsoft Build of OpenJDK,并加入 Java Community Process,進(jìn)一步增加了對(duì) Java 的投入。
Beckwith:Switch 語(yǔ)句的模式匹配、本地鏡像、云原生 -JVM 和加速器上的 JVM、Loom 和 Graal 項(xiàng)目。
Mihalceanu:升級(jí)換代。由于 Java 語(yǔ)言的發(fā)展,框架特性也隨之蓬勃發(fā)展。根據(jù)我的經(jīng)驗(yàn),編寫干凈、安全的代碼直接取決于團(tuán)隊(duì)的共享方式?,F(xiàn)在,得益于一些框架的內(nèi)置功能,可以通過持續(xù)測(cè)試以及少量的本地配置來(lái)盡量減少開發(fā)或修復(fù)代碼的時(shí)間。
Rahman:Java SE 17 和 Quarkus 風(fēng)頭正盛。Kubernetes 仍然很受歡迎。人們對(duì)于 Spring Native 的早期熱情高漲。開放標(biāo)準(zhǔn) Java 社區(qū)的人們正在密切關(guān)注 Jakarta EE 10 和 MicroProfile/Jakarta EE 的結(jié)盟。對(duì)于生態(tài)系統(tǒng)中的每個(gè)人來(lái)說(shuō),都有一些好事發(fā)生。
Ritter:幾乎所有的開發(fā)者,至少在從事新項(xiàng)目的開發(fā)時(shí),關(guān)注的焦點(diǎn)都是如何最有效地利用云,特別是通過微服務(wù)架構(gòu)。在編寫這些類型的應(yīng)用程序時(shí),容器以及 Kubernetes 和 Spring Boot 等技術(shù)非常強(qiáng)大。我聽過很多關(guān)于如何使用這些技術(shù)的討論。
Evans: Java 17、Loom、Quarkus。
Beckwith:我預(yù)料到了 Java 生態(tài)系統(tǒng)的豐富性和 Java 開發(fā)工具包產(chǎn)品不同 JDK 供應(yīng)商的偏好。不過,大家的參與度以及對(duì)發(fā)布節(jié)奏加速的認(rèn)同,還是讓人感到驚喜。
Mihalceanu:我喜歡 Java 的地方在于,每個(gè)版本都會(huì)調(diào)整語(yǔ)言和開發(fā)體驗(yàn)。諸如 java.time.format.DateTimeFormatter 和 DateTimeFormatterBuilder 類中新引入的 period-of-day 日期格式、switch 模式匹配或者 java.util.stream.Stream 接口中的 toList() 默認(rèn)方法等增強(qiáng)功能,都有助于開發(fā)人員編寫更干凈、更容易閱讀的代碼。
Ritter:縱觀 Java 平臺(tái),沒有什么是我們沒有想到的,這是件好事。現(xiàn)在,新特性都是使用 JEP 來(lái)定義它們要做的事情,我們有一個(gè)清晰的路線圖,從中可以看到未來(lái)若干年內(nèi)將包含在 Java 中的東西。也就是說(shuō),開發(fā)者可以放心,不會(huì)有影響向后兼容性的大變化,至少不會(huì)在沒有足夠的時(shí)間來(lái)評(píng)估和討論的情況下。
Evans:包括 Azul 和 Red Hat 在內(nèi)的一些供應(yīng)商開始關(guān)注暖啟動(dòng) / 暫停和恢復(fù) /CRaC 技術(shù)。
Redlich:MicroStream 成立,這是一家 Java 持久化公司。雖然他們的歷史可以追溯到 2013 年,但該公司是 2019 年正式成立的。從那時(shí)起,他們開源了 MicroStream,并在今年早些時(shí)候發(fā)布了 MicroStream 5.0。MicroStream 已經(jīng)與 Helidon 集成,而且剛剛發(fā)布了 6.0 版本。
Silz:在停滯多年后,VS Code 正在顛覆 Java IDE 領(lǐng)域的局面。它是個(gè)新穎的東西:一個(gè)跨平臺(tái)、跨語(yǔ)言的 IDE,它速度快,有非常不錯(cuò)的插件,并且廣受用戶喜愛!你可能覺得這聽起來(lái)像 "20 年前的 Eclipse IDE",沒錯(cuò)。
VS Code 最近增強(qiáng)了它的 Java 功能。我希望它能成為最好的免費(fèi) Java IDE。我認(rèn)為 Eclipse 意識(shí)到了這種威脅,并創(chuàng)建了一個(gè)工作組來(lái)協(xié)同防御。我不確定 IntelliJ 會(huì)受到多大的影響。
使用 VS Code 進(jìn)行 Java 開發(fā)有一個(gè)令人興奮的副作用,就是你可以很輕松地用非 JVM 語(yǔ)言進(jìn)行開發(fā)。我認(rèn)為你在 Eclipse 中根本無(wú)法做到這一點(diǎn),或者只能在一定程度上做到。你可以使用 JetBrains 的 "所有產(chǎn)品包 "來(lái)開發(fā)非 JVM 語(yǔ)言,但是你必須啟動(dòng)不同的 IDE,它們不共享設(shè)置、插件或鍵盤快捷鍵。
Mihalceanu:我在大學(xué)時(shí)就開始了我的 Java 之旅,了解到 Java 支持面向?qū)ο缶幊?,包括設(shè)計(jì)模式和最佳編碼實(shí)踐。作為一名專業(yè)人士,我很高興地看到,隨著時(shí)間的推移,這門語(yǔ)言也吸收了其他范式:函數(shù)式、反應(yīng)式,在不失去可讀性的前提下提供了更多的實(shí)現(xiàn)選項(xiàng)。如何在這些模式之間做出選擇?間或?qū)?yīng)用程序進(jìn)行性能分析,發(fā)現(xiàn)瓶頸,并改進(jìn)實(shí)現(xiàn)邏輯。
此外,沒有人就不可能有進(jìn)步。Java 社區(qū)是一個(gè)龐大的、充滿活力的、熱情洋溢的社區(qū),無(wú)論是實(shí)際存在的社區(qū),還是虛擬社區(qū),目的都是一樣的:分享知識(shí),提高自己,成功地解決問題。
請(qǐng)注意,貢獻(xiàn)者的觀點(diǎn)僅僅道出了這個(gè)故事的一部分。Java 生態(tài)系統(tǒng)的不同部分和地區(qū)可能有不同的經(jīng)驗(yàn)。您可以將我們這份 2021 年 Java 發(fā)展趨勢(shì)報(bào)告視為一個(gè)辯論的起點(diǎn),而不是一份權(quán)威性的聲明,并歡迎大家對(duì)行業(yè)的發(fā)展方向進(jìn)行公開討論。
作者簡(jiǎn)介:
原文鏈接:
https://www.infoq.com/articles/java-jvm-trends-2021/


▊《Java高并發(fā)與集合框架:JCF和JUC源碼分析與實(shí)現(xiàn)》
銀文杰?著
掌握J(rèn)ava集合框架和Java并發(fā)工具包,輕松應(yīng)對(duì)80%的工作場(chǎng)景
本書并不講解JCF和JUC中各個(gè)組件的基本使用方法,因?yàn)樽髡呦嘈臞CF和JUC中各種組件的基本使用方法大家通過查看網(wǎng)絡(luò)資料就可以詳細(xì)了解。
本書的主要內(nèi)容是從源代碼的層面剖析JCF和JUC的實(shí)現(xiàn)原理,以及講解源代碼中蘊(yùn)含的理論知識(shí),并講解如何將這些大師級(jí)的理論知識(shí)應(yīng)用到實(shí)際工作中。
因?yàn)槭沁M(jìn)行源代碼分析,所以這本書包含了大量的Java原生模塊的源代碼,并且進(jìn)行了逐行注釋。請(qǐng)注意是逐行注釋,所以在大家閱讀本書時(shí),不用擔(dān)心無(wú)法讀懂源代碼。這解決了很多讀者的源代碼恐懼癥問題。
這些被逐行注釋、逐行剖析講解的源代碼,也是本書區(qū)別于市面上同類書籍的一大亮點(diǎn)。本書還包含了大量的工作原理圖例,這些圖例與每一個(gè)進(jìn)行了源碼剖析的知識(shí)點(diǎn)一一對(duì)應(yīng),形成了本書獨(dú)具特點(diǎn)的圖文并茂的講解方式。
例如本書當(dāng)然會(huì)詳細(xì)剖析ConcurrentHashMap集合的結(jié)構(gòu)和工作過程,但本書更關(guān)注ConcurrentHashMap集合為了適應(yīng)高并發(fā)場(chǎng)景所做的典型化設(shè)計(jì)。
(掃碼了解本書詳情?。?/span>

▊《Java并發(fā)編程深度解析與實(shí)戰(zhàn)》
譚鋒(Mic)?著
涵蓋Java整個(gè)并發(fā)編程體系的核心庫(kù)和核心類使用以及原理分析
涵蓋大量實(shí)戰(zhàn)案例,可以讓讀者理解各類技術(shù)在實(shí)際應(yīng)用中的使用
本書涵蓋Java并發(fā)編程體系的核心庫(kù)和核心類的使用及原理分析,具體包括線程、synchronized、volatile、J.U.C中的重入鎖和讀寫鎖、并發(fā)中的條件等待機(jī)制、J.U.C并發(fā)工具集、深度探索并發(fā)編程不得不知的工具、阻塞隊(duì)列、并發(fā)安全集合、線程池、異步編程特性等。書中針對(duì)每一個(gè)技術(shù)點(diǎn),縱向分析與其相關(guān)的所有內(nèi)容,并且對(duì)相關(guān)知識(shí)點(diǎn)進(jìn)行了非常詳細(xì)的說(shuō)明,同時(shí)從架構(gòu)實(shí)踐的角度來(lái)看待并發(fā),通過大量實(shí)戰(zhàn)案例讓讀者理解各類技術(shù)在實(shí)際應(yīng)用中的使用方法。
(掃碼了解本書詳情?。?/span>

▊《瘋狂Java講義(第5版)》
李剛 著
10年原創(chuàng)經(jīng)典,影響數(shù)十萬(wàn)讀者
本書為所有打算深入掌握J(rèn)ava編程的讀者而編寫,適合各種層次的Java學(xué)習(xí)者和工作者閱讀,也適合作為大學(xué)教育、培訓(xùn)機(jī)構(gòu)的Java教材。但如果只是想簡(jiǎn)單涉獵Java,則本書過于龐大,不適合閱讀。
(掃碼了解本書詳情?。?/span>

▊《重學(xué)Java設(shè)計(jì)模式(全彩)》
付政委(小傅哥)?著
一本動(dòng)手實(shí)戰(zhàn)的技術(shù)圖書,主要介紹設(shè)計(jì)模式解決方案的具體落地方法
本書是一本基于互聯(lián)網(wǎng)真實(shí)案例編寫的Java設(shè)計(jì)模式實(shí)踐圖書。全書以解決方案為核心,從實(shí)際開發(fā)業(yè)務(wù)中抽離出交易、營(yíng)銷、規(guī)則引擎、中間件、框架源碼等22個(gè)真實(shí)場(chǎng)景,對(duì)設(shè)計(jì)模式進(jìn)行全面、徹底的分析。幫助讀者靈活地使用各種設(shè)計(jì)模式,從容應(yīng)對(duì)復(fù)雜變化的業(yè)務(wù)需求,編寫出易維護(hù)、可擴(kuò)展的代碼結(jié)構(gòu)。本書融合了生動(dòng)有趣的動(dòng)畫插圖和實(shí)踐開發(fā)的類結(jié)構(gòu)圖,讓讀者不僅能體會(huì)設(shè)計(jì)模式的概念和原理,更能清楚地知曉落地方法。此外,本書還介紹了DDD四層架構(gòu)、RPC中間件設(shè)計(jì)、分布式領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)和設(shè)計(jì)模式的結(jié)合使用等內(nèi)容。
(掃碼了解本書詳情!)

▊《Java無(wú)難事――詳解Java編程核心思想與技術(shù)》
孫鑫?著
全書編排符合國(guó)人思維習(xí)慣
為你掃清Java學(xué)習(xí)路上的絆腳石
本書系統(tǒng)地講解了Java開發(fā)人員需要掌握的核心知識(shí)。本書按照中國(guó)人的思維習(xí)慣,由淺入深、循序漸進(jìn)、引導(dǎo)式地帶領(lǐng)讀者快速掌握J(rèn)ava知識(shí)。全書秉承作者一貫的寫作風(fēng)格,對(duì)知識(shí)的講解讓你知其然且知其所以然。全書語(yǔ)言通俗易懂、幽默風(fēng)趣,內(nèi)容安排上由淺入深,知識(shí)講解上深入淺出,為你節(jié)省腦細(xì)胞,輕松愉快地掌握J(rèn)ava知識(shí)??磿哿耍瑳]關(guān)系,還有視頻。同步學(xué)習(xí)視頻并不是書中內(nèi)容的重復(fù),而是有力的補(bǔ)充和完善。本書還講解了依賴注入(IoC/DI)容器、面向切面編程(AOP)、對(duì)象關(guān)系映射(ORM)框架的實(shí)現(xiàn)原理,同時(shí)還給出了并發(fā)編程領(lǐng)域中經(jīng)常用到的線程池的實(shí)現(xiàn)。
(掃碼了解本書詳情?。?/span>
如果喜歡本文 歡迎?在看丨留言丨分享至朋友圈?三連 ?熱文推薦??
