【问题标题】:EJB specifications and Java versions - backwards compatibilityEJB 规范和 Java 版本 - 向后兼容性
【发布时间】:2011-03-14 10:28:33
【问题描述】:

这是我对 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 是 Java EE 5 平台的一部分,需要 Java SE 5 (JDK 5) 进行注释等

EJB 3 规范要求向后兼容早期版本的规范。

我的问题是这样的。如果我升级用于实现 EJB 2.0 bean 的 Java 代码以针对更高版本的 Java(比如 Java 5)进行编译,我是否仍然可以保留相同版本的 EJB 规范,或者我是否也需要迁移它。

【问题讨论】:

标签: java jakarta-ee ejb-3.0 ejb ejb-2.x


【解决方案1】:

您甚至不必“升级” Java 代码,因为我认为旧代码只能在源代码级别不兼容,因为标识符与新引入的关键字冲突,但这在字节码级别不是问题。

因此,您的旧 Java 1.3/EJB 2.0 EAR 仍应在 Java 5/EJB 3 应用服务器上保持不变,您甚至可以在代码中进行错误修复并在现代 JDK 上使用 -target 1.3 编译它,而无需修复冲突标识符(当然你也不能使用新的源级功能)。

【讨论】:

  • 谢谢,这是否意味着我可以继续使用 EJB 规范的 EJB 2.0 版本,同时在我的 bean 实现中利用 Java 5 的一些特性?
  • @AJM:是的,尽管这当然需要您将源代码完全更新到 Java 5(这还不错,只需重命名与新关键字冲突的标识符)。
【解决方案2】:

这个table 显示了 ejb 2.0、2.1 和 3.0 版本之间的源(构建时)级别的几个不兼容性,尽管所有版本都支持二进制(运行时)兼容性,即您可以在新的 ejb 版本无需重新编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2021-10-09
    • 2012-11-30
    相关资源
    最近更新 更多