1995年, Java之父James Gosling前往蒙特利參加一個(gè)TED會(huì)議,他要在那里展示一個(gè)劃時(shí)代的技術(shù) :Java。
![]()
當(dāng)時(shí)Java還默默無(wú)聞,為了一炮打響,Java選擇了新興的互聯(lián)網(wǎng)這個(gè)戰(zhàn)場(chǎng),準(zhǔn)備拿瀏覽器開刀。
在這個(gè)時(shí)候,互聯(lián)網(wǎng)上網(wǎng)站很少,并且都是靜態(tài)的HTML頁(yè)面,到處“丑陋”的文本和簡(jiǎn)單的圖片:
![]()
但是,在James Gosling的演示中,瀏覽器中竟然出現(xiàn)了一個(gè)3D分子模型!這太匪夷所思了。
![]()
(注:這是后來(lái)用Applet Viewer看到的效果)
這個(gè)3D模型還是動(dòng)態(tài)的,James Gosling可以用鼠標(biāo)來(lái)回地旋轉(zhuǎn)它,展示各種細(xì)節(jié),從沒(méi)有人想到在瀏覽器中也能實(shí)現(xiàn)這么“美輪美奐”的效果 ! 臺(tái)下的觀眾徹底被鎮(zhèn)住了,掌聲雷動(dòng),發(fā)出陣陣驚嘆聲。
大家都在紛紛詢問(wèn):“這到底使用什么技術(shù)做出來(lái)的?用的什么編程語(yǔ)言?”
Java 火了!
1
James Gosling演示所使用的技術(shù)就是Applet。
在瀏覽器中,Applet大概長(zhǎng)這個(gè)樣子:
applet>瀏覽器發(fā)現(xiàn) 標(biāo)簽,就會(huì)用已經(jīng)安裝的Java插件從服務(wù)器端下載對(duì)應(yīng)的class,然后在沙箱中執(zhí)行。
![]()
我對(duì)Applet懷著特殊的感情,因?yàn)槲覍W(xué)會(huì)了Java的Hello World之后,第一個(gè)項(xiàng)目使用的就是Applet技術(shù)。
我有個(gè)同事覺(jué)得Applet這個(gè)單詞怪怪的,總是把它叫做“小蘋果” :你的“小蘋果”開發(fā)得怎么樣了?
實(shí)際上,人家Sun這么起名的意思是:Application + let, 還有Servlet,指的是Server + let。
這讓我印象十分深刻,后來(lái)大江南北都在流行神曲“小蘋果”的時(shí)候, 總是讓我聯(lián)想到Applet。
我在C/S架構(gòu)下做過(guò)一點(diǎn)桌面GUI程序的開發(fā),后來(lái)轉(zhuǎn)到B/S架構(gòu),發(fā)現(xiàn)當(dāng)時(shí)的HTML頁(yè)面實(shí)在是太簡(jiǎn)陋了,但是B/S結(jié)構(gòu)又有一個(gè)天生的優(yōu)勢(shì):應(yīng)用無(wú)需分發(fā)安裝,只有有個(gè)瀏覽器就夠了。
這時(shí)候,我就接觸了Applet,不由眼前一亮:無(wú)需安裝就可以在網(wǎng)頁(yè)運(yùn)行,又能展示出桌面GUI的效果,相當(dāng)于結(jié)合了C/S 和 B/S的優(yōu)勢(shì), 這簡(jiǎn)直是太酷了。
可是這么酷的技術(shù)怎么沒(méi)能一統(tǒng)天下呢?
稍微深入開發(fā)就會(huì)發(fā)現(xiàn),Applet在當(dāng)時(shí)的環(huán)境下有幾個(gè)致命傷:
1. 用AWT/Swing寫的界面丑陋
Applet的GUI界面需要用Java AWT以及后來(lái)的Swing來(lái)編寫,這兩個(gè)技術(shù)確實(shí)不怎么樣,寫出的GUI很丑陋,沒(méi)有本地應(yīng)用程序的感覺(jué)。
2. 運(yùn)行速度太慢
上世紀(jì)90年代的PC還非常弱,CPU弱,內(nèi)存更弱,有個(gè)32MB的內(nèi)存都很不錯(cuò)了。Java剛開始也是弱雞,直到JDK 1.2才有 JIT技術(shù), 在此之前單機(jī)獨(dú)立運(yùn)行Java都很慢,一直被C++所嘲笑。更不用說(shuō)在瀏覽器中用插件的方式來(lái)運(yùn)行了!
3. 網(wǎng)速也太慢
撥號(hào)上網(wǎng)的時(shí)代,網(wǎng)速只有56K bit/s , 一個(gè)Applet程序稍微大點(diǎn)兒就得等半天,等待得時(shí)候,確實(shí)顯示一個(gè)極其難看的大白板:
![]()
如果Applet需要一個(gè)特定版本的JRE, 需要從網(wǎng)絡(luò)下載,那估計(jì)需要一個(gè)多小時(shí)才能下載下來(lái)。
還有一些安全問(wèn)題, 總之,Applet是一個(gè)看起來(lái)很美的方案,但也是一個(gè)重型解決方案,還是一個(gè)封閉的解決方案,由Sun(Oracle)一家來(lái)控制,這對(duì)于開放的互聯(lián)網(wǎng)來(lái)說(shuō)是不能容忍的。
后來(lái)的事情大家都知道了,AJAX搶班奪權(quán),徹底統(tǒng)治瀏覽器,前端界面使用HTML+CSS+JavaScript可以做得美輪美奐,比桌面應(yīng)用都漂亮,Applet的優(yōu)勢(shì)消失殆盡,只剩下一些遺留系統(tǒng)在使用了。
2
隨之時(shí)間的推移,各大瀏覽器開始嫌棄Applet,不再支持。
然后連JDK也不要它了,剛剛發(fā)布的JDK 26中明確說(shuō)明:java.applet的package被刪除!
![]()
![]()
Applet這個(gè)讓Java大火的技術(shù)徹底死了。
技術(shù)的發(fā)展就是這樣,各領(lǐng)風(fēng)騷四五年,很多看起來(lái)很酷的技術(shù)都消失在短暫的IT時(shí)代的河流中,這里邊有技術(shù)的原因,有標(biāo)準(zhǔn)的原因,有時(shí)代的原因,但有一點(diǎn)是肯定的:一定要走開放之路,這樣成功的可能性才會(huì)大一些。
多年以后,出現(xiàn)了一個(gè)叫做Webassembly的技術(shù),定義了一套類似Java的字節(jié)碼, 可以用各種語(yǔ)言(C/C++/Rust/Java)來(lái)開發(fā),編譯以后像Applet那樣放到服務(wù)器端, 瀏覽器下載執(zhí)行,和Applet不同的是,不再需要插件了,執(zhí)行WebAssembly的程序是瀏覽器內(nèi)置的能力了!
一定意義上來(lái)說(shuō),Applet 也算后繼有人吧!
全文完,覺(jué)得不錯(cuò)的話請(qǐng)三連。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.