对于jstl标记,提供了一个API javax.servlet.jsp.jstl-api-1.2.1.jar &实现javax.servlet.jsp.jstl-1.2.1.jar。
对于servlet,在servlet-api.jar &实现jar中提供了来自tomcat或GlassFish的API。
对于集合,提供了API (如java.util.List )和相应的实现(如java.util.ArrayList和java.util.LinkedList )。
IDE Netbeans是另一个例子。
发布于 2018-01-03 09:42:00
在我的实用API设计书中,我一直主张将API与其实现分开。当时,我对简单图书馆和模块库方法都很重视。在设计NetBeans平台 API时,我们成功地使用了它们。谈到供应商库风格时,我通常会感到不安--这是Java 世界中使用的一种常见方法。
后来,我意识到最优的解决方案取决于期望的邻近的程度(参见我的详细解释)。简而言之,这取决于API作者与实现API的作者之间的关系有多密切。是同一个人吗?是一群坐下来商定规格的人吗?它们是不同的,但是我们期望库的用户比那些实现它的用户多得多?还是我们期望几乎每个用户都实现(在库中)某些东西?然后,这一问题的答案会导致:
接近性分类在某些情况下,每一种方法都很方便。然而,我一直以来最喜欢的方法是有很多很多功能齐全的模块库设计。
发布于 2017-12-28 21:43:35
1)如果将API放在不同的jar中,则不能访问实现的客户端可以使用它。例如:
2)并不是真正的单个开发人员,但是使用这样的策略来避免不同开发团队之间的冲突和不必要的依赖是很常见的。
发布于 2017-12-28 08:58:59
这是因为只有API是标准化的,多个实现是可能的,而API是一个不完整的规范。对于servlet,除了Web应用程序使用的servlets之外,还有web应用服务器(Tomcat或Glassfish)。应用服务器是一个大型程序,具有许多其他特性和API。对于Web应用程序,您的servlet不是“程序”,而是应用程序服务器。不是您的servlet委托给服务器,而是服务器委托给您的代码(在WAR中)。
https://stackoverflow.com/questions/48003567
复制相似问题