唱衰 Java 的聲音由來已久。
尤其是近幾年,云原生時代的到來,軟件的交付方式發(fā)生了根本性變化,Java 遭受了諸多質(zhì)疑。
傳統(tǒng)領(lǐng)域的 Java 開發(fā),交付的是 Java 應(yīng)用本身,具體體現(xiàn)在以 “jar”“war” 的形式交付,而云原生最佳實(shí)踐,則是基于微服務(wù)形式,以容器為基本交付單位,并在 K8S 中編排。云原生應(yīng)用要求更快速的啟動、強(qiáng)調(diào)資源按量消費(fèi),彈性擴(kuò)展,以及可觀測性等。就這一層面而言,在云原生時代,Java 的缺陷確實(shí)是天然存在的。
“事實(shí)上,Java 技術(shù)在云原生時代也在不停地進(jìn)化。” 面對唱衰 Java 的諸多論調(diào),阿里云程序語言與編譯器團(tuán)隊(duì)負(fù)責(zé)人、Java Champion 李三紅選擇理性看待。
” 比如更多支持容器部署的特性已經(jīng)加入到 OpenJDK 版本。 一直被人詬病的 Java 啟動慢的問題,目前基于 OpenJDK 技術(shù)的幾個創(chuàng)新項(xiàng)目正在多個不同方向探索,包括 CRaC (Coordinated Restore at Checkpoint) 、Leyden,以及由阿里和 Google 作為主要貢獻(xiàn)者的 Fast Startup Incubator 等項(xiàng)目。在資源彈性使用方面,由 Alibaba Dragonwell 提供的 ElasticHeap 功能,主要目的是解決云計(jì)算環(huán)境下 Java 內(nèi)存資源使用的彈性問題。 最后,OpenJDK 的 JFR 以及 JFR Streaming 技術(shù)為構(gòu)建 Java 云原生可觀測工具提供了重要的技術(shù)支撐。“
Java 面臨的挑戰(zhàn),不僅僅是云原生
李三紅認(rèn)為,從 1995 年 Java 1.0 發(fā)布算起, Java 技術(shù)這二十多年的發(fā)展,大致存在一明一暗兩條線的驅(qū)動。“一條暗線,是指 Java 或者說支撐 Java 的底層 JVM 技術(shù)適配計(jì)算機(jī)架構(gòu)的演進(jìn)與發(fā)展。一條明線,是指 Java 作為一個開發(fā)者工具,本質(zhì)是要面向業(yè)務(wù)領(lǐng)域解決業(yè)務(wù)問題的,所以自然而然地推動了 Java 在云原生,AI 等方向的演進(jìn),解決這些領(lǐng)域內(nèi)碰到的問題與挑戰(zhàn)。”
后摩爾時代,算力增長放緩,更多利用多核,SIMD(單指令多數(shù)據(jù)流)等并行計(jì)算技術(shù),以及異構(gòu)來釋放更大的算力。相較于 C/C++ 這些傳統(tǒng)編譯型語言,Java 處在軟件棧的更高抽象級別,自帶 Java 標(biāo)準(zhǔn)庫,以及運(yùn)行時環(huán)境,這也給 Java 創(chuàng)新帶來了更多的空間以及可能性。
李三紅指出, Java 在多核、異構(gòu)加速領(lǐng)域做了多方面的探索,適應(yīng)與優(yōu)化。比如,OpenJDK 孵化的 Vector API 項(xiàng)目,依賴 CPU 的 SIMD 指令,獲得計(jì)算性能的成倍提升。即將發(fā)布的 OpenJDK 19 引入了 Virtual Threads (Preview),旨在幫助 Java 開發(fā)者高效處理并發(fā) (尤其針對 IO 密集型場景) 。而在異構(gòu)領(lǐng)域,早 2014 年 JVM 技術(shù)峰會,AMD 就分享了 Sumatra 項(xiàng)目,嘗試實(shí)現(xiàn) JVM 與 Heterogeneous System Architecture 目標(biāo)硬件交互。由 The University of Manchester 發(fā)起的 TornadoVM 項(xiàng)目,目標(biāo)是幫助 Java 開發(fā)者不需要了解 GPU 編程語言或者相關(guān)的 GPU 體系結(jié)構(gòu)知識就可以編寫面向異構(gòu)的并行程序。
在 AI 方向上,Java 也在與時俱進(jìn)。據(jù)李三紅介紹,在企業(yè)計(jì)算領(lǐng)域,Java 是被使用最多的語言之一,但對于機(jī)器學(xué)習(xí)領(lǐng)域的開發(fā),Java 一直缺乏標(biāo)準(zhǔn)支持,這個方向其實(shí)在 JCP-EC 討論也比較多。
基于 Java SE 技術(shù),在 JCP 流程內(nèi)推動并最終在 2022 年定稿的 JSR 381 規(guī)范,其目標(biāo)就是為不同領(lǐng)域的 Java 機(jī)器學(xué)習(xí)開發(fā)提供通用的可重用設(shè)計(jì)。JSR 381 定義了標(biāo)準(zhǔn)的 Java API,提供了基本機(jī)器學(xué)習(xí)、圖像分類和對象識別方面的處理能力。“依賴于不同的機(jī)器學(xué)習(xí)平臺,如 TensorFlow, MXNet 以及 DeepNett 等,JSR-381 提供了不同的實(shí)現(xiàn)。對于 Java 生態(tài)內(nèi)的開發(fā)者來說,不必再去學(xué)習(xí) Python, 可以依賴 JSR-381 VisRec API 去構(gòu)建你的 AI 應(yīng)用。”
現(xiàn)實(shí)中,Java 應(yīng)用的版本升級是較為緩慢的。Java 11 (OpenJDK11)距離 2018 年發(fā)布已經(jīng)過去四年多,目前國內(nèi)大多數(shù)的用戶仍然停留在 Java 8。李三紅認(rèn)為,動力不足是多方面的,對開發(fā)者來說最直接的原因可能是擔(dān)心升級后兼容性帶來的穩(wěn)定性問題,會直接影響業(yè)務(wù)的連續(xù)性。
這種問題并不罕見。令人振奮的是,處于 Java 生態(tài)中的企業(yè)正在貢獻(xiàn)自己的力量。阿里內(nèi)部在大規(guī)模地往 Java 11、 Java 17 遷移的時候,總結(jié)了不少的經(jīng)驗(yàn),并且將這些經(jīng)驗(yàn)通過工具的方式沉淀下來。最后阿里開源了 EMT4J (Eclipse Migration Toolkit for Java) ,能夠幫助 Java 應(yīng)用無縫升級最新版本 JDK, 主要支持從 Java 8 到 Java 11,以及 17 的升級。
李三紅還補(bǔ)充道,對于 Java 版本的升級問題,還可以從另一個角度 ——Software Sustainability—— 來進(jìn)一步探討。
“由 Titus Winter 等編寫的《Software Engineering at Google - Lessons Learned from Programming Over Time》一書中,談到了組織的 Codebase Sustainability 概念,強(qiáng)調(diào)了兩個核心理念: 第一,無論應(yīng)對的是技術(shù)需求,還是業(yè)務(wù)需求,軟件代碼應(yīng)當(dāng)可以做一切應(yīng)該做的改變。 第二,這些改變帶來的影響是安全的。
“回到 Java 版本升級這個問題,我們在開發(fā) Java 應(yīng)用的時候,建議應(yīng)用架構(gòu)師們把 Java 版本升級納入到 Software Sustainability 這個維度下考量,對代碼開發(fā)規(guī)范進(jìn)行相關(guān)的約束。例如,不要讓你的代碼依賴 JDK 內(nèi)部不公開的 API,不要讓你的實(shí)現(xiàn)依賴特定的 JDK 版本行為,不要使用被 Deprecated 的 API 等等。架構(gòu)的目標(biāo)應(yīng)當(dāng)考慮 Code Sustainability,讓你的 Java 應(yīng)用可以在任何時候根據(jù)實(shí)際需要平滑升級到不同 JDK 版本,不應(yīng)當(dāng)因?yàn)榇a缺乏 Sustainability 而導(dǎo)致的盡量少的版本升級。”
李三紅 對 Java 的未來充滿信心,源于他在 JVM 領(lǐng)域耕耘多年,不僅深入了解 Java 特性,并且有能力進(jìn)行創(chuàng)新性研究。
在加入阿里之前,李三紅一直在 IBM Java 技術(shù)中心,參與 J9 虛擬機(jī)開發(fā),期間領(lǐng)導(dǎo)了 JVM 多租戶項(xiàng)目。目前就職于阿里云,領(lǐng)導(dǎo)程序語言與編譯器團(tuán)隊(duì),主要的工作是結(jié)合阿里、螞蟻及云上各業(yè)務(wù)的需求,在編譯器、語言運(yùn)行時等基礎(chǔ)領(lǐng)域進(jìn)行研究創(chuàng)新。目前,在語言工具鏈這塊,已經(jīng)形成 Alibaba Dragonwell (Java 生態(tài)), Alibaba Cloud Compiler (C++ 生態(tài)) 等多個產(chǎn)品來支撐其業(yè)務(wù),語言工具鏈相關(guān)的開源技術(shù)也在為龍蜥社區(qū)的開發(fā)者提供支持。
2020 年,李三紅獲得了 Java 技術(shù)領(lǐng)導(dǎo)者社區(qū) Java Champions 推薦,被授予 Java Champion 榮譽(yù)。Java Champion 由 Java 社區(qū)成員提名,并且必須得到現(xiàn)有 Java Champions 成員的一致同意。唯有為 Java / JVM 生態(tài)系統(tǒng)做出重要貢獻(xiàn)的專家才能獲此榮譽(yù)。
去年,阿里云第三次入選 JCP 最高執(zhí)行委員會 (JCP-EC), 作為阿里云在 JCP-EC 的代表,李三紅一直在參與 JCP-EC 領(lǐng)導(dǎo)下的相關(guān) Java 標(biāo)準(zhǔn)討論制定工作。
GOTC 2023 很榮幸邀請到李三紅擔(dān)任 “基礎(chǔ)設(shè)施與軟件架構(gòu)” 分論壇的出品人。該分論壇入選的議題,是經(jīng)過了李三紅和大會組委會深入討論,精心安排的。希望從多個維度,最大程度覆蓋了基礎(chǔ)軟件各領(lǐng)域的介紹分享。
既有最底層芯片技術(shù) (RISC-V) 的話題,也包括了像 C++、Java 語言運(yùn)行時的內(nèi)容,還包含了應(yīng)用最廣泛的中間件 Dubbo、RocketMQ、 Kafka 等內(nèi)容的分享。
2023 年 5 月 28 日,GOTC 2023 “基礎(chǔ)設(shè)施與軟件架構(gòu)” 分論壇將為開發(fā)者們提供基礎(chǔ)架構(gòu)領(lǐng)域最豐富、最前沿、以及最具技術(shù)性的內(nèi)容分享。期待各位的蒞臨。
全球開源技術(shù)峰會(Global Open-source Technology Conference),簡稱 GOTC,是由開放原子開源基金會、 Linux 基金會亞太區(qū)、上海浦東軟件園和開源中國聯(lián)合發(fā)起的,面向全球開發(fā)者的一場盛大開源技術(shù)盛宴。 5 月 27 日至 28 日,GOTC 2023 將于上海舉辦為期 2 天的開源行業(yè)盛會。大會將以行業(yè)展覽、主題發(fā)言、特別論壇、分論壇的形式展現(xiàn),與會者將一起探討元宇宙、3D 與游戲、eBPF、Web3.0、區(qū)塊鏈等熱門技術(shù)主題,以及開源社區(qū)、AIGC、汽車軟件、開源商業(yè)化、開源教育培訓(xùn)、云原生等熱門話題,探討開源未來,助力開源發(fā)展。
審核編輯 :李倩
-
JAVA
+關(guān)注
關(guān)注
20文章
2984瀏覽量
106854 -
AI
+關(guān)注
關(guān)注
87文章
34173瀏覽量
275339 -
容器
+關(guān)注
關(guān)注
0文章
507瀏覽量
22362
原文標(biāo)題:Java永不落伍
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Java開發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多Java開發(fā)者在用?

KENWOOD建伍 KR-V7080 KR-V8080功放維修手冊
樹莓派復(fù)古游戲機(jī):用科技重現(xiàn)經(jīng)典,讓童年永不落幕!

Java應(yīng)用OOM問題的排查過程

Java 23功能介紹

伍爾特集團(tuán)與蔚來汽車戰(zhàn)略合作一周年
Java集合API的改進(jìn)介紹

安森美與伍爾特電子攜手升級高精度電力電子應(yīng)用虛擬設(shè)計(jì)

對比Python與Java編程語言
基于Java的工具Power Stage Designer

伍爾特電子USB Type-C產(chǎn)品方案

C語言與Java語言的對比
java反編譯能拿到源碼嗎
華納云:java web和java有什么區(qū)別java web和java有什么區(qū)別

評論