Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改java版本_Java_Jvm_Version_Compatibility_Versions - Fatal编程技术网

更改java版本

更改java版本,java,jvm,version,compatibility,versions,Java,Jvm,Version,Compatibility,Versions,我有一个在Java1.3上运行的服务器-客户机应用程序;我想一步一步地改为Java1.6,这意味着最初的几个客户端,比其他客户端,最后是服务器。。。 我想知道你能否告诉我一些可能出现的常见问题,以及我应该注意些什么?在我脑海中,在字段和局部变量中查找名称enum和assert。。。这些词已经成为Java1.4和Java5中的关键词。如果java 6编译器看到它们,就会将它们标记为编译错误 Yuval=8-Sun试图保持高水平的向后兼容性,因此您可以简单地安装新的JVM并用它重新启动应用程序 下面

我有一个在Java1.3上运行的服务器-客户机应用程序;我想一步一步地改为Java1.6,这意味着最初的几个客户端,比其他客户端,最后是服务器。。。
我想知道你能否告诉我一些可能出现的常见问题,以及我应该注意些什么?

在我脑海中,在字段和局部变量中查找名称
enum
assert
。。。这些词已经成为Java1.4和Java5中的关键词。如果java 6编译器看到它们,就会将它们标记为编译错误


Yuval=8-

Sun试图保持高水平的向后兼容性,因此您可以简单地安装新的JVM并用它重新启动应用程序

下面是一个描述Java1.6与早期版本向后不兼容的文档。本文档还链接了和的兼容性文档。您可能想阅读此文档以了解可能存在的陷阱

Java1.5并引入了新的类文件格式。JVM也将运行旧的类文件,但是重新编译代码——特别是使用JDK1.6——将帮助新JVM利用一些更改使应用程序更快。所以你可以考虑重新编译。


此外,还引入了一些新的关键字,即assert(在1.4中)和enum(在1.5中)(正如Yuval已经提到的)。如果使用这些单词作为标识符,重新编译将失败,但旧的类文件可以工作。您可以将开关
-source
提供给javac,让它编译:“
javac-source 1.3
”将编译代码,而不使用assert和enum作为关键字。

当我在一个小applet上从1.4.2移动到1.5时,很多事情都发生了:屏幕刷新出现问题,元素移动,等等

Sun的JRE并没有为所有东西保持向后兼容性。有时,当项目被弃用时,它们会在很短的时间内完全消失

我们使用“库存”Java编写所有内容,也使用Sun的库

我还见过几个用纯Java编写的应用程序,在同一版本的JRE中的一个或两个平台上运行良好,但在其他版本的JRE上运行失败(我使用的产品现在在Windows上运行良好,在Mac OS X上运行正常,在Linux上运行正常,但在Solaris上运行失败——所有这些都使用相同的JRE)


移动版本不是一个简单的步骤,除非应用程序真的很小。

Sun保留了一个列表,列出了每个Java新版本引入的不兼容性


1.4.2的最后一个文档中有指向JDK1.0兼容性说明的链接。

我的经验是,兼容性非常高。我只发现一个应用程序在当前版本上无法运行。不管出于什么原因(没有源代码,所以我没有深入研究),一个应用程序只能在1.4.2上运行。我处理过的所有其他问题(其中一些相当大)都达到了1.6。无需修改


当然是YMMV,所以您必须尝试一下,看看……

一般来说,Sun的JVM的向后兼容性非常好,但并不完美。我见过三个非常大的应用程序从1.3迁移到1.5,但只遇到少量问题,其中最大的问题是一个Swing掩码进入无休止的事件处理循环,并将应用程序冻结在1.4之下

服务器部分不太可能引起问题,但是Swing中有很大的变化,特别是在1.3和1.4之间——例如,focus子系统被完全重写


应用程序仍有可能正常运行,但您肯定应该进行广泛的测试。

根据我的经验,版本之间的屏幕刷新问题通常源于对Swing API的误用,而这些API从未保证能够正常工作。不过,这种经历肯定也有例外。:)我从来没有听说过一个不受欢迎的方法实际上被删除了。1.0.x中一些不推荐使用的方法仍在Java6中。你能举出一些例子吗?在这一点上,我还没想清楚-我从1.4.2开始就没有接触过Java,但是在1.4.2中尝试使用1.2-era调用肯定会有一些问题