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