編輯 | 云昭
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
5月,Java迎來了30歲生日。
它是一門很魔幻的語言。自首次亮相的三十年間,Java始終在主導(dǎo)著各大企業(yè)級(jí)的開發(fā)市場(chǎng),經(jīng)受住了無數(shù)“殺手級(jí)”技術(shù)的沖擊,云原生來了,它跟進(jìn),大模型來了,它集成,不管現(xiàn)代計(jì)算的創(chuàng)新風(fēng)云如何變幻,Java始終屹立不倒。
30年里,多少有關(guān)“Java消亡”、“Java已死”的言論此起彼伏,但回頭看,Java這朵傲梅依舊“傲視群芳”,它依舊是企業(yè)軟件開發(fā)領(lǐng)域的王者,并持續(xù)為全球最關(guān)鍵的商業(yè)應(yīng)用提供動(dòng)力。
“到目前為止,Java對(duì)此有著最佳的實(shí)踐記錄。”
近日,知名公司Azul Systems的聯(lián)合創(chuàng)始人兼首席技術(shù)官Gil Tene在一次采訪中被問及當(dāng)今應(yīng)用的長(zhǎng)期可維護(hù)性問題時(shí),認(rèn)為Java有著絕對(duì)的優(yōu)勢(shì)。
圖片
他指出,“今天你就能雇到人。你有數(shù)百萬掌握技能的人可以雇傭,他們能夠維護(hù)10到15年前用Java編寫的應(yīng)用程序。沒有其他語言能真正做到這一點(diǎn)。”
那么,Java會(huì)消亡嗎?當(dāng)然。 Tene認(rèn)為,在技術(shù)領(lǐng)域,沒有什么是永恒的,最終會(huì)有東西取代Java。
“當(dāng)那發(fā)生時(shí),我敢肯定,無論它叫Java還是別的什么,我們都會(huì)深入研究它、熱烈討論它,并為之興奮。”
話不多說,本篇文章帶領(lǐng)各位探討:30歲的Java是如何殺出一條血路,并將如何在AI大行其道的今天,續(xù)寫王者傳奇!
1.在炒作周期中幸存
Java經(jīng)受住了無數(shù)本應(yīng)取而代之的技術(shù)挑戰(zhàn)。Tene舉例說:“我記得20年前就回答過這個(gè)問題,從那以后我的回答方式也大致相同,因?yàn)槟憧赡苓€記得,在21世紀(jì)初,LAMP(Linux、Apache、MySQL、PHP/Perl/Python)技術(shù)棧曾一度要席卷全球并扼殺Java,但現(xiàn)在已經(jīng)沒有多少LAMP技術(shù)棧的程序員了。”
那些所謂的Java“殺手”名單,聽起來像是一個(gè)曾經(jīng)熱門技術(shù)的墓地。“然后是Ruby on Rails,它也曾揚(yáng)言要席卷全球并扼殺Java,但現(xiàn)在已經(jīng)很難找到Ruby程序員來維護(hù)那些東西了,”Tene補(bǔ)充道。
值得注意的不僅僅是Java的生存能力——更是其持續(xù)的增長(zhǎng)。“Java一點(diǎn)也沒有萎縮。Java一直在持續(xù)增長(zhǎng)、增長(zhǎng)、再增長(zhǎng),并且它的鄰居們(其他技術(shù))也在不斷發(fā)展壯大,”Tene解釋說。
2.從硬件先驅(qū)到軟件創(chuàng)新者
Azul Systems 本身就體現(xiàn)了Java的演進(jìn)。該公司成立于2002年,最初通過構(gòu)建定制硬件來解決Java性能問題,這是一種新穎的方法。“我們圍繞運(yùn)行Java應(yīng)用程序構(gòu)建了一些有趣的數(shù)據(jù)中心硬件解決方案,并將它們整合、集中到我們稱之為計(jì)算設(shè)備和計(jì)算設(shè)備集群中,”Tene回憶道。“今天,我們會(huì)稱之為虛擬Java云。”
但隨著計(jì)算領(lǐng)域的變化,Azul也隨之改變。“在21世紀(jì)末,隨著商用硬件變得足夠好,以及虛擬機(jī)監(jiān)控程序、虛擬化技術(shù)乃至云計(jì)算的興起,我們轉(zhuǎn)型,脫離了硬件,”他解釋說。大約15年前,該公司轉(zhuǎn)型為他所說的“純軟件公司”。
如今,Azul在Java生態(tài)系統(tǒng)中占據(jù)著獨(dú)特的地位。“我們擁有Java領(lǐng)域最大的工程團(tuán)隊(duì),”Tene說。“在Java領(lǐng)域,除了Oracle之外,我們可能擁有最大的商業(yè)產(chǎn)品,”他說。該公司目前服務(wù)于各個(gè)垂直行業(yè)的客戶,專注于讓Java運(yùn)行得更快、更高效。
3.JVM打破性能壁壘
Azul的Optimizer Hub代表了Java虛擬機(jī)(JVM)運(yùn)作方式的根本性轉(zhuǎn)變。該技術(shù)不再讓每個(gè)JVM獨(dú)立優(yōu)化代碼,而是允許整個(gè)JVM集群共享優(yōu)化數(shù)據(jù)。
“它允許一個(gè)JVM集群進(jìn)行協(xié)調(diào)、共享經(jīng)驗(yàn)并共同進(jìn)行交叉優(yōu)化,而不是每個(gè)JVM獨(dú)立運(yùn)行并完全自行處理其必須面對(duì)的問題。”
他說,一些“非常大的機(jī)構(gòu)”已經(jīng)采用了這項(xiàng)技術(shù),并將其投入到擁有數(shù)萬個(gè)JVM的生產(chǎn)環(huán)境中進(jìn)行“集群協(xié)調(diào)”。
Azul最新的創(chuàng)新是上個(gè)月推出的JVM Inventory。該公司聲稱,作為Azul Intelligence Cloud的一項(xiàng)功能,JVM Inventory是一個(gè)Java發(fā)現(xiàn)工具和“云服務(wù),它能持續(xù)編目正在運(yùn)行的JVM,從而將Oracle Java的遷移時(shí)間縮短數(shù)月,并幫助確保Oracle許可證的持續(xù)合規(guī)以應(yīng)對(duì)審計(jì)。”
此外,該公司基于LLVM框架構(gòu)建的Falcon JIT編譯器,彰顯了Azul致力于推動(dòng)Java性能邊界的決心。“Falcon JIT編譯器產(chǎn)生的Java代碼是世界上所有JVM中最快的,而且領(lǐng)先幅度很大。它比OpenJDK中的C2編譯器快30%到40%,”Tene聲稱。
4.從Applet到AI,Java正在找自己的位置
Java的演進(jìn)本身就講述了現(xiàn)代計(jì)算的故事。Tene說,30年前,它只是“網(wǎng)頁瀏覽器中一個(gè)有趣、古怪的小東西”,如今已成為企業(yè)計(jì)算的支柱。
他補(bǔ)充說,在90年代末,Java“有點(diǎn)像闖入了企業(yè)計(jì)算領(lǐng)域,然后在最初推出的三到四年內(nèi)就主導(dǎo)了企業(yè)應(yīng)用。”
“如果你回顧Java的初期以及它如何迅速取代了之前用于構(gòu)建商業(yè)應(yīng)用的所有其他技術(shù),我們可以說,我們還沒有看到能夠取代Java的東西,”Tene指出。“從那種情況發(fā)生到每個(gè)人都用那種[新語言]而不是Java來構(gòu)建應(yīng)用程序,可能只需要大約兩到四年時(shí)間,而我們根本沒有看到這種趨勢(shì)發(fā)生的任何跡象。”
然而,即使在新興的人工智能領(lǐng)域,Java也正在找到自己的位置。“根據(jù)我?guī)讉€(gè)月前聽到的統(tǒng)計(jì)數(shù)據(jù),Java目前是該領(lǐng)域排名第三的語言,而Python則遙遙領(lǐng)先,”Tene在談到AI應(yīng)用開發(fā)時(shí)說。“我們看到希望將AI融入應(yīng)用程序的應(yīng)用數(shù)量大幅增加,這對(duì)于Java應(yīng)用程序來說是很自然的事情。”
5.獨(dú)有的企業(yè)開發(fā)優(yōu)勢(shì)
Java的持久力歸結(jié)為一個(gè)簡(jiǎn)單的商業(yè)現(xiàn)實(shí):企業(yè)需要能夠持久運(yùn)行的軟件。“當(dāng)你試圖弄清楚你想用什么來構(gòu)建你的應(yīng)用程序時(shí),你應(yīng)該考慮的一件事是,五年后、十年后你將如何維護(hù)它?你是否能夠雇傭到所需的人才來保持這個(gè)東西的活力和運(yùn)行?”
這種理念也延伸到了Java的開源生態(tài)系統(tǒng)。“整個(gè)Java社區(qū)傾向于產(chǎn)生長(zhǎng)壽的框架、項(xiàng)目和庫,人們會(huì)使用并依賴它們很多很多年,”Tene解釋說。“如果你觀察大多數(shù)Java社區(qū)項(xiàng)目,會(huì)發(fā)現(xiàn)它們沒有太多丑聞發(fā)生,也沒有很多獨(dú)裁者或討厭的人在運(yùn)營(yíng)它們。”
Azul在其客戶群中親眼見證了這種穩(wěn)定性。“由于Java如此普遍、如此流行,我們幾乎在你能想到的所有垂直行業(yè)都有各種規(guī)模的客戶,”Tene說。“當(dāng)他們希望Java運(yùn)行得好或更好時(shí),當(dāng)他們要么需要Java應(yīng)用的良好指標(biāo)(這是我們Prime平臺(tái)的強(qiáng)項(xiàng)),要么只是想要非常好的、負(fù)責(zé)任地構(gòu)建、有支持的開源產(chǎn)品(這是我們Core平臺(tái)的核心),我們都會(huì)為這些客戶提供服務(wù)。”
此外,Tene說,JavaScript用于Web圖形用戶界面,而Python是開發(fā)者用來“編寫非常輕量級(jí)的東西和服務(wù)”的方式。“但每當(dāng)你看到事情走向成熟——從原型設(shè)計(jì)和一些初始功能發(fā)展到‘我需要大規(guī)模運(yùn)行這個(gè),并且不能讓它的成本是應(yīng)有成本的50倍’時(shí),它們往往會(huì)轉(zhuǎn)向像Java這樣的東西。”他列舉了Twitter(現(xiàn)在的X)和LinkedIn作為例子。
“我們看到很多人用Java或基于Java的語言(如Kotlin、Scala或今年JVM上出現(xiàn)的任何新語言)重寫大型后端,但從這個(gè)意義上說,它們都是基于Java的,我們看到的這種情況只多不少,”Tene說。
6.現(xiàn)代Java的復(fù)興
與此同時(shí),那些可能還記得Java冗長(zhǎng)和笨重的用戶,可能會(huì)對(duì)其現(xiàn)代的化身感到驚訝。“將于今年晚些時(shí)候發(fā)布的Java 25,與Java 8相比,在易用性、友好度和項(xiàng)目啟動(dòng)便捷性方面都有了顯著提升,”Tene說。
該語言還通過虛擬線程等創(chuàng)新?lián)肀Я嗽圃_發(fā),這些創(chuàng)新有望簡(jiǎn)化并發(fā)編程。“至少在Java中,我們正在嘗試進(jìn)行一種轉(zhuǎn)變,我認(rèn)為隨著Java 25及更高版本的推出,我們將有機(jī)會(huì)回歸到操作在線程中運(yùn)行的簡(jiǎn)單舊概念,并能夠同時(shí)運(yùn)行數(shù)百萬個(gè)此類線程。”
Azul也通過諸如檢查點(diǎn)協(xié)調(diào)恢復(fù)(CRaC)這樣的項(xiàng)目為Java的即時(shí)啟動(dòng)能力做出貢獻(xiàn)。“我們領(lǐng)導(dǎo)的那個(gè)OpenJDK項(xiàng)目專注于為Java應(yīng)用程序和云環(huán)境提供非常快速的啟動(dòng)。所以,可以想象一下那些需要自動(dòng)擴(kuò)展的微服務(wù)或需要快速啟動(dòng)的云函數(shù)。”
7.會(huì)有新東西取代Java但我會(huì)為之興奮
盡管Java目前占據(jù)主導(dǎo)地位,但Tene承認(rèn),在技術(shù)領(lǐng)域沒有什么是永恒的。最終會(huì)有東西取代Java。“當(dāng)那發(fā)生時(shí),我敢肯定,無論它叫Java還是別的什么,我們都會(huì)深入研究它、熱烈討論它,并為之興奮。”
但就目前而言,在其誕生三十年后,Java繼續(xù)證明,有時(shí)最好的技術(shù)并非最新潮的——而是那些行之有效、可擴(kuò)展且持久耐用的技術(shù)。正如Tene在談到接下來可能會(huì)出現(xiàn)什么重要的編程語言時(shí)所說:“我們只是還沒看到它,我從21世紀(jì)初到中期就一直在這么說,所以,你知道,我一直在尋找,只是還沒看到它。”
不過,目前看,Java的王者之威依舊。毫無疑問的是,Java30年鑄就的生態(tài)已經(jīng)足夠強(qiáng)悍,即便放在今天這樣一個(gè)癡迷于追逐下個(gè)“重大事件”的行業(yè)中,沒有哪個(gè)企業(yè)敢放豪言:拋棄Java吧!
這表明,可靠性、可維護(hù)性和強(qiáng)大的生態(tài)系統(tǒng),通常比尖端、前沿的功能更為重要。
參考鏈接:https://thenewstack.io/azul-cto-java-at-30-still-rules-enterprise-dev/