Java虛擬機(jī)和Java生態(tài)環(huán)境
Java虛擬機(jī),或稱JVM,將程序編譯成字節(jié)碼,稍后被JVM解析執(zhí)行。因?yàn)镴VM根植于你的特定硬件和系統(tǒng),它允許Java在各處運(yùn)行,Windows、Mac或各種Linux。
JVM帶來的巨大優(yōu)勢就是它提供的強(qiáng)大兼容性和穩(wěn)定性。因?yàn)槟愕膽?yīng)用運(yùn)行在虛擬機(jī)上而不是直接運(yùn)行在硬件上,你可以編寫一次應(yīng)用并運(yùn)行在每個(gè)有Java虛擬機(jī)的設(shè)備上。這也是Java核心原則:“一次編寫,到處運(yùn)行”。這也讓Java應(yīng)用面對環(huán)境變化時(shí)有更大彈性。
安全性和互操作性
Android環(huán)境就是Java安全性和互操作性的典型代表。Android占全球手機(jī)市場89%,運(yùn)行基于Java。因?yàn)镴ava允許操作系統(tǒng)運(yùn)行在虛擬機(jī)中,并不需要在每臺設(shè)備上編譯,提高了系統(tǒng)的穩(wěn)定性和易用性。
Android展現(xiàn)出的Java另一個(gè)優(yōu)點(diǎn)就是與其他基于JVM語言的互操作,比如Scala、Groovy、Clojure、JRuby等等。你可以選擇使用這些“更加動(dòng)態(tài)”的語言來構(gòu)建你的應(yīng)用,并在需要更多性能的時(shí)候重拾Java。
巨大的Android市場在內(nèi)部開發(fā)中也存在危險(xiǎn)。Android+Java允許用戶運(yùn)行不受信任的應(yīng)用,并通過虛擬機(jī)來運(yùn)行所有應(yīng)用來緩解這種危險(xiǎn)。因此,應(yīng)用充分利用操作系統(tǒng)核心的唯一方式就是放棄虛擬機(jī)的實(shí)現(xiàn),也就是那個(gè)非常小的、被安全層緊緊保護(hù)的虛擬機(jī)。
Java的實(shí)際應(yīng)用規(guī)模
Amazon、Google、eBay和許多其他大型電商使用Java作為它們的后臺。它們使用Java是因?yàn)镴ava久經(jīng)考驗(yàn)并且可伸縮。任何語言的后臺只能支撐少量用戶,但Java可以處理200m或等多。讓我們看幾個(gè)典型例子:
Hadoop
Apache Hadoop是支持在大規(guī)模硬件集群上運(yùn)行應(yīng)用的的Java框架。它被設(shè)計(jì)用來為那些操作和處理大數(shù)據(jù)的應(yīng)用提供高吞吐量。如今Hadoop被許多公司,如Facebook、Amazon、IBM、Joost和Yahoo來處理數(shù)據(jù)、分析或生成記錄。
Hadoop的創(chuàng)造者Doug Cutting說過:”Java協(xié)調(diào)了開發(fā)者開發(fā)效率和程序執(zhí)行效率。開發(fā)者受益于這種簡單、強(qiáng)大、類型安全的語言和豐富的高質(zhì)量庫?!焙喍灾捍髷?shù)據(jù)離不開Hadoop,Hadoop離不開Java。
Twitter
對于Oracle團(tuán)隊(duì)和Java來說,Twitter是近幾年眾人皆知的巨大成功。最初由Ruby on Rails構(gòu)建,Twitter流行度急速上升,同時(shí)RoR框架可伸縮性的缺陷也清晰暴露出來?!癋ail Whales(失敗鯨)”(Twitter宕機(jī)時(shí)的標(biāo)志畫面)也頻繁出現(xiàn),直到Twitter在2012年轉(zhuǎn)向Java。如今Twitter運(yùn)行在Java+Scala之上,F(xiàn)ail Whales(失敗鯨)也不復(fù)存在。
Minecraft
Minecraft是款不可思議的成功游戲。開發(fā)團(tuán)隊(duì)通過它賺了上百萬美元,然后以25億美元價(jià)格賣給微軟。Minecraft運(yùn)行在Java之上。
龐大的的Java社區(qū)幫助Minecraft蔓延到成千上萬的游戲mod。同時(shí)Minecraft向新一代開發(fā)者推薦Java。Google上搜索”Minecraft mod制作”會返回65.3萬的結(jié)果,其中大多是教12歲以下人群如何編程。
其中一款開源工具是Eureka,人們用它來跟蹤用戶登錄Netflix所使用的設(shè)備,并交叉校驗(yàn)動(dòng)作和最近活動(dòng),來確保當(dāng)前賬戶是安全的。
Java的未來
Java 9的到來把語言中眾多函數(shù)拆分成許多小組件,意在讓Java更加快速和易用。Oracle的巨大投入(雖然總被黑)幫助Java一方面可以繼續(xù)支持企業(yè)依賴,另一方面也可以有所新的發(fā)展。
Java和物聯(lián)網(wǎng)(Internet of things)
“我認(rèn)為Java的未來就在物聯(lián)網(wǎng)(IoT)之中。我很想看到Oracle和合作伙伴致力于完善Java端對端的存儲解決方案,從設(shè)備通過網(wǎng)關(guān)到達(dá)企業(yè)后臺。如果能夢想成真并取得成功,將鞏固Java在未來20年中的地位。這對于行業(yè)來說是巨大的挑戰(zhàn),我相信Java能夠勝任?!盓clipse基金會執(zhí)行董事Mike Milinkovich這樣說。
Oracle贊同這點(diǎn)。Development Georges Saab副總裁說:“Java對于物聯(lián)網(wǎng)(IoT)來說是很棒的技術(shù)。物聯(lián)網(wǎng)很多挑戰(zhàn)是桌面和客戶端的挑戰(zhàn),上世紀(jì)90年代Java已經(jīng)解決?,F(xiàn)在有很多不同的硬件設(shè)備。你想讓開發(fā)者關(guān)注系統(tǒng)的各個(gè)層面,理解并運(yùn)用。Java是少數(shù)能讓你這樣做的技術(shù)之一?!?br />
Java+stormpath
有不少批評Java的人,他們部分爭論的焦點(diǎn)或許有一些說服力,但這也是好事,比如優(yōu)秀的部署工具、性能分析、Java虛擬機(jī)、龐大的庫等等。在Stormpath,我們的后端完全用Java開發(fā),并且我們升級到了Spring Boot。Java萬歲。