1995年, Java之父James Gosling前往蒙特利参加一个TED会议,他要在那里展示一个划时代的技术 :Java。
![]()
当时Java还默默无闻,为了一炮打响,Java选择了新兴的互联网这个战场,准备拿浏览器开刀。
在这个时候,互联网上网站很少,并且都是静态的HTML页面,到处“丑陋”的文本和简单的图片:
![]()
但是,在James Gosling的演示中,浏览器中竟然出现了一个3D分子模型!这太匪夷所思了。
![]()
(注:这是后来用Applet Viewer看到的效果)
这个3D模型还是动态的,James Gosling可以用鼠标来回地旋转它,展示各种细节,从没有人想到在浏览器中也能实现这么“美轮美奂”的效果 ! 台下的观众彻底被镇住了,掌声雷动,发出阵阵惊叹声。
大家都在纷纷询问:“这到底使用什么技术做出来的?用的什么编程语言?”
Java 火了!
1
James Gosling演示所使用的技术就是Applet。
在浏览器中,Applet大概长这个样子:
applet>浏览器发现 标签,就会用已经安装的Java插件从服务器端下载对应的class,然后在沙箱中执行。
![]()
我对Applet怀着特殊的感情,因为我学会了Java的Hello World之后,第一个项目使用的就是Applet技术。
我有个同事觉得Applet这个单词怪怪的,总是把它叫做“小苹果” :你的“小苹果”开发得怎么样了?
实际上,人家Sun这么起名的意思是:Application + let, 还有Servlet,指的是Server + let。
这让我印象十分深刻,后来大江南北都在流行神曲“小苹果”的时候, 总是让我联想到Applet。
我在C/S架构下做过一点桌面GUI程序的开发,后来转到B/S架构,发现当时的HTML页面实在是太简陋了,但是B/S结构又有一个天生的优势:应用无需分发安装,只有有个浏览器就够了。
这时候,我就接触了Applet,不由眼前一亮:无需安装就可以在网页运行,又能展示出桌面GUI的效果,相当于结合了C/S 和 B/S的优势, 这简直是太酷了。
可是这么酷的技术怎么没能一统天下呢?
稍微深入开发就会发现,Applet在当时的环境下有几个致命伤:
1. 用AWT/Swing写的界面丑陋
Applet的GUI界面需要用Java AWT以及后来的Swing来编写,这两个技术确实不怎么样,写出的GUI很丑陋,没有本地应用程序的感觉。
2. 运行速度太慢
上世纪90年代的PC还非常弱,CPU弱,内存更弱,有个32MB的内存都很不错了。Java刚开始也是弱鸡,直到JDK 1.2才有 JIT技术, 在此之前单机独立运行Java都很慢,一直被C++所嘲笑。更不用说在浏览器中用插件的方式来运行了!
3. 网速也太慢
拨号上网的时代,网速只有56K bit/s , 一个Applet程序稍微大点儿就得等半天,等待得时候,确实显示一个极其难看的大白板:
![]()
如果Applet需要一个特定版本的JRE, 需要从网络下载,那估计需要一个多小时才能下载下来。
还有一些安全问题, 总之,Applet是一个看起来很美的方案,但也是一个重型解决方案,还是一个封闭的解决方案,由Sun(Oracle)一家来控制,这对于开放的互联网来说是不能容忍的。
后来的事情大家都知道了,AJAX抢班夺权,彻底统治浏览器,前端界面使用HTML+CSS+JavaScript可以做得美轮美奂,比桌面应用都漂亮,Applet的优势消失殆尽,只剩下一些遗留系统在使用了。
2
随之时间的推移,各大浏览器开始嫌弃Applet,不再支持。
然后连JDK也不要它了,刚刚发布的JDK 26中明确说明:java.applet的package被删除!
![]()
![]()
Applet这个让Java大火的技术彻底死了。
技术的发展就是这样,各领风骚四五年,很多看起来很酷的技术都消失在短暂的IT时代的河流中,这里边有技术的原因,有标准的原因,有时代的原因,但有一点是肯定的:一定要走开放之路,这样成功的可能性才会大一些。
多年以后,出现了一个叫做Webassembly的技术,定义了一套类似Java的字节码, 可以用各种语言(C/C++/Rust/Java)来开发,编译以后像Applet那样放到服务器端, 浏览器下载执行,和Applet不同的是,不再需要插件了,执行WebAssembly的程序是浏览器内置的能力了!
一定意义上来说,Applet 也算后继有人吧!
全文完,觉得不错的话请三连。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.