For jstl tags, an API
javax.servlet.jsp.jstl-api-1.2.1.jar & implementation
javax.servlet.jsp.jstl-1.2.1.jar are provided.
For servlets, an API in
servlet-api.jar & implementation jar from tomcat or GlassFish are provided.
For collections, API like
java.util.List & corresponding implementations like
java.util.LinkedList are provided.
IDE Netbeans is another example.
Implementation jar includes both the API(mostly interfaces) and its implementation, What are the advantages in providing a solution with an API JAR and their corresponding implementations(a separate JAR), for programmers/developers to use?
For developing enterprise applications using java, Is providing an API the standard approach for stable contract between developers?