| |
---- 和以前的版本相比,java 2增加了不少令人难忘的特色。特别是swing提供的用户界面部件(如表格和树形控制)以及2-d编程接口、javabean支持的增强,使得jdk 1.1看起来像一个古董。遗憾的是,没有一个浏览器能够完全支持java 2,也就是说,那些令人激动的新功能在浏览器上无法运行,甚至还没有一个浏览器宣布在确定的日期内提供对java 2的支持。在internet页面上也许没有必要用java 2,但在lan环境下不用这些新增功能实在让人觉得可惜。如果你也有这种感觉,不妨使用java plug-in(java 插件)。 ---- 1.基本原理及存在的问题 ---- 本来,applet的概念相当简单??只要在web页面中加入一个< applet >标记就可以了。浏览器一遇到这个标记,就会下载对应的 applet类文件,并启动自己的解释器运行这个applet。在此过程中浏览器担当相当重要的角色,特别是它必需具备运行java的能力,同时浏览器的虚拟机也决定了可接受的java代码版本。 ---- 运用java插件的基本目标是将显示web页面和运行java applet这两个任务分离,浏览器的主要任务是负责各种页面部件(如图片、文本、applet等)的布局。这种机制navigator和ie都早就具备,netscape称之为浏览器插件。 ---- 所谓的插件就是一个能够负责特定页面区域的代码模块。假设某个页面中含quicktime电影片断,浏览器只需要知道它应该保留的大小,然后就可以将它象图片或其它页面元素一样安排了,页面中该区域的显示则由quicktime插件代码负责。 ---- 可以将applet与电影片断同等看待。此时浏览器只需要知道applet的显示区域大小,就可以像对待其它页面元素一样对待applet了。而运行applet的任务则由java 插件负责。 ---- 在ie中又怎么办呢?ie中的activex也具有完全相似特性:浏览器将页面中某个区域的控制权交给其它代码负责。虽然netscape叫它插件,microsoft叫它activex控件,两者名字大不相同,但它们都能够让web浏览器运行真正的java 2代码。 ---- 这种方法最大的好处在于,它能够让ie和navigator使用sun的java运行时环境,而不再依赖于浏览器来获得java支持,更不必关注浏览器支持什么java版本了。 ---- 但这种方法也存在缺点,主要有以下两个方面:首先,这种运行applet的方式需要下载和安装java 插件;其次,一个简单的< applet >标记已经不再足够,用插件运行applet的web页面需要更多的html代码。 ---- 对于第一个问题,既可以从sun站点(http://java.sun.com/products/plugin/index.html)事先下载和安装插件软件包,如果有internet连接,也可以让浏览器在遇到< embed > 或< object > 标记时自动下载。 ---- 标记不同问题稍微复杂一点。虽然netscape的插件机制和microsoft的activex技术是非常相似的东西,但在web页面中调用它们的方法却是完全不同的。navigator用< embed >标记引入插件,ie中起类似功能的标记叫< object >。 ---- 如果你熟悉html且需要引用java 2 applet的页面不多,可以手工将< embed >标记嵌入到< object >标记对内部,使得页面在两个浏览器下都可以正常显示。假设要运行的是testapplet,则通过java插件运行applet的html代码类如(也就是说,用下面这些代码取代原来的< applet >标记): < object classid=xxx width = 350 height = 150 codebase="http://java.sun.com/products/plugin /1.2/jinstall-12-win32.cab#version=1,2,0,0" > < param name = code value = testapplet > < param name="type" value="application/ x-java-applet;version=1.2" > < comment > < embed type="application/x-java-applet;version=1.2" java_code = testapplet width = 350 height = 150 pluginspage="http://java.sun.com/products/plugin/ 1.2/plugin-install.html" >< noembed >< /comment > < /noembed >< /embed > < /object > ---- 更方便的方法是利用sun提供的html converter工具,它可以实现< applet >标记到上述标记的自动转换。如果页面数量较多,使用这个工具尤为值得。html converter可在以下地址下载: ---- http://java.sun.com/products/plugin/1.2/converter.html ---- 2.具体过程示例 ---- 下面我们通过实例来说明整个过程。假设有下面这个applet,它用到了swing,因而需要java 2支持: import java.awt.*; public class testapplet extends javax.swing.japplet { private font mfont = new font("serif", font.plain, 64); public void paint(graphics g) { graphics2d g2 = (graphics2d)g; g2.setrenderinghint(renderinghints.key_antialiasing, renderinghints.value_antialias_on); g2.setpaint(new gradientpaint(0, 0, color.green, 20, 10, color.blue, true)); dimension d = getsize(); g2.fillrect(0, 0, d.width, d.height); g2.setpaint(color.red); g2.setfont(mfont); g2.drawstring("abcdefg", 20, 84); } } ---- 下面这个html页面使用< applet >标记引入testapplet。在浏览器中该applet是无法运行的,如果你愿意的话,可以用appletviewer观察它的运行效果: < html > < head > < /head > < body > < applet code=testapplet width = 350 height = 150 >< /applet > < /body > < /html > ---- 接下来工作就是用html converter将< applet >标记转换为调用java 插件的< embed >和< object >标记了。在下载和安装这个工具之后,输入命令 java htmlconverter即可运行它。此时将出现该程序的主窗口,用法很简单,只需选择转换刚创建的文件即可。转换之后原来的文件将被覆盖(可在独立目录下创建原文件备份)。转换之后就可以运行java 插件了。在web服务器或本地打开转换后的页面,如果java 插件安装正确,就可以看到applet的运行。虽然整个过程略显麻烦,但对于java 2所提供的许多新特色来说,这种麻烦又微不足道了。///////////////////浙江省嵊州市 俞良松
|
|