title: Difference between SPI and API?
body: <p>What is the difference between <a href="http://en.wikipedia.org/wiki/Service_Provider_Interface" rel="noreferrer">Service Provider Interface (SPI)</a> and <a href="http://en.wikipedia.org/wiki/Application_programming_interface" rel="noreferrer">Application Programming Interface (API)</a>?</p>
  <p>More specifically, for Java libraries, what makes them an API and/or SPI?</p>