Java誕生二十週年:回顧程式設計世界主宰的成長曆程

佚名發表於2015-05-21

  早在上世紀九十年代初就業已誕生的消費級電子實驗成果已經於本週迎來了其作為企業級計算領域主要解決方案的第二十個年頭。毫無疑問,Java已經成為一款佔據主導地位的平臺,可以執行在任何能夠支援Java虛擬機器的環境之下,而且成功經受住了多年以來其它競爭性語言的衝擊以及不斷曝出的安全性爭議。

Java 程式語言 Java二十週年

  Java之所以能在這條主宰之路上高歌猛進,憑藉的是自身多種優勢的協同作用。Java語言在1995年最初誕生時是作為一款物件導向的程式設計工具推出的,隨後在Sun Microsystems公司Green團隊其中包括James Gosling、Mike Sheridan以及其他眾多卓越人才的推動下迎來了為期五年的黃金髮展時代。這支技術隊伍希望將資訊與程式設計相結合,從而令網路瀏覽體驗更具動態,同時將數字化消費級裝置與計算機加以結合無論是在客戶端層面還是解決思路層面。有鑑於此,最初曾被稱為“Oak”的Java專案以客戶端Applet技術的姿態第一次受到廣泛關注。然而隨後人們發現,Java的遠期目標實際上是向伺服器端發展而這應當歸功於Sun、IBM以及甲骨文三家企業為其提供的以業務為導向的鼎力支援,Forrester研究公司分析師Jeffrey Hammond回憶道。

  “事實證明,‘一次編寫、隨處執行’的概念在涵蓋各類呈現出嚴重碎片化傾向的客戶端裝置時會變得難於實現,但其在混亂程度較低、不過仍由各供應商透過架構研發投入而造就的伺服器平臺上卻能夠帶來比較理想的實踐效果,”Hammond表示。“歷史告訴我們,Java的虛擬機器系統對於大部分開發人員而言比以往編寫並移植C程式碼的方式更為簡便易行,而且其同時擁有著良好的供應商支援能力。”

  Java目前的生存狀態

  得益於良好的早期發展態勢,Java如今每年擁有超過10億次下載量、且被安裝在97%的企業桌上型電腦當中,甲骨文公司公佈了這樣的統計數字。事實上,Java開發時至今日仍然是開發人員們最為可靠的技能儲備。它不僅養活著900萬Java開發者,同時也一直在Tiobe、PyPL以及RedMonk等程式語言人氣榜乃至Dice.com等求職網站上名列前茅甚至雄踞首位。

  “除了C語言與C++之外,Java是惟一一款能夠在計算技術數十年的發展演變之後仍能保持活力的語言方案,”儘管其間也經歷過起起落落,Arun Gupta指出他曾經於1999年在Sun公司參與過Java語言的開發工作,而如今他的主要關注點是在紅帽公司以開發者倡導事務主管的身份打理Java中介軟體。“全部主要產業都會在某種程度上將Java執行在其關鍵性任務部署方案當中。除非突然出現飛躍式的技術革新,否則Java在未來仍將表現出旺盛的生命力。”

  最近幾年來Java的領導工作被交到了甲骨文公司手上後者於2010年1月收購了Sun公司。早在2006年,Java就已經轉化為一套開源平臺,但並不是每個人都對Sun的決定感到滿意。作為其中一員,IBM公司希望Java能夠被Apache軟體基金會所接管。

  多年以來,Java不斷經受著眾多程式設計領域中後起之秀們的衝擊,其中包括JavaScript、PHP、Ruby、F#、Google Go甚至是執行在JVM環境之上的各類語言例如Groovy與Scala。事實上正如很多人所言,JVM已經成為Java保持活力的關鍵所在。

  “Java語言的最大成功之處在於造就了這套平臺,也就是JVM本身,”Gupta指出。“這套平臺非常穩定而且能夠支援種類繁多的主流語言型別,包括Java、Groovy、Ruby、Scala、Clojure以及Python等等。這些語言全部可以被編譯為位元組碼,進而執行在JVM之上。”

  不過相較於固守輝煌的過往,Java自身也一直在不斷進化。去年釋出的Java 8就引入了函式程式設計支援能力,而將於2016年推出的Java 9則著眼於模組化機制。

  “模組化機制與Java 9將成為Java技術發展歷程中的一項大事件,同時也滿足了整個生態系統多年以來的期待與需要,”Eclipse基金會執行董事Mike Milinkovich指出該基金會最初由IBM所建立,旨在提供Java相關工具。“除此之外,我認為Java正成為雲基礎設施以及物聯網領域當中愈發重要的一套平臺。”

  站在Java肩膀上的那些技術成果

  多年以來,許多關鍵性技術以及業務都以Java為實際基礎。如果著眼於最近一段時間,那麼最值得一提的肯定要數谷歌Android移動平臺。這套平臺透過Dalvik虛擬機器對Java加以運用,甚至導致甲骨文方面以侵犯版權及專利為由將谷歌告上了法庭。Android的出現為擁有Java技能儲備的開發人員指明瞭一條道路,幫助他們在移動應用程式開發這一新興領域找到了新的突破口。

  “Java對於Eclipse及其社群而言非常重要。在我們的全部270多個專案當中,絕大多數都利用Java程式碼來實現,其中包括我們的大部分工具、執行時環境以及物聯網技術方案,”Eclipse基金會的Milinkovich解釋道。

  其它立足於Java根基之上的技術還包括來自BEA Systems以及JBoss的應用程式伺服器方案(二者分別被甲骨文與紅帽公司收購),外加JetBrains IntelliJ Idea IDE。

  “IntelliJ IDE,或者更具體地講,Renamer的誕生源自其締造者們在編碼過程中的實際需求,而當時他們所使用的恰好是Java,”JetBrains開發人員倡導事務負責人Hadi Hariri指出。“在這方面,我們幾乎可以將Java作為IntelliJ IDE的誕生基石。”

  開源Spring框架的成功同樣乘上了Java的東風,並開始與Java企業版展開激烈競爭。

  Java經歷的考驗與磨難

  Java在自身的發展道路上也曾經遭遇種種波折與坎坷。最近幾年來,與Java相關的安全漏洞可說是層出不窮,這直接導致技術業界發出對Java進行隔離的呼聲。與此同時,客戶端Java也已經開始成為一項過時的技術方案,甚至被視為駭客們的最佳拍檔。不過甲骨文公司已經斥資對相關工作進行支援,旨在控制與Java相關的安全問題。有了技術巨頭的配合,我們可以相信Java的安全態勢將在未來實現持續改觀。

  不過對於甲骨文過去五年對Java的統治,也有一部分使用者表示怨念很深,這主要是因為該公司在處理Java相關問題時出現了一系列失誤、技術發展的停滯與Java安裝程式內出現的“垃圾軟體”更是遭到使用者們的一致惡評。作為Java的公認締造者,James Gosling在Sun接受收購後不久就離開了甲骨文公司,但他仍從技術層面對甲骨文所採取的Java發展策略表示讚賞。

  蘋果在其廣受好評的iOS裝置上絲毫沒有引入Java元素則讓包括開發人員在內的Java陣營遭遇到又一大挫折。不過歸功於Java社群的聰明才智,如今已經有不少第三方工具供應商開始為Java開發提供運用原有技能儲備為iPad及iPhone平臺開發應用程式的辦法。

  有些人甚至把Java的整體定位視為移動技術領域的一塊盲區儘管事實上Android系統一直在利用Java技術,而Java微型版近年來也一直致力於將Java引入嵌入式裝置當中。

  “Java錯過了這場移動變革的時代發展良機,而且這塊市場目前由iOS/Swift以及Android/Dalvik所主導,”Gupta表示。“Java確實能夠透過各種方式作用於此類裝置,但除非其能夠以OEM方式直接登陸這些平臺、否則廣泛普及恐怕只會是痴人說夢。”

  不過Java最近幾年中所面臨的最大障礙可能還是要數JavaScript的迅速崛起。

  JavaScript締造者Brendan Eich最近就JavaScript取代Java既定作用的可能性提出了自己的觀點,其替代範疇包括:各種各樣的虛擬機器系統、廣泛部署的嵌入式方案、實現編碼目標以及支援多種語言等。

  JavaScript甚至開始對Java的主要起效陣地伺服器發起衝擊,而這要歸功於Node.js的出現。PayPal與Netflix兩家公司在面對這一關鍵性的歷史抉擇時,都已經選擇了利用Node.js來取代Java。

  偉大的Java仍將長久存在

  儘管一路上有坎坷亦有顛簸,但支持者們認為Java在未來很長一段時間內仍將繼續保持自身在計算核心層面的重要地位。

  “Java仍將繼續在基礎設施當中扮演核心組成部分(在未來五到十年內),同時遍佈企業用於執行自身業務的記錄系統,不過我認為我們在客戶端上使用Java的機率將逐步降低,特別是考慮到微軟以及谷歌都已經開始對自身瀏覽器作出調整、外加移動裝置數量的激增,”Forrester公司的Hammond指出。

  不過Java接下來所要面臨的最大挑戰很可能源自微服務以及向外擴充套件架構的快速崛起。

  “我將高度關注Java 9的相關訊息,瞭解核心Java庫現代化調整程式的實際效果究竟如何,”Hammond表示。“我們發現已經有很多開發人員在利用Node等規模更小的執行時環境支援自己的新型微服務架構,同時他們亦在向無狀態向外擴充套件型架構遷移。Java從這個角度講,.Net也面對著同樣的問題需要證明自身在這一新領域當中能夠帶來良好的表現。”

  儘管Java已經相當成熟,但lambda等新特性以及對其它多種語言的支援能力仍在JVM之上不斷出現,旨在幫助該平臺始終保持與時俱進的能力,Hammond補充道。

  “從技術的角度看,我認為Java將成為正確的發展方向,而且在我看來像Groovy這樣的專案能夠幫助Java技術團隊作出出色的決策,例如新增lambda表示式,”Groovy專案負責人Guillaume Laforge表示。順帶一提,Groovy早在2003年就已經擁有了lambda表示式機制。

  Eclipse基金會的Milinkovich認為Java在很長一段時間內仍將保持旺盛的生命力,他指出這一週期很可能會長達五十年。

  “Java以及Java平臺定義了整整一代企業級軟體開發模式,而這些系統將在很長一段歷史時期內繼續存在,”他表示。“數百萬開發人員利用Java作為自己的首選開發語言,而這些技能未來多年將一直伴我們同行。”

  Milinkovich同時補充稱,Java對開源社群有著很大的虧欠。

  “Java的成功源自大量來自開源社群的創新及支援貢獻,特別是來自Apache與Eclipse社群的協助。擁有專業級品質、但卻完全免費的Eclipse IDE已經在全球範圍內成為Java的主要配伍方案,”Milinkovich指出。“Apache的貢獻則包括Tomcat、Commons、OpenJPA以及其它保證Java在企業領域取得成功的重要專案。”

  Gupta對此表示贊同,並指出Java的輝煌在很大程度上得益於圍繞其發展而成的強大技術社群。

  這可能將成為未來決定Java具體壽命的關鍵性要素:即社群自身的發展態勢。

相關文章