Java 6 Hotspot中的Java 5运行时

时间:2012-03-01 01:48:00

标签: java jvm jvm-hotspot

有没有办法在Java 5的运行时环境下运行Java 6的Hotspot?我有一些代码依赖于较旧的类实现的行为,但我想使用更新的JVM。我确实计划将代码迁移到Java 6(或者可能是7!),但是现在,我更关心的是看看我是否有JVM问题。

3 个答案:

答案 0 :(得分:1)

主要向后兼容,我们只是将一些1.4.x代码迁移到1.6(有和没有重新编译,因此二进制和源代码),并且有效。

我建议您查看每个主要的Java版本,因为总有一些不兼容性。查看Java 1.6 compatibility with 1.5,如果要迁移某些旧版本的源/二进制文件,请检查所有主要的Java版本页面,看看是否存在不兼容性。

编辑:在您的问题中,您写道您希望Hotspot 1.6(JVM)与JRE 1.5一起运行?你知道JRE包含了JVM,你确定你刚才问的是什么吗?

答案 1 :(得分:1)

我认为您最好使用以下方法之一:

  • 弄清楚是否可以修改应用程序代码以解决Java 6中的XSLT错误。

  • 查看是否有针对Java 6上的XSLT错误的Sun / Oracle支持的修补程序。

  • 使用Java 5 JRE。

  • 尝试使用最新的Java 6 JRE来查看是否修复了XSLT错误。

  • 尝试使用最新的Java 7 JRE来查看是否修复了XSLT错误。

在Java 6 JVM上使用Java 5 rt.jar的问题是rt.jar中的核心类与JVM的本机代码实现之间存在隐藏的依赖关系;即java二进制和相关的本机库。这些没有记录,并且(IMO)极有可能在Java 5和Java 6之间发生了一些变化。


  

如果两者之间存在本机不兼容,看起来我只是抓住了我需要的特定类,并在rt.jar中替换它们或用extdir覆盖它们。

像这样黑客攻击Java并不是一个好主意。每次在应用程序平台上下载并安装最新的Java 6 JRE时,至少需要重复hackery。 (如果您向其他人提供此应用程序,那么他们也有问题。)

我的原始版本中仍有两种替代方法可供您使用:修复应用程序以解决问题,并使用Java 5。


  

Java 7的XSLT和最新的Xalan中存在错误

您是否考虑过这可能不是一个错误?也许这是对相关规范范围内的先前错误或允许行为的修复,并且您的代码因上一个(错误?)行为而出错。

Java / Xalan错误数据库中是否存在针对此错误的错误报告?维护者说什么?他们提供变通方法吗? (这些问题需要被问到......)

答案 2 :(得分:0)

我不确定我是否正确理解了您的问题,但如果您使用java 5编译器编译代码,那么是的,您可以在java 6 vm上运行它而不会出现问题。