以 Servlet 规范(版本无关)为例。它附带了一个描述规格的大型 PDF 文件。它的 API(接口和类)属于
javax.servlet.*
包结构,我们作为程序员使用它们。例如,在编写 Servlet 时,我们经常extends javax.servlet.http.HttpServlet
。
我的问题:API 类和接口 (
javax.servlet.*
) 是“特定于供应商的”(由 servlet 容器的每个供应商实现)还是规范本身的一部分(因此仅由每个 servlet 容器供应商使用) ?
或者,规范实际上总是附带一个参考实现(RI),它由规范成员创建并可以免费使用(在某些地方 - 例如抽象类中的方法实现 - 可以自由修改)?
这些软件包是规范的一部分,因此不是特定于供应商的。这样做的好处是您可以编写与实现无关的代码,即它可以在实现该规范的任何容器中运行。如果一种实现有错误,您可以转移到新的实现,而无需对源代码进行任何更改。
看看这个问题。