我最近注意到一些 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 APIs与 OSGi 中的 JavaEE 并行开发world,由 OSGi 联盟创建,专注于动态 Java 应用程序的模块化。
最后,一个竞争框架,Spring在 Java 世界中相当占主导地位(并且实际上对 JavaEE 本身的发展产生了很大的影响),甚至在今天,也有像 Spring Boot 这样适合初学者的项目。可能比 JavaEE 本身更流行!
就我个人而言,我喜欢只使用 Java SE、一些 EE API,例如 Servlet 和 JDBC(编辑:jdbc 位于标准库中!) 作为必需品,和社区驱动的项目(例如 Micronaut 和 Vert.x ),这些都是非常酷的东西,并且根本不基于任何标准!
总而言之,Java 世界很大,而且种类繁多! JavaEE只是其中的一小部分。
关于java - 为什么某些 Java EE API 在 Java SE 中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58939618/