Java30周年:從可移植的承諾到關(guān)鍵基礎(chǔ)設(shè)施
三十年前,Java 向世界提出了“一次編寫,隨處運行”的理念。它最初只是對可移植性和簡單性的大膽承諾,但很快便演變成了現(xiàn)代軟件領(lǐng)域的一股決定性力量。
如今,Java 已不僅僅是一種編程語言。它是無數(shù)應(yīng)用程序、系統(tǒng)和生態(tài)系統(tǒng)的支柱,其中包括我深度參與的最大的開源 Java 軟件包存儲庫:中央存儲庫(又名 Maven Central 或 Central)。
我的 Java 之旅
自1995年5月23 日正式發(fā)布以來,Java 始終屹立不倒,超越了各種潮流、競爭語言和范式的變遷。從 Applet和Servlet到微服務(wù)和云原生架構(gòu),Java 在保持其熟悉性的同時不斷發(fā)展。它為開源技術(shù)進入企業(yè)領(lǐng)域鋪平了道路。可以說,企業(yè)從未回頭。
我與Java 的淵源比我有時意識到的還要久遠。我記得高中時,每周日清晨我整理報紙,突然看到一篇關(guān)于一種名為 Java 的新編程語言的頭版文章。我把文章放在一邊,在休息時間閱讀,主要是出于好奇。當時我并不知道,但那一瞬間卻預(yù)示了我職業(yè)生涯中更重要的部分。
后來,大學(xué)第一學(xué)期,我旁聽了一門 Java 1.0 的夜校課程。他們允許我以學(xué)校網(wǎng)站管理員的身份免費上課(真是個過時的說法)。班上都是經(jīng)驗豐富的高級工程師,其中很多來自國防承包商,來學(xué)習(xí)這門新的高級語言。當時我只是個好奇的學(xué)生,不確定這門語言與我成為一名 C/C++ 硬核開發(fā)者的目標有什么關(guān)聯(lián)。當時,我完全不知道自己不知道什么。
幾年后,我成了朗訊的C++程序員,當時團隊里只有一位Java程序員。我常常跟他開玩笑:“你需要8位才能表示真假?我用C語言的一位就能做到!”
當時我并不太在意 Java。直到幾年后,我找到了一份公共衛(wèi)生領(lǐng)域的新工作,才從 C++ 轉(zhuǎn)到 Java。
從依賴地獄到軟件供應(yīng)鏈管理
Apache Maven 和 Central最初是為了解決依賴地獄……我們需要一種更好的方式來共享和使用 Java 庫。我們當時并不知道我們正在構(gòu)建全球軟件供應(yīng)鏈的基石……我們只是想讓構(gòu)建更加可靠。但隨著時間的推移,Central 成為了世界上最值得信賴的存儲庫之一。Java 開發(fā)者每天都依賴它。
那段經(jīng)歷教會了我一個重要的道理:當開發(fā)者完全信任一個系統(tǒng)時,尤其是在規(guī)模化的情況下,它就不再僅僅是基礎(chǔ)設(shè)施,而是關(guān)鍵基礎(chǔ)設(shè)施。隨之而來的是,開發(fā)者有責任保護它、維護它,并確保各個層面的透明度。
當其他生態(tài)系統(tǒng)苦苦掙扎于惡意軟件泛濫時,Central 依然是一個安全可靠的存儲庫。這并非偶然。這是數(shù)十年來積極主動的管理和明確定義的標準的結(jié)果——證明了有意識的治理與社區(qū)積極主動性相結(jié)合如何能夠確保軟件供應(yīng)鏈的安全。
數(shù)字說明了一切
Java 的發(fā)展勢頭并未減弱。根據(jù) Sonatype 最新的軟件供應(yīng)鏈狀況報告,Maven Central 去年處理了約 1.5 萬億個 Java 組件請求,同比增長 36%。這意味著,到 2024 年,開發(fā)人員每秒下載 Java 組件的次數(shù)將超過 47,000 次。
這并不是一種語言正在消亡的跡象,而是一種語言仍在持續(xù)發(fā)展壯大的跡象。
Maven Central 中的每個 Java 項目平均都有 28 個版本,比我們追蹤的任何其他開源生態(tài)系統(tǒng)都要多。如此深厚的版本控制表明 Maven 生態(tài)系統(tǒng)成熟且維護活躍——維護人員優(yōu)先考慮持續(xù)改進、向后兼容和長期支持。
Java 和開源爆炸式增長
在 Java 和 Maven 出現(xiàn)之前,為開源做出貢獻通常意味著下載源文件并與復(fù)雜的構(gòu)建系統(tǒng)搏斗——這通常比從頭編寫代碼更加費力。Maven 的推出首次實現(xiàn)了可靠地構(gòu)建和大規(guī)模復(fù)用開源 Java 項目。這種可訪問性改變了開發(fā)者的游戲規(guī)則,并成為企業(yè)開源發(fā)展的關(guān)鍵催化劑。
Java 不僅與開源一同成長,而且它與使用 Apache Maven 輕松復(fù)制他人構(gòu)建的功能一起,推動了 Java 的崛起。雖然 Apache HTTP 服務(wù)器(用 C 語言編寫)為Apache 軟件基金會奠定了基礎(chǔ),但如今,超過一半的項目都是基于 Java 的。
圖片
圖片來源:https://projects.apache.org/
早期,Java 與開源相輔相成。如今,兩者已密不可分。Java 的企業(yè)級就緒性,加上開源的靈活性,共同開啟了創(chuàng)新的新紀元——而且,這種勢頭仍在持續(xù)強勁發(fā)展。
發(fā)展伴隨著責任。隨著開發(fā)者、團隊乃至整個行業(yè)對 Java 及其周邊生態(tài)系統(tǒng)的依賴,信任變得與技術(shù)優(yōu)勢同等重要。在軟件供應(yīng)鏈攻擊頻發(fā)的時代,這一點尤為重要。
雖然 Java 的一致性有助于建立信任,但仍需要保持警惕才能維護信任,尤其是在威脅形勢不斷發(fā)展的情況下。
未來幾十年的負責任的管理
Java 進入第四個十年,面臨的挑戰(zhàn)不再是重塑,而是負責任的管理。
開源生態(tài)系統(tǒng)的生存并非僅僅依靠技術(shù)優(yōu)勢。信任、社區(qū)和責任感是其蓬勃發(fā)展的基石。Java 已經(jīng)證明了,當這些因素齊頭并進時,一切皆有可能。
但我們不能將這種信任視為理所當然。
如今,幾乎所有開源風(fēng)險都是可以預(yù)防的。只有 0.5% 的組件沒有安全的升級路徑。這意味著,只要采取正確的措施,99.5% 的漏洞都可以避免,尤其是在開發(fā)人員配備準確的數(shù)據(jù)和自動化工具的情況下。
軟件供應(yīng)鏈狀況報告明確指出了一件事:主動依賴管理比以往任何時候都更加重要。
作為 Java 生態(tài)系統(tǒng)的守護者,無論您是語言維護者、代碼庫運維人員還是開發(fā)者,我們每個人都應(yīng)該思考代碼之外的問題。我們必須從責任制、可見性和彈性的角度來思考。Java 教會了一代人如何構(gòu)建——現(xiàn)在,它可以幫助我們學(xué)習(xí)如何保障安全。
保護我們所構(gòu)建的一切
Java 30 年的歷史不僅僅關(guān)乎代碼,更關(guān)乎信任——通過數(shù)十年的可靠性、管理和共享標準贏得的信任。
Java 和 Maven 引入的標準——從可移植、可重用組件到存儲庫中的依賴項元數(shù)據(jù)——已成為幾乎所有現(xiàn)代編程生態(tài)系統(tǒng)所采用的基礎(chǔ)概念。JavaScript、Python 和 .NET 等語言的包管理模型很大程度上都歸功于 Java 幾十年前建立的模式。
如今,Java 已成為關(guān)鍵基礎(chǔ)設(shè)施的核心。這賦予了我們不容忽視的責任。
好消息是,大多數(shù)開源風(fēng)險是可以預(yù)防的。如今,99.5% 的已知漏洞都有更安全的版本可用。但僅僅知道這一點還不夠,采取行動才是關(guān)鍵。
如果您編寫庫、使用組件、運行存儲庫或為 Java 標準做出貢獻,那么您就是供應(yīng)鏈的一部分。這也使您成為防御的一部分。
因此,以下是行動呼吁:
不要只是構(gòu)建。要維護你所構(gòu)建的。不要只是使用開源。要更新它。不要只是信任 Java。要幫助它保持可信度。
Java 的下一個十年取決于我們今天所做的事情。
讓我們把事情做好。
作者:布萊恩·福克斯 Brian Fox 是 Sonatype 的首席技術(shù)官兼聯(lián)合創(chuàng)始人,也是開源安全基金會 (OpenSSF) 的董事會成員、金融科技開源基金會 (FINOS) 的董事會成員、新加坡金融管理局網(wǎng)絡(luò)和技術(shù)彈性專家 (CTREX) 小組成員































