内容:
先澄清几个概念
常见的一些问题
一些补充
关于作者
众所周知,Sun和MS的一场官司最终有了个很不好的结局:双方分道扬镳了。最倒霉的当然是我们这些Java程序员了,一个很不利的一点在于WEB上的JAVA技术的实现。下面以我尝试在applet中使用JAVA2平台标准版中的最新的Swing技术为例,阐述一下相应的入门问题。
先澄清几个概念:
1):JDK和J2SDk:J2SDk包含了Java Development kit(JDK)、Java Runtime Environment(JRE)和Java Plug-in。原先sun的JAVA软件开发工具包是JDK,现在就称为J2SDk了。JRE和plug-in:J2RE包含了java plug-in。
sun的java网站上就单独提供J2SDK和JRE各种版本的下载,J2SDk是提供给开发JAVA程序所用,应用程序用户是不需要开发工具的。而JRE顾名思义是JAVA程序要运行所需要的环境,所谓跨平台就是要各种平台都有一个中间代理,那就是JRE。一般采用JAVA技术开发出的软件都得带这个,所以sun就单独提供了JRE安装文件,以供JAVA应用程序发布时所用。
2):Swing和JFC(Java Foundation Classes)
JFC是早期Sun对JDK的功能扩展,不是Java的公共规范,Swing是其中的一项用户界面扩展技术。最新的JAVA2技术则包含了JFC技术,不需要再扩展了。换句话说,其实就是Sun将JFC纳入了JAVA核心类库。原先要用到JFC技术,用户必须在原有的JRE前提下再添加JFC,现在少了一步,只需JRE了。
3):Sun的JAVA实现和MS的JAVA实现
众所周知,JAVA技术是开放的,Sun制定规范,各公司可以推出自己的JAVA实现,当然都得遵守Sun的规范。JAVA技术发展的开始阶段,MS和Sun保持了很好的合作关系,在IE里面采用MS的JAVA VM(虚拟机)支持Java applet。但好景不长,双方分手了,最新的IE支持的JAVA版本是1.1.4。另外,Netscape Navigator也不支持最新的JAVA版本。如何让applet能用到最新的Java类库呢?这就是Sun推出了它的所谓plug-in技术的原因所在。
言归正传,JAVA2技术的发展日新月异,IE只支持MS的JAVA1.1.4,applet如何才能利用到那些新的核心类库呢?唯一的办法,绕开IE的appet机制(<applet.........</applet>),使用 plug-in,利用IE浏览器必须支持的扩展技术扩展IE功能。所谓的扩展技术也就是MS的 COM/ActiveX技术,在网页中这就是<OBJECT>标签的目的所在了。顺便说一下,在Netscape Navigator中plug-in是利用浏览器的插件构架来达到目的的(<EMBED>目的所在)。plug-in的作用就在于用Sun的JRE来替代掉浏览器所默认的JRE。
明白了以上内容,我们就可以了解为什么带Swing的applet网页不能用一般的Html标记语言 <applet>来写了,为什么浏览带Swing技术的Applet要有plug-in才行了。
对applet开发者而言最简单方便的方法就是:
用平时一般的<applet........></applet>标签写好待发布网页。
用Sun提供的html converter将待发布网页自动转化成plug-in所能起作用的带有<OBJECT>和<EMBED>标签的网页。此时即可发布了。
如需自己写,参见http://java.sun.com/prodUCts/plugin/1.3/docs/。
常见的一些问题:
问:假如要开发带有Swing或其他JAVA新技术的applet,要安装什么软件?
答:Sun的最新的J2SDK软件,目前最新版本为1.3.1。
问:客户端浏览带Swing或其他JAVA新技术的applet,要安装什么软件?
答: 不需非凡注重什么,假如第一次浏览带Swing或其他JAVA新技术的applet时,会被引导至某站点(缺省为Sun的java站点)自行下载安装带有数字签名的JRE软件。假如已经安装过,则 plug-in会自行起作用。
注重:JRE分美国版及国际版,J2sdk则只有一种,在选择JRE时中文用户应选择国际版。
问:如何将引导下载JRE的站点改为自己设定的http站点?
答:在要发布的html页中(html converter转化)有“codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0"” 改为自己的即可。比如:“codebase="http://202.119.28.215/JavaRelated/Software/j2re1_3_0-win-i.exe#Version=1,3,0,0"”。 “pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"”也类似,只不过这是针对Netscape Navigator的。
参见http://java.sun.com/products/plugin/1.3/docs/intranet.html。
自己发现的一个大bug: 不过在1.3.0_01及以后的版本里已经改正了。
系统:Win2000 Professional中文版、Internet EXPlorer 5.0。
在1.3.0版本里,无论是装了j2sdk还是Jre,控制面板里的plug-in图标点击无法运行,也即plug-in在浏览器里无效。解决方法:在注册表中查找“插件”,改为“plug-in”即可。或安装更高高版本。
用户浏览1.3.0版的applet,去Sun的网站下载JRE时,假如下载的是JRE 1.3.0国际版,则问题同上。假如下载的是JRE 1.3.0 美国版,则IE浏览时会自行“没有响应”。
一些补充:
上文并没有提到使用JFC的解决方案,究竟,JFC只是个临时方案,不得已才使用它。比如在用Java applet结合VRML的项目中,假如要用到Swing技术,JFC是一种解决方案。当然,这种状况只会是临时的,随着技术的发展,各种WEB技术将更好的结合在Java四周,相信WEB上的Java技术会变得更美。
最后:
由于本人属于Java新手,难免会有各种各样的错误,还望大家批评指正,希望以此文作一点贡献而已。这只是个入门篇,比较的浅,究竟WEB技术博大精深,JAVA与WEB未来走向何方?还有待于大家共同探讨。
关于作者
孔竞飞,南京东南大学自动控制系学生,目前在东南大学CIMS中心从事基于WEB的3D可视化方面的研究。
--摘自IBM网站
http://www-900.ibm.com/developerWorks/cn/java/joy-applet/index.shtml