我将开发面向 WebSphere 8.5 服务器的企业应用程序。WebSphere 8.5 与 Java EE 6 和 Java SE 7 一起工作。
那么,就代码开发而言,这意味着什么?Java EE 只是一组附加的企业库吗?Java EE 6 是否意味着它使用 Java 6 语法?我能否在 8.5 服务器上使用 Java 7 语法并仍然使用 Java EE 6 提供的框架和 Web 服务?
Java EE 实际上是各种技术的一组规范。每个规范通常都有一个 API(例如:javax.servlet.*、javax.ejb.* 等,由不同的供应商实现(例如:IBM websphere、JBoss、Weblogic 等)。这个想法是您只需学习和编写一次代码,但您可以使用您的代码(进行一些调整)和您对各种供应商实施的了解。
当您编译您的战争时,您通常必须在您的类路径中包含(仅用于编译目的 - 不一定打包)特定版本的 java ee api 组件(例如:java-servlet-2.5)。API 组件通常依赖于特定版本的 Java SE(例如:如果 API / 供应商实现使用泛型,则需要 Java SE 5 或更高版本)
Java EE 需要向后兼容,因此如果您针对 Java EE 6 API 编译和打包您的战争,它将在 Java EE 7 容器上运行。
您不一定必须使用 Java SE 7 API 在 Java EE 7 上运行您的代码,您始终可以针对较旧版本的 Java EE API(因此较旧的 Java SE)编译您的战争。仅当您针对最新版本的 API 进行编译时,新功能才可用。
那么,就代码开发而言,这意味着什么?
这意味着,您应该了解 Java SE 才能使用 Java EE 标准创建应用程序。Java EE 基于 Java SE。
Java EE 只是一组附加的企业库吗?
嗯,简化了很多事情......是的。
Java EE 6 是否意味着它使用 Java 6 语法?我能否在 8.5 服务器上使用 Java 7 语法并仍然使用 Java EE 6 提供的框架和 Web 服务?
您可以在 Java EE 6 应用程序中使用 Java SE 7 语法。但是您也可以使用 Java SE 6 语法。
Java EE 规范确实针对特定的 Java SE 版本。例如,JSR 316 说:Java EE 6 is the Enterprise Edition of version 6 of the Java platform, and thus will be built on Java SE 6.
个别规范可能仍会选择与较低版本的 Java SE 兼容,但绝不会与较高版本兼容。Java EE 实现是否实际运行在为其指定的更高 Java SE 版本上取决于实现。
通过@Arjan Tijms