当库将编译器从1.5切换到1.6时,库用户是否总是需要重新编译? 请考虑以下场景:java框架和一组应用插件被部署为java SE客户端应用程序。客户端运行时是JavaSE6,而框架以及应用程序插件是用JavaSE5编译的

当库将编译器从1.5切换到1.6时,库用户是否总是需要重新编译? 请考虑以下场景:java框架和一组应用插件被部署为java SE客户端应用程序。客户端运行时是JavaSE6,而框架以及应用程序插件是用JavaSE5编译的,java,jvm,backwards-compatibility,java-6,java-5,Java,Jvm,Backwards Compatibility,Java 6,Java 5,现在,框架是用JavaSE6重新编译的,应用程序插件仍然是用JavaSE5编译的 假设应用程序插件直接使用的框架接口类/接口仍然可以使用Java SE 5语言级别和API进行编译,问题是:应用程序插件是否需要根据重新编译的框架进行重新编译,以便在运行时与Java SE 6一起使用 也许问题可以归结为:当SE5类文件v49在SE6运行时内使用SE6类文件v50时,在什么情况下会出现问题?如果接口/类中没有,并且运行时VM支持新的类文件版本,那么应该没有问题。如果接口/类中没有问题,并且运行时VM支

现在,框架是用JavaSE6重新编译的,应用程序插件仍然是用JavaSE5编译的

假设应用程序插件直接使用的框架接口类/接口仍然可以使用Java SE 5语言级别和API进行编译,问题是:应用程序插件是否需要根据重新编译的框架进行重新编译,以便在运行时与Java SE 6一起使用


也许问题可以归结为:当SE5类文件v49在SE6运行时内使用SE6类文件v50时,在什么情况下会出现问题?

如果接口/类中没有,并且运行时VM支持新的类文件版本,那么应该没有问题。

如果接口/类中没有问题,并且运行时VM支持新的类文件版本,那么应该没有问题。

AFAIK,您可以在Java 7.0 JVM上运行使用Java 1.0编译的JAR。不太可能有好的理由重新编译,因为javac没有优化代码,JIT没有。AFAIK,您可以在java7.0jvm上运行用java1.0编译的jar。不太可能有好的理由重新编译,因为javac没有优化代码,而JIT优化了代码。这就是我所想的。只是为了确保我没有忽略什么。非常感谢。最终的证明将在生产环境中完成-希望我不需要再回到这个问题上-我就是这么想的。只是为了确保我没有忽略什么。非常感谢。最终的证明将在生产环境中完成-希望我不需要再回到这个问题上-