1995年, Java之父James Gosling和Sun公司科学办公室主任John Gage一起前往蒙特利,去参加一个TED会议,两人要在那里展示一个划时代的技术, 号称向能把枯燥的静态网页变得栩栩如生,美轮美奂。
不知道James Gosling当时的心情如何,是忐忑不安?还是满怀信心?在C++统治的年代中,Java要杀出一条血路来,一定要一炮打响。
演示开始了,James Gosling 把鼠标指向了浏览器中的一个3D分子模型,来回地旋转它,台下的观众发出阵阵惊叹声,他们被镇住了,从没有人想到在浏览器中也能实现这么“美轮美奂”的效果 !
(注:这是后来用Applet Viewer看到的效果)
Java 火了!
这个演示所使用的技术就是Applet。
1
我对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一家来控制,这对于开放的互联网来说是不能容忍的。
后来的事情大家都知道了,AJAX抢班夺权,彻底统治浏览器,前端界面使用HTML+CSS+JavaScript可以做得美轮美奂,比桌面应用都漂亮,Applet的优势消失殆尽,只剩下一些遗留系统在使用了。
2
随之时间的推移,各大浏览器开始嫌弃Applet,不再支持。
然后连JDK也不要它了, 从JDK9 开始,Applet 已经被声明为“废弃”的了, 从JDK 11开始,浏览器的Java插件也从JDK中删除了。如果还想在生产环境中使用Applet,只能从Oracle 那里继续购买JDK 8 的订阅和更新服务了。
Applet这个让Java大火的技术彻底死了。
技术的发展就是这样,各领风骚四五年,很多看起来很酷的技术都消失在短暂的IT时代的河流中,这里边有技术的原因,有标准的原因,有时代的原因,但有一点是肯定的:一定要走开放之路,这样成功的可能性才会大一些。
多年以后,出现了一个叫做Webassembly的技术,定义了一套类似Java的字节码, 可以用各种语言(C/C++/Rust/Java)来开发,编译以后像Applet那样放到服务器端, 浏览器下载执行,和Applet不同的是,不再需要插件了,执行WebAssembly的程序是浏览器内置的能力了!
一定意义上来说,Applet 也算后继有人吧!
【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】