Java 6 Hotspot 中的 Java 5 运行时

标签 java jvm jvm-hotspot

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

最佳答案

我认为您最好选择以下其中一项:

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

  • 查明是否有 Sun/Oracle 支持的针对 Java 6 上的 XSLT 错误的补丁。

  • 使用 Java 5 JRE。

  • 尝试最新的 Java 6 JRE,看看 XSLT 错误是否已修复。

  • 尝试最新的 Java 7 JRE,看看 XSLT 错误是否已修复。

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

<小时/>

If there are native incompatibilities between the two, it looks like I'm left with grabbing the specific classes I need and either replacing them in rt.jar or overriding them with extdir.

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

在我的原著中,您仍然可以使用 2 个替代方案:修复应用程序以解决问题,并继续使用 Java 5。

<小时/>

The bug exists in the Java 7's XSLT and in the latest Xalan

您是否考虑过这根本不是错误的可能性?也许这是对以前的错误或相关规范范围内允许的行为的修复,并且您的代码因依赖于以前的(有错误的?)行为而出现错误。

Java/Xalan 错误数据库中是否有针对此错误的错误报告?维护者怎么说?他们提供解决方法吗? (这些问题需要问...)

关于Java 6 Hotspot 中的 Java 5 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9509510/

相关文章:

java - 对象构造在实践中是否保证所有线程都看到已初始化的非最终字段?

tomcat - Servlet 容器优于 Tomcat

java - Java VM 何时支持 Linux ARM 的垃圾优先 (G1) 收集器?

java - Linux 二进制文件应位于何处,以便在 PCF 中运行的 Spring Boot 微服务中通过 ProcessBuilder/Runtime 进行调用

java - 在 JFrame 中显示 .png 图像?

java - 内存不足时杀死/Term java

java - Oop Maps 在 Hotspot VM 中到底意味着什么

Java 加密提供程序 - 奇怪的堆栈跟踪

java - 测试提供给 "su"命令的密码是否成功使用 JSch 库

java - 预期类找到对象