Tomcat API与其他API

时间:2016-07-12 04:46:54

标签: java oracle api tomcat servlets

我最近一直在学习Tomcat和servlets。现在我开始意识到Oracle APITomcat API至少有些不同。我知道Oracle API应该更广泛,但即使在Tomcat操作的限制内,它们似乎也有完全不同的包等。

这看似愚蠢,但我找不到任何答案。有人可以解释一下这些差异吗?实际上,如果我构建一个在Tomcat下运行的服务,它是否也可以在Glassfish中运行,而不需要重构进口?

---编辑---

所以,显然我误认为Tomcat API for Servlet API等。

enter image description here

解决方案不是要查看上面镜头中的Tomcat Javadoc,而是查看Servlet Javadoc或其他任何问题。图片中的列表位于左侧的Apache Tomcat 8 Documentation Index,稍微向下。

谢谢Andreas和EJP。

1 个答案:

答案 0 :(得分:2)

Java Enterprise Edition

您所谓的“Oracle API”实际上是Java Enterprise Edition (Jave EE)规范。我建议你避免使用你的用词不当。

Java EE是在Java标准版(Java SE)之上分层的大量各种技术的大量集合。 Java EE的各种实现支持不同的部分,不一定都支持所有部分。

技术子集

Apache Tomcat项目,以及Eclipse Jetty项目和others类似,故意只实施这些技术:

这些API只是Java EE的一个小而重要的子集。

您链接的Tomcat API特定于Tomcat的实现。开发人员很少会通过该API。相反,我们坚持使用Servlet,JSP,EL和WebSocket规范发布的接口,这些接口都作为JSR发布。坚持规范意味着您的Web应用程序可以部署在其他实现上,以便在需要时替代Tomcat。

diagram showing nested subsets of Java EE, Web Profile, Web containers, and distinct from that is the Tomcat-specific API

网络个人资料

Java EE Web Profile是包含Servlet和JSP API along with several more的规范,但仍然是all the possible Java EE technologies的子集。 Apache TomEE是Web Profile的一个实现,它以Tomcat开头并添加更多库。另一个例子是Glassfish,它在either a complete Java EE edition or a stripped-down Web Profile edition中可用。请参阅问题What is different about the Java EE packages? (SDK/normal vs Web Profile)

“完整”实施

Some products实现所有(或接近)Java EE规范。

有时这被描述为“完整”实现。我认为该标签具有误导性,因为它意味着缺少子集实现或缺少所需的东西。恰恰相反。您应该始终使用最简洁的实现,其中仅包含您需要的部分。负载较重的服务器需要更多内存,启动和停止速度更慢,并且可能需要更多资金。例如,我在Mac OS X上仅在Java 8标准版(SE)上使用带有Vaadin 7的Apache Tomcat 8构建和部署高度交互式桌面样式的Web应用程序。

还要记住,许多Java EE技术可以独立,与完整的Java EE实现分开。因此,您可以从更精简的实现开始,然后为您需要的几项单独技术添加库。例如,通过添加Bean Validation的JAR文件,可以在Tomcat上使用an implementation