我们知道,ie是微软推出的网络浏览器。其实之所以ms的操作系统之所以叫做windows,原因就是他的桌面本身就是一个浏览器,只不过不是internet罢了。说到这里,不得不说ie。如果你打开ie的帮助,会看到ie其实是ms购买的NCSA Mosaic 的技术。也就是说,ie就是ms做的外壳。内核技术完全购买。那么,为什么不能在里面运行applet呢?这还要从浏览器运行机制说起……
我们都知道,浏览器执行的最基础的无非是我们经常见的html语言,比方说:
<!--DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN……">
<HTML>
<HEAD>
<title>
Blog管理</title>
<link href="/admin/resources/admin.css" rel="stylesheet" type="text/css" title="" media="screen" />
</HEAD>
<body id="Posts"-->
这些就是当前页面的一部分html语言的源文件。
那么,applet在生成的时候会同时生成了一个html的源文件,你可以在目录下面查看到(如果编译通过)。那么这个applet要内嵌在浏览器里运行,浏览器也就只能解释执行这段html文件了。那么当遇到applet所在位置的链接的时候,就会调用小程序。但是,按照java平台无关性,这段小程序的执行应该是解释由程序员编译好的二进制代码程序运行的。那么,这个时候就是问题的关键,谁来解释这段二进制代码?对于仅仅认识html的ie浏览器,它是不会执行的,因为不认识。就这么简单。那么,你可能会问,不是有脚本么?为什么脚本可以执行呢?这就是因为,ie里面对于非html语言,会识别一定的tag,并且调用相应的程序参与页面生成。那么java小程序就是需要一个可以被ie调用的plugin,来执行。这就使得在运行的客户端的ie必须有插件。
但是,有些时候我们说,我们的客户端ie并没有安装插件,仍然可以使用一些java的小程序。其实,这也是很简单的,它的运行,也不能脱离相应的执行程序,也就是说,在执行以前,已经有一个java小程序的解释程序自动下载并按装到你的后台了。并没有经过你的注意,如果你安装某些软件,有可能会弹出提示,就像3721那个讨厌的插件一样。否则,等他自动下载并执行的时候你就错误的认为,无需任何外置的程序就能执行这些程序了。
那么,以此类推,除了applet以外,像c#的脚本一类的,都是采用这个原理。至于netscape,他的核心包含了很多程序,能够方便的执行网上的小程序。如果你在liunx下面,浏览网页,发现许多图片不能显示,那么不要惊慌,那是因为netscape不支持类似jepg的压缩格式,这回你肯定会处理了,看看有没有插件呗!