最新 Java 發(fā)展趨勢報告

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

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

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


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

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

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

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

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