2011-07-25 161 views

回答

7

由32位JDK生成的字節代碼與由64位JDK生成的字節代碼相同。如果您的問題只發生在64位JVM上,是因爲JVM中存在一個錯誤,並且使用64位JDK不會產生任何影響。

2

這取決於您的應用程序,但在正常情況下,在x64機器上從x86機器運行代碼並不會出現問題,反之亦然。

如果您使用普通的舊Java(沒有互操作,沒有調用本地庫),生成的字節碼將是機器無關的,並且應該在任何已安裝的JVM上運行。

+0

我們有幾個(少於5個)對本地庫的調用。如果生成的字節碼不同,是否存在已知問題?只要它仍然運行,我不介意生成的字節碼是否有所不同。這是否意味着我必須再次生成庫? – Paul

+0

如果您有對本機庫的調用,那麼您將不得不爲目標環境再次編譯這些庫。 Java生成的字節碼將是相同的。 – Falanwe

+2

@Paul,你需要爲每個不兼容的平臺編譯你的庫。 –

0

沒有我能想到的,除非你明確地調用特定於環境的32位本地代碼。

像Windows這樣的操作系統使用WoW64允許32位應用程序在64位系統下運行。這是一項允許向後兼容的規定。只要本地庫只依賴於32位或僅在64位庫上,一切都很好。 JVM負責使用JIT將字節碼轉換爲適當的機器碼,所以不用擔心。

3

Java背後的思想是程序的字節碼版本對於所有平臺都是相同的。這就是爲什麼您可以在Windows機器上編譯並在Linux機器上運行生成的類和jar文件的原因。我每天都在做這樣的交叉編譯。

這包括JVM使用32位還是64位。

所以,簡單的答案是沒有,沒有問題

(更先進的回答是,如果你也使用您帶來您的Java代碼,非Java本機代碼,如DLL那麼這段代碼很可能需要重新編譯)

相關問題