在Oracle宣布那项让Java大获成功的技术已经被彻底抛弃后,人们不禁想起那个让全世界震惊的1995年。当时,“Java之父”James Gosling决定把一个革命性的新工具带到蒙特利的TED大会上。为了让这个没人听说过的新语言引起注意,他把目标瞄准了正在兴起的互联网,甚至直接在浏览器上动刀。那时的网页大多是静态的HTML,满是丑到不行的文字和简单的图片,根本没有人能想到在浏览器里能展示出3D分子模型。等到Gosling用鼠标把那个模型转了一圈,展示出了细腻的细节后,全场观众都被镇住了,掌声和惊叹声不绝于耳。大家争着问他用的是什么技术,Java就这么红了。 其实Gosling演示所依赖的就是Applet。在那个时代的浏览器中,Applet大概是这样运行的:浏览器发现了某个标签,就会调用已经装好的Java插件去服务器下载对应的class文件,然后在一个受限制的环境里运行它。我对Applet有一种特殊的感情,因为在学会Hello World之后,我做的第一个项目就是用它。我有个同事总觉得这个词发音奇怪,老是管它叫“小苹果”,还调侃我开发“小苹果”的进度怎么样。后来大家都知道了Sun起这个名字的意思其实是“Application + let”,还有Servlet也是“Server + let”。当那首《小苹果》神曲在全国大火的时候,我总忍不住想起当年的Applet。 我以前做过一点C/S架构的桌面GUI程序开发,后来转向了B/S架构。虽然当时的HTML页面看起来很简陋,但B/S最大的好处就是应用不用分发安装,只要有个浏览器就行。这时候我遇到了Applet,感觉眼前一亮:既不用安装就能在网页运行,又能做出桌面程序那样的效果。这简直是把C/S和B/S的优点结合起来了。 可是这么好的技术为什么没能一统天下呢?稍微深入开发就会发现问题不少。第一点是界面难看。写Applet的GUI得用AWT或者后来的Swing,这两个技术实在不行,做出来的界面特别丑。第二点是运行速度慢。上世纪90年代的电脑CPU和内存都很弱,特别是那个年代的PC。 第三点是网速太慢。拨号上网的网速只有56Kbps,稍微大点儿的Applet就得等半天。如果还需要下载特定版本的JRE来运行,那得等上一两个小时才能看到内容。加上一些安全问题,Applet虽然看着很美,但也是个重量级且封闭的方案,由Sun(Oracle)一家说了算。 后来的发展大家都清楚了,AJAX把局面给抢了过来。前端界面用HTML、CSS和JavaScript就能做得很漂亮。这种时候Applet就没有优势了,只剩下一些老系统在继续用它。现在各大浏览器都已经开始嫌弃Applet了,甚至连JDK都不要它了。刚刚发布的JDK 26里明确说了,那个java.applet包已经被删掉了。 技术的发展就是这样各领风骚四五年的样子。很多看起来很酷的东西最后都会消失在IT时代的长河里。这里面有技术本身的问题、标准的问题、时代的问题,但有一点是肯定的:一定要走开放的道路才行。