1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 13232字,需瀏覽 27分鐘

         ·

        2022-02-20 09:03

        來(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ù)的建議定位提供更多的背景信息。

        JDK 17

        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)目。

        OpenJDK 的下游發(fā)行版

        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è)。

        Java EE/Jakarta EE

        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ù)版本的新特性。

        GraalVM/Spring Native

        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)力。

        ARM64/Windows on ARM

        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 變得更好。

        Jakarta EE 與 MicroProfile
        結(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é)盟。

        JavaFX/Gluon

        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 的投入。

        Java 社區(qū)怎么說(shuō)?

        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è)置、插件或鍵盤快捷鍵。

        Java 社區(qū)

        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)介:

        Michael Redlich 是位于新澤西州克林頓的??松梨诠こ萄芯坎块T高級(jí)研究員(他在本文中的觀點(diǎn)和意見僅代表他自己,和他的雇主無(wú)關(guān))。他是一名 IT 專業(yè)人士,擁有羅格斯大學(xué)計(jì)算機(jī)科學(xué)學(xué)士學(xué)位。自 2001 年以來(lái),他一直是花園州 Java 用戶組(原 ACGNJ Java 用戶組)的主持人,同時(shí)也是一位經(jīng)驗(yàn)豐富的會(huì)議發(fā)言人,在加入 InfoQ 之前與 Barry Burd 合作撰寫了多篇文章。自 1989 年 12 月以來(lái),作為??松竞桶?松梨诠镜拈L(zhǎng)期雇員,Mike 在公司中承擔(dān)了許多任務(wù),包括汽車測(cè)試、從事利用紅外光譜學(xué)和化學(xué)計(jì)量學(xué)的分析科學(xué)研究、開發(fā)科學(xué)方面的 IT 應(yīng)用,他目前的任務(wù)是從事利用流變學(xué)和聚合物物理學(xué)的高分子科學(xué)研究。在他的職業(yè)生涯中,Mike 發(fā)展了自己的領(lǐng)導(dǎo)能力,他曾擔(dān)任新澤西州業(yè)余計(jì)算機(jī)小組(一個(gè)非營(yíng)利性的 501(c)(3) 計(jì)算機(jī)教育組織)的主席,目前則擔(dān)任花園州 Java 用戶組(也是一個(gè)非營(yíng)利性的 501(c)(3) 組織)的主管。Mike 是國(guó)際演講協(xié)會(huì)的成員,最近取得了高級(jí)溝通者銀牌證書。他酷愛跑步和騎行,完成了許多馬拉松比賽。Mike 與他的妻子 Rowena 居住在新澤西州弗萊明頓,他們?cè)谀抢锕捕让篮脮r(shí)光,騎行或跑步,旅行的話,則主要是到洛杉磯的新奧爾良和里約熱內(nèi)盧的新港。
        Ben Evans 是紅帽公司高級(jí)首席軟件工程師。此前,他曾擔(dān)任 New Relic Instrumentation 首席架構(gòu)師。他還是 jClarity(一家 JVM 性能優(yōu)化公司,于 2019 年被微軟收購(gòu))公司的聯(lián)合創(chuàng)始人。他是 JCP 執(zhí)行委員會(huì)的前成員,在長(zhǎng)達(dá) 6 年的時(shí)間里幫助定義 Java 生態(tài)系統(tǒng)的標(biāo)準(zhǔn)。Ben 是 Java Champion;曾經(jīng) 3 次作為 JavaOne Rockstar 的演講者;他是《Java 優(yōu)化》、新版《Java 技術(shù)手冊(cè)》和 《程序員修煉之道》等書的作者。他經(jīng)常就 Java 平臺(tái)、性能、架構(gòu)、并發(fā)性、創(chuàng)業(yè)公司和相關(guān)主題發(fā)表演講。
        Erik Costlow 是一位擁有豐富 Java 經(jīng)驗(yàn)的軟件安全專家。他負(fù)責(zé)管理 Contrast Security 和公共社區(qū)版的開發(fā)者關(guān)系。Contrast 在應(yīng)用程序中添加了傳感器,使他們有能力根據(jù)應(yīng)用程序如何使用數(shù)據(jù)來(lái)檢測(cè)安全威脅。Erik 曾是甲骨文公司專注于 Java 8 安全的首席產(chǎn)品經(jīng)理,在黑客攻擊的高峰期加入,然后在兩年沒有零日漏洞的情況下離開。在那段時(shí)間里,他從企業(yè) / 商業(yè)和社區(qū)層面詳細(xì)了解了 Java。他還在數(shù)據(jù)中心和云性能自動(dòng)化方面為 Turbonomic 的產(chǎn)品管理團(tuán)隊(duì)提供了幫助。Erik 還領(lǐng)導(dǎo)了 Fortify 靜態(tài)代碼分析器的產(chǎn)品管理,這個(gè)工具可以幫助開發(fā)者發(fā)現(xiàn)和修復(fù)自定義源碼中的漏洞。Erik 還通過 Packt Publishing 出版了一些關(guān)于數(shù)據(jù)分析、統(tǒng)計(jì)和密碼學(xué)的開發(fā)者課程。
        Johan Janssen 是 Sanoma Learning 教育部門的軟件架構(gòu)師。他喜歡分享與 Java 相關(guān)的知識(shí)。他曾在 Devoxx、Oracle Code One、Devnexus 等會(huì)議上發(fā)表演講。他曾參與程序委員會(huì)來(lái)協(xié)助會(huì)議舉辦,并組織發(fā)起了 JVMCON。他曾獲得 JavaOne Rock Star 和 Oracle Code One Star 獎(jiǎng)項(xiàng)。他為數(shù)字和印刷媒體撰寫了各種文章。他是 Chocolatey 各種 Java JDK/JRE 包的維護(hù)者,每月有大約 10 萬(wàn)次下載。
        作為一名全棧 Java 開發(fā)人員,Karsten Silz 在歐洲和美國(guó)工作了 23 年。2004 年,他在美國(guó)與人合伙創(chuàng)立了一家提供軟件產(chǎn)品的初創(chuàng)公司。Karsten 領(lǐng)導(dǎo)產(chǎn)品開發(fā) 13 年,在公司成功售出后離開。自 2017 年以來(lái),他一直在德國(guó)和英國(guó)做承包商(Spring Boot、Angular、Flutter)。2020 年,他與人共同創(chuàng)立了 SaaS 初創(chuàng)公司“Your Home in Good Hands”,他擔(dān)任公司 CTO。
        Monica Beckwith 是一名 Java Champion,同時(shí)也是一名 Java 性能工程師。她目前在微軟從事改進(jìn) OpenJDK HotSpot VM 的工作。她曾與 Arm、Oracle/Sun 和 AMD 合作;為服務(wù)器類系統(tǒng)優(yōu)化 JVM。Monica 曾被選為 JavaOne Rock Star 演講者,并且是 Garbage First Garbage Collector(G1 GC)的性能負(fù)責(zé)人。歡迎在 twitter 上關(guān)注她(@mon_beck)。
        Ana Maria Mihalceanu 是一名 Java Champion,紅帽公司的開發(fā)大使,布加勒斯特軟件工匠精神社區(qū)的共同創(chuàng)始人。她喜歡采用挑戰(zhàn)性的技術(shù)方案(涉及基于 Java 的框架和多個(gè)云供應(yīng)商),并樂此不疲。她通過知識(shí)共享積極支持技術(shù)社區(qū)的發(fā)展,并喜歡作為項(xiàng)目委員會(huì)成員策劃會(huì)議內(nèi)容。想了解更多關(guān)于她的信息,請(qǐng)?jiān)?Twitter 上關(guān)注她(@ammbra1508)。
        Reza Rahman 是微軟 Azure Java 首席項(xiàng)目經(jīng)理。他致力于讓 Java 開發(fā)者成為微軟的一等公民,而微軟成為 Java 生態(tài)系統(tǒng)的一等公民。Reza 曾是甲骨文公司的官方 Java 技術(shù)專家。他是 Manning Publishing 出版的暢銷書《EJB 3 實(shí)戰(zhàn)》的作者。長(zhǎng)期以來(lái),Reza 經(jīng)常在世界各地的 Java 用戶組和會(huì)議上發(fā)言,包括 JavaOne 和 Devoxx。他協(xié)助領(lǐng)導(dǎo)費(fèi)城的 Java 用戶組,并且很高興成為 Jakarta EE Ambassador 的創(chuàng)始成員。
        Simon Ritter 是 Azul 系統(tǒng)公司的副 CTO。Simon 從 1984 年開始加入 IT 行業(yè),擁有英國(guó)布魯內(nèi)爾大學(xué)物理學(xué)學(xué)士學(xué)位。1996 年,Simon 加入 Sun Microsystems 公司,從 JDK 1.0 開始接觸 Java 技術(shù);他曾從事 Java 開發(fā)和咨詢方面的工作。隨著 Sun 被收購(gòu),他成了 Oracle 的一員,負(fù)責(zé)管理核心 Java 平臺(tái)的 Java 推廣團(tuán)隊(duì)?,F(xiàn)在,在 Azul,他繼續(xù)幫助人們了解 Java 以及 Azul 的 JVM 技術(shù)和產(chǎn)品。Simon 曾兩次在 JavaOne 大會(huì)上被授予 Java Rockstar 獎(jiǎng)項(xiàng),并且是一名 Java Champion。他代表 Azul 公司參加 Java SE 專家組、JCP 執(zhí)行委員會(huì)、OpenJDK 漏洞小組和 Adoptium 指導(dǎo)委員會(huì)。

        原文鏈接:

        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>




        如果喜歡本文
        歡迎?在看留言分享至朋友圈?三連


        ?熱文推薦??





        瀏覽 73
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            自拍偷拍小电影 | 全黄做爰毛片免费看 | 美女让男人插 | 亚洲国产日韩在线一区 | 伦理6080 | 插屁股网站| 久热只有精品 | 一女多男黄色小说 | 免费无码婬片AAAA片直播深 | 女人下面毛茸茸的视频 |