java - 为什么某些 Java EE API 在 Java SE 中实现?

标签 java jakarta-ee

我最近注意到一些 API 应该是 Java EE 的一部分,但似乎是在 Java SE 中实现的。例如,JAX-WS,它是一个 Java EE API,但可以完全在 Java SE 项目中使用。

我有什么地方搞错了吗? Java EE 中的一些 API 在 Java SE 中实现是开箱即用的吗?在哪里可以找到有关 JSE 中可用的 JEE API 的信息?

最佳答案

Java SE API 基本上是 Java 标准库。 Java Platform Docs 上有一个很好的图表。

这里是“基础库”的列表:https://docs.oracle.com/javase/8/docs/technotes/guides/index.html#langutil

其中包括java.lang、数学、集合、反射、并发、日志记录、首选项、io、net ....(请注意,其中许多甚至没有被 Java 社区广泛使用,如日志记录 - 其中 slf4j-api 是事实上的标准)。

然后,还有“集成库”,其中包括 JDBC(数据库访问)和 JNDI(LDAP 等)等内容,以及“用户界面库”(以前是 Swing 和 JavaFX,但现在又回到只有 Swing) )。

Java EE APIs包括许多其他东西,如您提到的电子邮件和 JAX-RS,它们扩展了 Java 库,理论上,应该在 SE API 之上交互和工作,提供适合企业开发的全面整体。

它们不是由 JavaSE 运行时实现的!

但是,每个 JavaEE API 都可以由独立组织(或任何有足够空闲时间投入精力的人)独立实现,并在大多数 Java SE 应用程序中独立使用。这就是为什么有很多 Servlet 容器(Tomcat、Jetty、GlassFish 和 many others)可以实现 Servlet API,而没有其他容器!

值得注意的是,最近,JavaEE 已正式成为 JakartaEE项目。有一个可搜索的项目列表 here .

我还想提一下还有另一个 big set of APIsOSGi 中的 JavaEE 并行开发world,由 OSGi 联盟创建,专注于动态 Java 应用程序的模块化。

最后,一个竞争框架,Spring在 Java 世界中相当占主导地位(并且实际上对 JavaEE 本身的发展产生了很大的影响),甚至在今天,也有像 Spring Boot 这样适合初学者的项目。可能比 JavaEE 本身更流行!

就我个人而言,我喜欢只使用 Java SE、一些 EE API,例如 Servlet 和 JDBC(编辑:jdbc 位于标准库中!) 作为必需品,和社区驱动的项目(例如 MicronautVert.x ),这些都是非常酷的东西,并且根本不基于任何标准!

总而言之,Java 世界很大,而且种类繁多! JavaEE只是其中的一小部分。

关于java - 为什么某些 Java EE API 在 Java SE 中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58939618/

相关文章:

jakarta-ee - 无法将JSF部署到Weblogic 12.1.1(无法加载e=web-app@http ://xmlns. jcp.org/xml/ns/javaee对应的java类型)

java - 应用程序架构: request processing

java - Map.get() 中的优化? : ternary operator

java - JDK 是否包含 Java-EE

java - 是否可以知道 Akka 的 "Distributed Publish Subscribe in Cluster"中收到了哪个主题的消息?

java - 内部异常 : com. mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知错误 1049

java - 为 Eclipse Java EE IDE 配置 JD-Eclipse Java Decompiler 插件

java - 无状态 session bean 的 ejb 拦截器,如何调用有状态 session bean

java - 正则表达式 Java 合并模式

java - 使用java api获取ec2中可用实例的数量