Java EE 规范与实现

poo*_*olD 5 java tomcat hibernate jakarta-ee

我最近开始学习 Java EE,但很难理解它。我已经在这里阅读了一些答案,但我仍然觉得我的理解存在一些差距。基本上,Java EE 是一个规范,TOMCAT、Glassfish 等应用服务器都有具体的实现。此外,任何人都可以提供 EE 的实现。

那么,我已经javax.sevlet-api-4.0.1-sources.jar从 Maven 存储库下载了,我可以看到它们只是接口,我假设我们只是使用它们来构建项目?

在 tomcat lib 文件夹中有一个servlet-api.jar. 这是servlet的tomcat实现吗?如果是,那么是否可以用另一个 servlet 版本实现替换它?

现在,Hibernate是Persistence API的实现。如果我想将 Hibernate 与 Tomcat 一起使用。我只需要将 Hibernate 相关的 jar 添加到我的应用程序中,就可以将它们用于构建和运行?没有真正获得合同课程。

And*_*eas 5

编译代码时需要 servlet-api jar 文件,因为那是 eg 所在的位置HttpServletRequest。您不需要在应用程序中包含该 jar,因为您将 war 文件部署到的 Servlet 容器(例如 Tomcat)已经提供了该 jar。

对于 Tomcat,各种 servlet 类的实现catalina.jar都在 中,至少对于 Tomcat 9 来说是这样,例如,ApplicationHttpRequest实现的类是HttpServletRequest。您不需要它来编译您的代码。

  • @poolD 这是一个一般性问题,并进行了简单解释。*规范 API* 由 API 调用者使用的类型组成。这些类型通常主要是枚举、接口和抽象类,但也可以是具体类,例如值类。*实现*由实现 API 的类组成,调用者不需要直接使用任何这些类,实际上也不允许使用它们。 (2认同)