Hi there! My name is Alex Sokolov. I'm a senior engineering manager at iTechArt Group. Within my working experience, I've faced with a challenge to choose between SDK and API numerous times. I've decided to write this post to clarify the difference between SDK and API, as people are confused with defining these two notions too often.
So, what is a SDK?
A SDK (Software Development Kit) is a set of development tools such as libraries, various utilities (both CLI and GUI), documentation, code samples, etc. that help developers build applications for a certain platform. SDK’s main constituents are libraries that can integrate one or more platform APIs and usually contain configurable and reusable components. Different SDK utilities (if available in SDK) can simplify a developer’s life even further by automating development processes.
What is an API?
An API (Application Programming Interface) is an interface designed for the interaction between different apps, programs, or platforms. It’s more a set of methods for app-to-app communication than a set of tools for creating a new solution. The communication between apps is performed by a set of rules that specify data structures, routines, protocols, etc. Being a set of tools for application development, SDKs often include one or more APIs, along with code samples, libraries, and other components. The difference between SDKs and APIs can be summed up as follows: “All SDKs contain APIs, but not all APIs are part of SDKs.”
When to use SDK and API?
Developers always use SDKs when building an application. Moreover, there are SDKs designed specifically for a certain platform, such as Android SDK or Azure SDK.
An API is used for communication with external applications and/or platforms by means of various methods and protocols.
For example, to integrate a .NET application with a particular Azure service (for example, a file storage), it’s possible to use either their Web API (by using HTTP requests to a certain URL) or .NET libraries (which is easier, as there is no need to deal with direct HTTP requests.)
In summary, when developing any type of software application, an engineer will use SDKs. When communication with other third-party service providers (applications/platforms) is required, API integration will be used, which sometimes can be a part of SDK.
Top comments (0)