如何区分实现和规范

How to differentiate an implementation from specification

假设我有一个简单的 servlet 程序,它只需要 Web 容器。还假设我没有使用 IDE 来编译这个程序。我可以按如下方式编译我的程序。

javac -classpath /path/tomcat/common/lib/servlet-api.jar -d classes src/Ch1Servlet.java

有人说servlet-api.jar只是规范,实现由tomcat服务器提供。这让我很困惑。

如果我使用一个库编译了一个程序,当我也运行这个程序时我仍然需要同一个库。因此在某些时候 Tomcat 必须在 运行 应用程序时使用上面指定的相同库 (servlet-api.jar)。

实现和规范的真正含义是什么?什么使代码只是规范?代码中的示例将非常有用。

Interfaces/Abstract 类 为规范做出贡献,它的实际实现是我们使用的实现。

库包含声明 - 修复方法的接口。例如

public interface SaveInterface {
  void save();
}

您使用界面来保存数据,但实现方式可能不同。 Tomcat 在此处保存内容,在此处保存另一个应用程序。一切都取决于真正的实施。但是按照您的逻辑,您并不关心它是如何实现的。你用的界面。