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.ArrayList
& 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?