浏览 3871 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-02-19
背景说明: ================================================================================ 某软件开发公司B ==>>代替真正公司的名字 某某客户 ==>> 代替真正的客户公司名字 两公司分别开发系统A与系统B,某软件开发公司A开发系统A,某软件开发公司B开发系统B 系统A实施与应用时间比系统B早一年多,但只支持IE默认的MS JVM 系统B只支持Sun JVM ================================================================================ ================================================================================ 以下是某软件开发公司B对某软件开发公司A开发的系统A的升级建议 ================================================================================ 关于某某客户系统A升级的建议 自2005年1月系统B在某某客户分公司试运行以来,发现某某客户分公司的系统A与系统B二者不兼容。具体表现为:某某客户分公司的系统A的某些功能只能在Microsoft JVM下运行,而该JVM只支持1.1版本的JDK;系统B要求的JDK版本为1.3或1.4。就此问题,某软件开发公司B组织人员专门对JDK各版本兼容性进行深入研究,发现二者不兼容的原因如下。 1. JDK各版本类的组织发生了改变,导致系统B客户端程序运行在只支持低版本JDK的JVM下时(譬如说Microsoft JVM),该JVM会找不到相应的类。例如:系统B客户端程序用到PrintJob类,该类在JDK1.1版本中是位于java.awt包下,而在JDK1.2版本以后新增了一个java.awt.print包,并将该类放在此包下面。这样就导致即使以Microsoft JVM类的加载格式重新编译系统B,在运行过程中也会报错:找不到PrintJob类。 2. 高版本的JDK对低版本的某些类不但在功能进行了相应的增强,而且其运行机理也与低版本有较大不同。比如说系统B大量使用了Thread类, 1.1版本的JDK对该类的设计在安全性上存在严重问题,1.2及其以上版本的JDK对此进行了全面的改进。这样就导致1.1版本的JDK编译器编译出来的客户端程序不能运行在1.2或更高版本的JVM之下,1.2版本的JDK编译器编译出来的客户端程序即使能运行在1.1版本的JVM之下,也可能会抛出异常(比如说找不到该方法等等异常)。 通过对JDK各版本兼容性的研究以及对系统B功能实现的综合考虑,开发人员发现系统B向下兼容(即通过修改WEB系统源代码,使得客户端程序可以在Microsoft JVM下运行)实现起来需要修改大量程序代码,工作量很大,并且系统安全性、可靠性都会出现问题(这是由JDK1.1本身缺陷造成的)。相比较而言,升级系统A,使其可以运行在较高版本的JVM之下就容易很多,也更合理,原因如下。 1. 高版本的JDK开发、编译出来的客户端程序往往更加稳定、更强壮,解决问题的手段也较为丰富。升级之后的系统A扩展功能将会变得相对容易。 2. Microsoft已经宣布到2007年底推出的Internet Explorer将不再包含Microsoft JVM,即以后的IE都必须由用户自己安装相应的JAVA运行环境,也就是说日后系统A的升级的可能性非常大。 3. 升级系统A相对简单,只要将相应的源程序用高版本的JDK重新编译,编译过程中编译器可能会提示:找不到某些包,这样只需修改相应的import路径即可。工作量较小。 基于以上考虑,希望某某客户分公司采纳此意见,升级系统A,解决二者不兼容的问题。在此过程中,某软件开发公司B进行相应的配合。 某软件开发公司B 2005-02-05 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-02-19
确实应该是低版本的实现的升级到高版本,而不是高版本的实现降低到低版本。
在 IE 中开发 Applet,不应该继续使用 M$ JVM,这会带来无穷的烦恼,风险也很大,而应该使用 Sun 的 JRE。 在页面中应该采用如下写法来使用 Applet: <object id="ftpApplet" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0" width="0" height="0"> <param name="code" value="FTPApplet.class"> <param name="codebase" value="/includes"> <param name="archive" value="ftpapplet.jar"> </object> 这种写法有什么好处?这种写法是将 JRE 当作一个 ActiveX 控件来配置的,然后 JRE 再去启动 Applet。除非 M$ 挥刀自宫,决定 IE 完全不支持 ActiveX,否则他们再捣乱也不会影响到 Applet 的正常运行。而且这种写法可以使用所有的 JRE 1.4.x 版本。 |
|
返回顶楼 | |
发表时间:2005-02-21
spring嘟嘟 写道 dlee 写道 确实应该是低版本的实现的升级到高版本,而不是高版本的实现降低到低版本。
在 IE 中开发 Applet,不应该继续使用 M$ JVM,这会带来无穷的烦恼,风险也很大,而应该使用 Sun 的 JRE。 在页面中应该采用如下写法来使用 Applet: <object id="ftpApplet" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0" width="0" height="0"> <param name="code" value="FTPApplet.class"> <param name="codebase" value="/includes"> <param name="archive" value="ftpapplet.jar"> </object> 这种写法有什么好处?这种写法是将 JRE 当作一个 ActiveX 控件来配置的,然后 JRE 再去启动 Applet。除非 M$ 挥刀自宫,决定 IE 完全不支持 ActiveX,否则他们再捣乱也不会影响到 Applet 的正常运行。而且这种写法可以使用所有的 JRE 1.4.x 版本。 MS已经把ActiveX取消提上日程了,据说IE7就会 <applet code="Applet.class" width="100%" height="100%" codebase="./" MayScript> <param name="cabbase" value="Applet.cab"> <param name="archive" value="Applet.jar"> <param name="Name" value="value"> </applet> |
|
返回顶楼 | |