永別了,Java的“小蘋果”!
1995年, Java之父James Gosling和Sun公司科學辦公室主任John Gage一起前往蒙特利,去參加一個TED會議,兩人要在那里展示一個劃時代的技術, 號稱向能把枯燥的靜態(tài)網(wǎng)頁變得栩栩如生,美輪美奐。
不知道James Gosling當時的心情如何,是忐忑不安?還是滿懷信心?在C++統(tǒng)治的年代中,Java要殺出一條血路來,一定要一炮打響。
演示開始了,James Gosling 把鼠標指向了瀏覽器中的一個3D分子模型,來回地旋轉它,臺下的觀眾發(fā)出陣陣驚嘆聲,他們被鎮(zhèn)住了,從沒有人想到在瀏覽器中也能實現(xiàn)這么“美輪美奐”的效果 !
(注:這是后來用Applet Viewer看到的效果)
Java 火了!
這個演示所使用的技術就是Applet。
1
我對Applet懷著特殊的感情,因為我學會了Java的Hello World之后,第一個項目使用的就是Applet技術。
我有個同事覺得Applet這個單詞怪怪的,總是把它叫做“小蘋果” :你的“小蘋果”開發(fā)得怎么樣了?
實際上,人家Sun這么起名的意思是:Application + let, 還有Servlet,指的是Server + let。
這讓我印象十分深刻,后來大江南北都在流行神曲“小蘋果”的時候, 總是讓我聯(lián)想到Applet。
我在C/S架構下做過一點桌面GUI程序的開發(fā),后來轉到B/S架構,發(fā)現(xiàn)當時的HTML頁面實在是太簡陋了,但是B/S結構又有一個天生的優(yōu)勢:應用無需分發(fā)安裝,只有有個瀏覽器就夠了。
這時候,我就接觸了Applet,不由眼前一亮:無需安裝就可以在網(wǎng)頁運行,又能展示出桌面GUI的效果,相當于結合了C/S 和 B/S的優(yōu)勢, 這簡直是太酷了。
可是這么酷的技術怎么就沒火起來呢?
稍微深入開發(fā)就會發(fā)現(xiàn),Applet在當時的環(huán)境下有幾個致命傷:
1. 用AWT/Swing寫的界面丑陋
Applet的GUI界面需要用Java AWT以及后來的Swing來編寫,這兩個技術確實不怎么樣,寫出的GUI很丑陋,沒有本地應用程序的感覺。
2. 運行速度太慢
上世紀90年代的PC還非常弱,CPU弱,內存更弱,有個32MB的內存都很不錯了。Java剛開始也是弱雞,直到JDK 1.2才有 JIT技術, 在此之前單機獨立運行Java都很慢,一直被C++所嘲笑。更不用說在瀏覽器中用插件的方式來運行了!
3. 網(wǎng)速也太慢
撥號上網(wǎng)的時代,網(wǎng)速只有56K bit/s , 一個Applet程序稍微大點兒就得等半天,等待得時候,確實顯示一個極其難看的大白板:
如果Applet需要一個特定版本的JRE, 需要從網(wǎng)絡下載,那估計需要一個多小時才能下載下來。
還有一些安全問題, 總之,Applet是一個看起來很美的方案,但也是一個重型解決方案,還是一個封閉的解決方案,由Sun一家來控制,這對于開放的互聯(lián)網(wǎng)來說是不能容忍的。
后來的事情大家都知道了,AJAX搶班奪權,徹底統(tǒng)治瀏覽器,前端界面使用HTML+CSS+JavaScript可以做得美輪美奐,比桌面應用都漂亮,Applet的優(yōu)勢消失殆盡,只剩下一些遺留系統(tǒng)在使用了。
2
隨之時間的推移,各大瀏覽器開始嫌棄Applet,不再支持。
然后連JDK也不要它了, 從JDK9 開始,Applet 已經(jīng)被聲明為“廢棄”的了, 從JDK 11開始,瀏覽器的Java插件也從JDK中刪除了。如果還想在生產(chǎn)環(huán)境中使用Applet,只能從Oracle 那里繼續(xù)購買JDK 8 的訂閱和更新服務了。
Applet這個讓Java大火的技術徹底死了。
技術的發(fā)展就是這樣,各領風騷四五年,很多看起來很酷的技術都消失在短暫的IT時代的河流中,這里邊有技術的原因,有標準的原因,有時代的原因,但有一點是肯定的:一定要走開放之路,這樣成功的可能性才會大一些。
多年以后,出現(xiàn)了一個叫做Webassembly的技術,定義了一套類似Java的字節(jié)碼, 可以用各種語言(C/C++/Rust/Java)來開發(fā),編譯以后像Applet那樣放到服務器端, 瀏覽器下載執(zhí)行,和Applet不同的是,不再需要插件了,執(zhí)行WebAssembly的程序是瀏覽器內置的能力了!
一定意義上來說,Applet 也算后繼有人吧!
【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉載請通過作者微信公眾號coderising獲取授權】