Java到底有沒有現(xiàn)實世界的應用?好吧,其實并不是只有你一個人對這個問題感到困惑。很多程序員在開始Java之前或者在畢業(yè)時選擇Java作為編程語言時也問過相同的問題。順便說一下,你可以通過在你計算機上安裝Java獲得Java在哪些地方使用的相關線索。Oracle聲稱超三十億的設備上運行著Java,那是一個巨大的數(shù)字,不是嗎?大多數(shù)公司用一種或者其他方式使用Java。很多服務器端使用Java來處理每天數(shù)十百萬的請求,高頻率的交易應用同樣也使用Java,例如LMAX交易程序,這套程序基于他們開創(chuàng)性的線程間通訊庫——Disruptor。在這篇文章中,我們將會看到一些更精確的例子。什么種類的項目使用Java開發(fā)?在哪些領域內(nèi)Java是占統(tǒng)治地位的?現(xiàn)實生活中Java到底用在什么地方?
現(xiàn)實生活中的Java應用
在現(xiàn)實生活中,很多地方都用到了Java,從商業(yè)上的電子商務網(wǎng)站到安卓App,從科學應用到經(jīng)濟應用,如電子交易系統(tǒng),從游戲如《我的世界》到桌面應用,如Eclipse、Netbeans、Interllij,從開源類庫到J2ME應用。讓我們更詳細地看一下它們。
123.jpg
1)安卓應用
如果你想弄清楚Java用在什么地方,你離這個目標不是太遠。打開你的安卓手機和任何一款App,它們是使用Java語言、基于Google Android API(和JDK類似)開發(fā)的。數(shù)年的安卓支持已經(jīng)有了很大提高,并且很多Java程序員已經(jīng)成為了安卓app開發(fā)者。順便提一下,像我們之前在how Android app works這篇文章中說到的那樣,安卓使用不同的java虛擬機、不同的包,但是代碼仍是用Java寫的。
2)金融業(yè)服務器的應用
在金融服務中Java有很重要的應用。很多全球投資銀行像高盛、花旗、巴克萊、標準渣打銀行等其他銀行使用Java來開發(fā)前臺和后臺電子交易系統(tǒng),提供解決方案和確認系統(tǒng)以及數(shù)據(jù)處理項目等等。Java大多數(shù)用在開發(fā)服務器端的應用,幾乎不用來開發(fā)前端,前端是從一個服務器接受數(shù)據(jù),然后處理它并把它發(fā)送給其他進程。Java Swing對交易員來說在開發(fā)胖客戶端的GUI方面還是很受歡迎的,但是現(xiàn)在C#很快地在這個領域獲得了市場占有率,Java Swing在這方面被擠壓喘不過氣來。
3)Java Web應用
Java在電子商務和Web應用領域也是有很多的應用。現(xiàn)在有很多使用Spring MVC、Structs2.0和類似框架開發(fā)的RESTful風格的服務。甚至件一個簡單的依賴Servlet、JSP和Structs開發(fā)的web應用在各種各樣的政府項目中很受歡迎。政府的很多部門如衛(wèi)生局、保險部門、國防部等部門都有他們使用Java開發(fā)的web應用。
4)軟件工具
很多有用的軟件和開發(fā)工具是用Java開發(fā)的,例如Eclipse、InetelliJ、Netbeans IDE。我認為大多數(shù)使用的桌面應用也是用Java開發(fā)的。所以有一段時間,Swing在開發(fā)胖客戶端方面非常流行,尤其是在金融行業(yè)和投資銀行,F(xiàn)在,Java FX正逐漸受到歡迎,但是仍不能成為Swing的替代品,而C#在金融領域內(nèi)已經(jīng)幾乎代替了Swing。
5)交易應用
第三方應用交易應用,作為更大的金融服務業(yè)的一部分也使用Java開發(fā)。流行的交易應用像Murex也是用Java開發(fā)的,很多銀行都使用它們來連接前后端。
6)J2ME應用
雖然iOS和Android的出現(xiàn)幾乎抹殺了J2ME的市場,但是在低終端Nokia和使用J2ME的三星手機方面還是有很大的市場。有一段時間,安卓上可用的游戲、軟件幾乎全都是用MIDP、CLDC ,他們是J2ME平臺的一部分。J2ME在一些產(chǎn)品如藍光光碟、機頂盒等等。WhatsApp很受歡迎的一個原因是因為對所有Nokia手機的J2ME平臺來說是可用的。
7)嵌入式領域
在嵌入式領域,Java也是有很大應用的。它展示了平臺是多么的強大,你僅需130Kb就能使用Java技術(在智能卡或者傳感器上)。起初,Java是為嵌入式設備而設計的。實際上,這是Java最初“一次編寫,到處運行”初衷的一個部分,現(xiàn)在看起來獲得了成功。
8)大數(shù)據(jù)技術
Hadoop和其他大數(shù)據(jù)技術以這樣或那樣的方式使用著Java,例如Apache依賴Java的HBse和Accumulo(開源)以及ElasticSearch。但是Java在該領域并不占統(tǒng)治地位,因為有其他技術如MongoDB是用C++開發(fā)的。如果Hadoop或者ElasticSearch發(fā)展壯大的話,Java在這個發(fā)展的領域有可能獲得主要的占有率
9)高頻率的交易領域
Java平臺在現(xiàn)代JIT技術的幫助下,它的性能特性已經(jīng)有了很大提升,傳送性能已經(jīng)到了C++水平。由于這個原因,Java在開發(fā)高性能系統(tǒng)方面還是很受歡迎的,因為性能與機器語言相比稍差一些,但是你可以安全地折衷——輕便、可維護帶來更快地速度。對一個缺乏經(jīng)驗的C++程序員來說,只能使應用變得更慢和不可靠。
10)科學應用
現(xiàn)在,對于科學應用來說Java經(jīng)常作為一個默認的選擇,包括自然語言處理。這種現(xiàn)象的主要原因是Java更安全、輕便、易維護,并且與C++和其他語言相比有更好的高級并發(fā)工具。
在九十年代,Java由于Applet在因特網(wǎng)領域占有重要地位,但是幾年后,由于Applet沙箱模式的各種安全問題,Applet失去了風頭。現(xiàn)在,桌面Java和Applet幾乎滅亡。Java作為軟件開發(fā)公司默認的開發(fā)語言,在金融服務行業(yè)、投資銀行和電子商務web應用領域獲得了很大應用,任何學習Java的人員都會為自己贏得光明的未來。Java 8更加強了一個信念——在未來的幾年,Java在軟件開發(fā)領域繼續(xù)占有重要地位
如果你想弄清楚Java用在什么地方,你離這個目標不是太遠。打開你的安卓手機和任何一款App,它們是使用Java語言、基于Google Android API(和JDK類似)開發(fā)的。數(shù)年的安卓支持已經(jīng)有了很大提高,并且很多Java程序員已經(jīng)成為了安卓app開發(fā)者。順便提一下,像我們之前在how Android app works這篇文章中說到的那樣,安卓使用不同的java虛擬機、不同的包,但是代碼仍是用Java寫的。