手機(jī)版WPS 手機(jī)版wps免費(fèi)下載
2022-11-29
更新時(shí)間:2022-04-03 15:26:38作者:未知
Java對(duì)于服務(wù)器,個(gè)人電腦和移動(dòng)設(shè)備來(lái)說(shuō)是一項(xiàng)偉大的技術(shù)。由于需要java的跨平臺(tái)的特性,因此java在服務(wù)器和移動(dòng)設(shè)備方面的應(yīng)用是非常成功的。但java在個(gè)人電腦應(yīng)用方面的情況和在服務(wù)器及移動(dòng)設(shè)備方面的應(yīng)用有所不同,但是這很快就會(huì)有所改變,至少比你想象得要快。
即使在JavaFX出現(xiàn)之前Java已經(jīng)在桌面軟件領(lǐng)域做出了一些重大的提升,比如Swing中的提升;我們現(xiàn)在也有了很棒的OpenGL;DirectX也有了很大的提升;啟動(dòng)時(shí)間也顯著提升了。沒(méi)錯(cuò),Java在去年做了很多顯著而有效的工作。
然而不得不說(shuō)的是,除此之外其他的仍是一塌糊涂。比如Java sound實(shí)際上并不好用,被遺棄的Java3D又如何呢?最近甚至JOGL也被Sun遺棄,包括很久之前的SwingLab;JAI(用作圖片處理)多年未真正升級(jí)過(guò),看起來(lái)也沒(méi)有在什么地方得到利用,它迫切需要性能上的巨大提升以適應(yīng)來(lái)臨的多核GPU時(shí)代所有這些應(yīng)用于桌面軟件領(lǐng)域的Java產(chǎn)品不是被遺棄就是成為雞肋。
而且很關(guān)鍵一點(diǎn)是,盡管我們可以用Java創(chuàng)建出桌面應(yīng)用,但只要我們想開(kāi)發(fā)真正的富桌面軟件應(yīng)用我們就無(wú)法真正使用Java而使用JNI、C/C++和平臺(tái)依賴(lài)的libraries等。
使用Java構(gòu)建桌面應(yīng)用更多的是困難和麻煩,比如即便想要在Java應(yīng)用內(nèi)創(chuàng)建一個(gè)高效的優(yōu)良的web瀏覽器都是一件難事。而且沒(méi)有用Java編寫(xiě)的圖片處理應(yīng)用,沒(méi)有一個(gè)純粹的Java web瀏覽器,沒(méi)有數(shù)字音頻應(yīng)用,沒(méi)有3D建模器,沒(méi)有矢量圖形編輯器,沒(méi)有先進(jìn)的光柵編輯器。Java今日在桌面端所到達(dá)的高度只能滿(mǎn)足那些服務(wù)器開(kāi)發(fā)者,因?yàn)樗麄冎恍枰谶h(yuǎn)程服務(wù)時(shí)使用電腦桌面上的簡(jiǎn)單界面。
過(guò)去我們一直說(shuō)這是因?yàn)镴ava太慢,無(wú)法在一個(gè)慢的平臺(tái)上開(kāi)發(fā)出如此復(fù)雜的應(yīng)用。但我們這樣說(shuō)是錯(cuò)的。原因有兩點(diǎn):一,Java從來(lái)就沒(méi)有慢過(guò),即便有些部分曾經(jīng)慢過(guò),但沒(méi)有人懷疑當(dāng)它需要被用到服務(wù)器端時(shí)它會(huì)迅速地得到提升,比如JITs,GCs等。這一點(diǎn)也正是Java語(yǔ)言卓越的地方。二,由于Java平臺(tái)的天然特性,Java應(yīng)用總是第一個(gè)利用市場(chǎng)上新硬件和新操作系統(tǒng)的應(yīng)用。一旦JVM被配置到了一個(gè)新系統(tǒng)中,幾乎不需要任何編輯和調(diào)試,Java應(yīng)用就可以在上面全速運(yùn)行。比如你在32位的操作系統(tǒng)上開(kāi)發(fā)了一個(gè)應(yīng)用,它就可以全速運(yùn)行在Windows 7 或者Solaris的64位JVM上。所以所謂的Java太慢根本不能成為Java在桌面軟件端碌碌無(wú)為的借口。
而且,如果你是一個(gè)終端用戶(hù),你甚至不需要從網(wǎng)站上重新下載應(yīng)用,這意味著不僅終端用戶(hù)和開(kāi)發(fā)者得到了速度提升,甚至應(yīng)用的執(zhí)行性能的前邊也得到了速度提升。今天,JIT在runtime為本地操作優(yōu)化代碼已經(jīng)做得很棒了,這意味著你可以挖掘出你運(yùn)行的硬件的全部的能力,這是一個(gè)靜態(tài)編譯語(yǔ)言永遠(yuǎn)也無(wú)法競(jìng)爭(zhēng)過(guò)的性能,只是這個(gè)性能如果可以運(yùn)用到桌面端和游戲領(lǐng)域就好了
我們總是說(shuō):由于Sun總是一個(gè)服務(wù)器端公司的原因,Java在桌面端一直沒(méi)有真正的機(jī)會(huì)。而Oracle的收購(gòu)讓這種境況看起來(lái)不會(huì)有什么改變。希望這不要再繼續(xù)下去,為了Sun、Oracle和Java自身的利益,Oracle內(nèi)部的知名人士應(yīng)該提醒公司來(lái)讓他們知道:如果缺乏了在桌面端的能力和效率,必將影響Java的普及率甚至它在服務(wù)器端的占有率。
我們一直以來(lái)習(xí)慣著Sun主要提供服務(wù)器端服務(wù),因而想象著未來(lái)更多的處理能力還是出現(xiàn)在服務(wù)器端,而客戶(hù)端不過(guò)是連接服務(wù)器的簡(jiǎn)單服務(wù)。這種情況已被證明是絕對(duì)錯(cuò)誤的。因?yàn)槲磥?lái)的桌面應(yīng)用將服務(wù)、應(yīng)用與硬件所有的運(yùn)算能力相結(jié)合,大量的數(shù)據(jù)和解碼、聲音、圖像、視頻被開(kāi)發(fā)者處理,而且用并行編程的方式來(lái)實(shí)現(xiàn),既保證了豐富的性能又保證了速度。對(duì)開(kāi)發(fā)者來(lái)說(shuō),未來(lái)的服務(wù)既需要他們?cè)诳蛻?hù)端處理也需要在服務(wù)器端處理:執(zhí)行復(fù)雜的搜索、圖像、視頻以及虛擬3D環(huán)境需要服務(wù)器端的技術(shù),而遠(yuǎn)程服務(wù)如醫(yī)學(xué)分析、遠(yuǎn)程教育和遠(yuǎn)程會(huì)議等則需要客戶(hù)端能力。
Java作為一種網(wǎng)絡(luò)技術(shù),為了在瀏覽器中能夠運(yùn)行小應(yīng)用程序而發(fā)布,但是它從開(kāi)始就有運(yùn)行獨(dú)立的桌面軟件程序的能力。不幸的是,AWT沒(méi)有提供足夠的桌面端的程序所需的特性。Swing著手于解決這些問(wèn)題,但是它有不少的bug。今天,Java有構(gòu)建大型桌面端應(yīng)用程序的能力并修復(fù)了bug。Java獨(dú)有的優(yōu)點(diǎn)是“只寫(xiě)一次,到處運(yùn)行“——在Windows, Linux, Mac和其它操作系統(tǒng)上運(yùn)行Java代碼的能力。