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