如果說用「永存、曲折、已死、重生」來形容 Java,筆者以為一點也不為過。
1991 年,James Gosling 帶領著名為「Green Team」的團隊著手研發一種新的語言以及專為下一代數位設備和電腦使用的網路系統。歷時 4 年辛勤工作後,該專案最終修成正果並取名為 Java。
Java 有著類似C的語法並且有「一次編譯,隨處運作」的靈便性。透過虛擬機器機制,可以使程式碼在底層平台進行執行時編譯。回首Java 過去的20 年,首先是經歷了微電腦時代的興與衰,然後進入伺服器領域及智慧電話領域,繼而在DHS(美國土安全部)的「不安全」定義下艱難前行,最後投入甲骨文(Oracle)懷抱現正蓄勢迸發第二春。難道還有別的語言有如此起伏的情節嗎?
Java 推出後,Sun 發現市場上存在著一個問題—電腦領域與非電腦領域彼此是隔間的。 Sun 認為這是一個機遇,如果能把兩者連結起來將會帶來一場電腦革命。 「統一的主題是網絡。」Gosling 說,「放眼當時的市場,兩個領域的廠家各自為政,沒有形成統一的網絡。因此很多時候不得不重複大量的實驗,但這些其實早在30 年前的計算機科學中已解決。被重複創造。 我們提出的模組概念終將改變這個局面。而過後五年,所有人都把重心轉向了企業應用。 Gosling 說,「回首Java EE 統治世界的場景至今仍歷歷在目。我們唯一的失誤是把全部精力都集中於此,所有資源都被優先調配到EE,導致無法投入更多的精力去開拓桌面的世界。的跟風者。天時、地利、人和。 ME 的意思是小型設備和嵌入系統。 ME 在翻蓋手機上推廣,成為當時的標準配備。 Gosling 說,「ME 已經做得足夠好了,在當時是最強大的智慧電話開發平台。不過現在漸漸被遺忘,因為Android 太耀眼了。」
作為一個獨立平台,Java ME 被邊緣化了。 Oracle 開發部資深副總裁Cameron Purdy 表示在下一個版本Java 9 中會把所有平台統一起來,「對比SE、ME 獨立出來但發展緩慢。Java 9 的模組化特性會使得Java ME 的可重複性得到增強,這將是反擊Android 和iOS 的有力武器。 IBM 報價 65 億美元,Sun 沒答應,74 億美元,Oracle 得到了 Sun。
在 Oracle 管理下,頭幾年 Java 表現良好,以 0 重大失誤成為安全的代名詞。不過在 2013 年 1 月情況開始變壞,美國土安全部(DHS)建議人們盡量不要使用 Java。作為企業導向的軟體公司,打補丁修復 Bug 的速度是 Oracle 的短板,根本無法與面向大眾消費者的微軟或 Adobe 相比。別人是以小時或天來計,而 Oracle 是以月為基本單位。
Purdy 認為 Oracle 已經盡了最大的努力去修補並清楚這個短板的重要性。問題的關鍵是如何打造一支在失去 Gosling 等幹將後仍能獨當一面的團隊。他說,「我們聽到了不少質疑之聲,但其實我們一直都在不斷加入投入的力度並努力尋求解決的方案。」
浴火重生
DHS 的公開聲明不啻是壓垮 Java 的最後一根稻草,很多人都預言 Java 將風光不再。然而事情慢慢得到轉機,不少 Java 粉絲開始出來捍衛 Java 的名聲。 Dr. Dobb’s Journal 編輯 Andrew Binstock 曾發表一篇社論,其題目是:《即使面臨死亡,Java 看上去還是相當健康的》。
對於Oracle 的接管,Gosling 表達了自己的喜悅之情,「得知這個消息後,我感到非常驚訝。Oracle 是個非常優秀的監護人並大大超出了我的期望。一開始我還擔心它會不會成為第二個Solaris,現在看來我是多慮了。 「我們花了大量時間來審視整個過程以確定如何進行 Bug 修復,從輸入到發布機制,我們回顧了大量的程式碼。最後列出了一個長長的錯誤修復表。」Purdy 回憶說。
安全曾讓 Java 蒙羞,安全也讓 Java 重獲新生。在 2014 Pwn20wn 駭客大會上,Java 成為唯一沒有被攻破的平台。而在 2015 的會議中,Pwn20wn 甚至沒有把 Java 列在攻擊名單上。
現在和未來
Java 9 將是自被 Oracle 收購後發布的首個重大版本。 Java 9 最主要的目標是最大限度地實現模組化以幫助人們實現積木式的應用編寫。
「我們的目的是幫助人們從JAR 的束縛中解脫出來。」Saab 說,「你將很輕鬆地處理在過去相當複雜的事情,例如打包。你可以只用到需要的模組,而把其它忽略。 Milinkovich 的看法是,「我認為Java 的未來在於物聯網。我很樂意看到Oracle 及其合作夥伴能把精力放在完全點對點的Java 儲存方案上,透過網關實現裝置到企業後台的連線。如果成功將能讓Java 在往後20 年發展得更好走得更遠。生態,所有部分彼此相通。都曾預言Java 將一蹶不振,但現今在不少的重要專案中,Java 仍扮演著極為重要的角色。
Purdy 指出,沒有Java,甚至不會有大數據的大發展,「Hadoop 本身就是用Java 編寫的。當你需要在運行MapReduce 的伺服器叢集上發布新功能時,你需要進行動態的部署,而這正是Java 所擅長的。 ”
另一Java 受惠者是Twitter。一開始 Twitter 是用 Ruby on Rails 寫的,但隨著用戶數的成長 RoR 逐漸顯得力不從心。 Fail Whale(失敗鯨)的宕機畫面預示著瓶頸問題亟需解決。在 2012 年,Twitter 從 RoR 轉向了 Java 和 Scala,而失敗鯨從此滅絕了。
可見 Java 不但沒有成為昨日黃花,還重新煥發了新的生機。讓我們共同期待 Java 9,看看 Oracle 將為廣大開發者帶來什麼樣的驚喜。