2016-04-11 51 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

相關問題