2016-04-11 48 views
2

我曾经用Java 1.3编译遗留Java代码,并在Websphere Application Server v8.5中运行它。现在稳定。如果我使用更高版本的Java编译Java代码,该怎么办?

现在我想用Java 1.6编译代码,并且希望结果仍然可以在Websphere Application Server v8.5中运行。我可以成功编译代码。

如果我用较新的Java版本编译Java代码会发生什么?运行时会导致错误吗?

+0

这个问题不是关于[tag:compiler-construction]。不要盲目标签。 – EJP

+0

假设Webshphere仍然在Java 1.3上运行,那么不会,最终会出现类错误。如果Websphere运行Java 1.6(或更高版本),那么您应该没有问题 – MadProgrammer

+0

Javac中的弃用警告是否是您这样做的原因? –

回答

2

在实际的语法和编译方面,不同版本的Java的release notes是您的最佳指南。值得注意的是,Java 5将certain keywords, like assert and enum引入到实际上会导致代码库中出现编译错误的语言中。

放在一边,提供的代码实际上并成功编译(伟大的,你没有使用任何关键字!),那么你必须考虑到行为之间的各种班都变了。 They're available in the release notes too,如果你希望避免破坏旧代码,你应该仔细阅读它们。

所以简而言之,,如果您使用依赖新版本中已更改的行为的更高版本,则代码可能会中断。

还有的被肯定,如果你编译使用较新的JDK版本的代码的事情,你一定要确保所部署它至少使用该版本,否则将无法成功运行任何JVM它。

+0

如果OP部署到WAS 8,那么他的代码无论如何都运行在更新的jre上(java 7 iirc),所以他已经受到更新的jdk库版本的影响。我没有看到任何破解的机会(因为它已经建立了代码在新的jdk下编译)。 –

+0

@NathanHughes:类之间的行为变化可能会影响他们;只是在新的JRE上运行不会(对我的回忆)意味着他们正在使用任何新的类。 – Makoto

相关问题