API vs. Library vs. SDK
There’s a lot of different acronyms and frequently overlapping acronyms used in developer’s world, and here I note the most common:
- API. An API (Application Programming Interface) is a set of protocols, functions and definitions for building software. Traditionally an API defined abstractions: expected inputs and outputs for software and was implemented in concrete form in a library.
- Library. Actual implementation of an API, a library is generally embedded within the code that is using the API, but it may be separate and shared by multiple applications; these are called dynamic shared libraries and are widely used by Operating Systems like Windows and MacOS to provide developers access to different types of services.
- SDK. SDKs (Software Development Kits) are generally considered in some way higher level than simply libraries, perhaps including multiple libraries, or different tools to make use of libraries easier, multiple language bindings, or so-called “wrappers” that can hide from programmers some of the complexity involved in using the library, by trading off simplicity for flexibility.