我曾經用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中的棄用警告是否是您這樣做的原因? –