2011-03-14 64 views
3

這是我的EJB規範和Java版本EJB規範和Java版本 - 向後兼容性

  • 之間關係的理解EJB 2.0是J2EE 1.3平臺,這是在上面J2SE 1.3 或JDK 1.3的一部分。 X
  • EJB 2.1是J2EE 1.4平臺,這是在J2SE 1.4或JDK的1.4.x

EJB 2.1規範的頂部的一部分,需要用於EJB 2.0向後兼容性,所以容器支撐EJB 2.1和在JDK 1.4.x中運行也將能夠運行EJB 2.0 bean。

  • EJB 3.0爲註釋等

的EJB 3規範要求的規格的早期版本向後兼容Java EE 5平臺,其所需的Java SE 5(JDK 5)的一部分。

我的問題是這樣的。如果我升級用於實現EJB 2.0 bean的java代碼,以針對更高版本的Java(比如Java 5)進行編譯,那麼我是否仍然可以保持相同版本的EJB規範,或者是否還需要遷移該規範。

+0

投票了,因爲它幫助我創建http://stackoverflow.com/questions/6921562/how-backwards-compatible-are-ejb-containers – Stephen 2011-08-03 04:18:27

回答

4

您甚至不必「升級」Java代碼,因爲我認爲舊代碼只能在源代碼級別兼容,因爲標識符與新引入的關鍵字相沖突,但這在字節代碼級別上並不是問題。

因此,您的舊Java 1.3/EJB 2.0 EAR應該仍然在Java 5/EJB 3應用服務器上運行不變,甚至可以在代碼中執行錯誤修正,並在現代JDK上使用-target 1.3進行編譯,而無需修復衝突標識符(當然你也不能使用新的源代碼級功能)。

+0

謝謝,這是不是意味着我可以繼續使用EJB 2.0版本的EJB規範,同時在我的bean的實現中利用Java 5的一些特性? – AJM 2011-03-17 10:45:22

+0

@AJM:是的,雖然這當然要求你完全將你的源代碼更新到Java 5(這不算太壞,只需重新命名與新關鍵字相沖突的標識符)。 – 2011-03-17 10:59:56

+0

非常感謝您的幫助。 – AJM 2011-03-17 12:13:22

2

這個table在ejb 2.0,2.1和3.0版本之間的源代碼(構建時間)級別上顯示了一些不兼容的情況,儘管所有版本都支持二進制(運行時)兼容性,也就是說,您可以在新ejb版本,無需重新編譯。

enter image description here