Service provider interface

Service provider interface (SPI) is an API intended to be implemented or extended by a third party. It can be used to enable framework extension and replaceable components.

Details
From Java documentation:

The concept can be extended to other platforms using the corresponding tools. In the Java Runtime Environment, SPIs are used in:


 * Java Database Connectivity
 * Java Cryptography Extension
 * Java Naming and Directory Interface
 * Java API for XML Processing
 * Java Business Integration
 * Java Sound
 * Java Image I/O
 * Java File Systems