我曾经用Java 1.3编译遗留Java代码,并在Websphere Application Server v8.5中运行它。现在稳定。如果我使用更高版本的Java编译Java代码,该怎么办?
现在我想用Java 1.6编译代码,并且希望结果仍然可以在Websphere Application Server v8.5中运行。我可以成功编译代码。
如果我用较新的Java版本编译Java代码会发生什么?运行时会导致错误吗?
我曾经用Java 1.3编译遗留Java代码,并在Websphere Application Server v8.5中运行它。现在稳定。如果我使用更高版本的Java编译Java代码,该怎么办?
现在我想用Java 1.6编译代码,并且希望结果仍然可以在Websphere Application Server v8.5中运行。我可以成功编译代码。
如果我用较新的Java版本编译Java代码会发生什么?运行时会导致错误吗?
在实际的语法和编译方面,不同版本的Java的release notes是您的最佳指南。值得注意的是,Java 5将certain keywords, like assert
and enum
引入到实际上会导致代码库中出现编译错误的语言中。
放在一边,提供的代码实际上并成功编译(伟大的,你没有使用任何关键字!),那么你必须考虑到行为之间的各种班都变了。 They're available in the release notes too,如果你希望避免破坏旧代码,你应该仔细阅读它们。
所以简而言之,是,如果您使用依赖新版本中已更改的行为的更高版本,则代码可能会中断。
还有的被肯定,如果你做编译使用较新的JDK版本的代码的事情,你一定要确保所部署它至少使用该版本,否则将无法成功运行任何JVM它。
如果OP部署到WAS 8,那么他的代码无论如何都运行在更新的jre上(java 7 iirc),所以他已经受到更新的jdk库版本的影响。我没有看到任何破解的机会(因为它已经建立了代码在新的jdk下编译)。 –
@NathanHughes:类之间的行为变化可能会影响他们;只是在新的JRE上运行不会(对我的回忆)意味着他们正在使用任何新的类。 – Makoto
这个问题不是关于[tag:compiler-construction]。不要盲目标签。 – EJP
假设Webshphere仍然在Java 1.3上运行,那么不会,最终会出现类错误。如果Websphere运行Java 1.6(或更高版本),那么您应该没有问题 – MadProgrammer
Javac中的弃用警告是否是您这样做的原因? –