我們看到“Java 死了嗎?” 這個問題,年年都被拋出來,然而至今為止,從所有的第三方統(tǒng)計來看,Java 不僅活的很好,還在保持增長。雖然不斷有新的語言面世,TIOBE 仍將 Java 評選為 2015 年度最熱門語言,目前顯示它相比 2014 年,用戶增加了 5%,高于其他所有編程語言。
不僅如此, PYPL Index(一個基于谷歌搜索中教程搜索頻度對語言進(jìn)行評估的站點)的數(shù)據(jù)顯示, Java 以 23.9% 的搜索量遙遙領(lǐng)先。
雖然有很多階段性因素令 Java 在過去 2 年迎來復(fù)興( android 開發(fā)的爆發(fā),Java 8 的發(fā)布,Spring 社區(qū)的發(fā)展,尤其是 Spring Boot),但是市場的主導(dǎo)地位只可能來源于優(yōu)秀的產(chǎn)品。以下是一些我們認(rèn)為 Java 不會很快衰落原因。
JVM 和 Java 生態(tài)
Java 虛擬機(JVM)將代碼編譯為字節(jié)碼,并在 JVM 中解釋執(zhí)行。由于 JVM 運行在特定的硬件和系統(tǒng)平臺之上,這使得 Java 得以在任何設(shè)備上運行,無論是 Windows 設(shè)備、Mac,或是某個不為人知的 Linux版本。
JVM 的最大優(yōu)勢是它增強了兼容性和穩(wěn)定性。因為你的應(yīng)用運行在虛擬機而非直接運行在實體機上,你只用編寫一次某個程序,就可以確保在所有的 Java 虛擬機實現(xiàn)上,都可以很好的運行。這一原則是 Java 的核心理念的基礎(chǔ):“一次編寫,處處運行?!?該技術(shù)使得 Java 應(yīng)用對底層環(huán)境的變化具備很好的彈性。
安全性 & 交互能力
Android 環(huán)境是研究 Java 原生安全性和通用性很好的素材。Android 占據(jù)全球移動市場89% 份額,基于 Java 運行。由于 Java 允許操作系統(tǒng)運行在虛擬機中,因此不需要為每臺設(shè)備分別編譯,這就提高了系統(tǒng)的穩(wěn)定性和易用性。
Android 完美的展示出了 Java 的另一個優(yōu)勢, 它與其他基于 JVM 的程序語言之間的交互能力,比如 Scala, Groovy, Clojure, JRuby 等等。當(dāng)你用“更加動態(tài)”的語言構(gòu)建你的應(yīng)用,依然需要使用 Java 以獲得強大的功能!
巨大的 Android 市場,依然不可避免的存在漏洞利用的風(fēng)險。 Android + Java 允許用戶運行低可信的應(yīng)用,所有應(yīng)用都運行在虛擬機中可以減小這種風(fēng)險。換言之,如果 APP 要利用系統(tǒng)內(nèi)核漏洞,唯一的途徑是利用 VM 實現(xiàn)的缺陷,好在 VM 被設(shè)計的足夠緊湊,并且通過定義良好的安全接口保護系統(tǒng)安全。
Java在大規(guī)模產(chǎn)品中的應(yīng)用
Amazon, Google, eBay 以及其他很多大型電子商務(wù)品牌,都使用Java作為他們的業(yè)務(wù)后臺。它們選擇 Java,是由于 Java 久經(jīng)考驗,并且有良好的擴展性。任何語言、任何后臺都可以或多或少的管理一些用戶,但是 Java 能可靠的應(yīng)對至少 2 億用戶。我們來看一些突出的例子。
Hadoop
Apache Hadoop 是一個運行在大型硬件集群上的 Java 框架應(yīng)用。 在設(shè)計之初,它便具有高吞吐能力,應(yīng)用于處理或者操作海量數(shù)據(jù)集合的應(yīng)用場景。 如今, Hadoop 被很多像 Facebook, Amazon, IBM, Joost, 以及 Yahoo 這樣的大型公司應(yīng)用于數(shù)據(jù)處理、分析、報表等方面。
Hadoop 的創(chuàng)始人 Doug Cutting 曾說過:“ Java 在開發(fā)者的生產(chǎn)率和運行效率之間取得很好的權(quán)衡。開發(fā)者可以使用廣泛存在的高質(zhì)量類庫,切身受益于這種簡潔、功能強大、類型安全的語言。“ 換言之: 沒有 Hadoop 就不存在大數(shù)據(jù),沒有 Java 就沒有 Hadoop。
Twitter 最近為 Java 和 Oracle 團隊,贏得一場令人矚目的勝利。Twitter 原本基于 Ruby on Rails 開發(fā), 伴隨著 Twitter 的快速流行, Twitter 的經(jīng)歷非常清楚的暴露了 RoR 在擴展性方面的缺陷?!笔〉啮L魚“(Twitter 的網(wǎng)絡(luò)不堪重負(fù)時的提示)出現(xiàn)的越來越頻繁,直到 Twitter 于 2012 年開始向 Java 遷移才有所改善。今天,Twitter 基于 Java + Scala 運行,那條 ”失敗的鯨魚“ 便絕跡了。
Minecraft
Minecraft 是一款異常成功的游戲。早在 2014 年被出售給微軟之前,該游戲就早已為其開發(fā)者掙了數(shù)百萬美元。而 Minecraft 就運行在 Java 上。
在廣闊的 Java 社區(qū)的幫助下,Minecrafe 被傳播給成千上萬的潛在建模愛好者。同時,Minecraft 也將 Java 介紹給新一代的開發(fā)者。只要簡單的 Google 一下 “在 Minecraft 中建?!?,你會得到超過 65 萬條記錄,其中很多是面向 12 歲以下群體的編程教學(xué)資源。
Java 的未來
去年,Oracle 宣布 Java 9 即將到來,定于 2016 年 9 月發(fā)布。這次升級主要是將語言中眾多的功能拆分為較小的組件,希望通過這一變化,使 Java 更快、更易用。Oracle 的整體投資(經(jīng)常受到批評)最終還是保證 Java 可以繼續(xù)支持眾多依賴它的企業(yè),同時保持著對開發(fā)新趨勢的響應(yīng)。
Java 和 物聯(lián)網(wǎng)
“我確信 Java 的未來在物聯(lián)網(wǎng)。我很希望 Oracle 及其伙伴們,會將注意力集中到為 Java 提供徹底的端到端的存儲解決方案上:從終端設(shè)備開始,穿過網(wǎng)關(guān),直至企業(yè)后端。構(gòu)造這樣一個故事,并且將其運作成功,這將有助于鞏固 Java 未來 20 年里的地位。這不僅僅對整個產(chǎn)業(yè)蘊含著巨大的機會,而且我認(rèn)為 Java 可以在這方面做得很好?!盡ike Milinkovich (Eclipse 基金會執(zhí)行董事)如此說道。
Oracle 對此表示贊同,前研發(fā)副總裁 Georges Saab 說:“ Java 是物聯(lián)網(wǎng)時代最佳的技術(shù)。物聯(lián)網(wǎng)遇到的很多挑戰(zhàn),都是20世紀(jì)90年代 Java 在桌面和客戶端領(lǐng)域面對過的。你已經(jīng)有了大量不同的硬件系統(tǒng)。你希望開發(fā)者們可以看清系統(tǒng)的細(xì)枝末節(jié),深入理解它,并逐步向它遷移。Java 是少數(shù)允許你實現(xiàn)以上想法的技術(shù)。 ”
Java + Stormpath
也許有一些對 Java 批評的聲音,而且有些觀點也是合理的,但是瑕不掩瑜,比如:它提供杰出的開發(fā)、性能分析工具;JVM;海量的庫等等等等。在 Stormpath 中,我們從誕生之初,后臺就完全由 Java 實現(xiàn),最近我們又升級到了 Spring Boot。Java 萬歲??!