What Are SDKs?
• Understand what a SDK is
• Understand what is in a SDK
• Understand the purposes and benefits of using a SDK
• Become familiar with examples of SDKs
• Learn about the differences between SDKs and APIs
Wouldn’t it be great if there were an easy way to grab all of the tools, documentation, examples, and other resources you need to develop a certain type of application?
Well, there is. It’s called a Software Development Kit, or SDK. By packing key resources for specific application development use cases into a single location, SDKs help developers work more efficiently.
Keep reading for an overview of how SDKs work, why they’re beneficial, and how they are similar to and different from other types of developer resources, such as APIs.
What Is a SDK?
A SDK is a package that contains various types of resources that are necessary for building a certain type of application.
Note that we’re using the term “package” here loosely. SDKs are not packages that can be installed on a computer, and there is no specific format that developers need to use when creating SDKs. They are often packaged as .zip files that programmers can download to their Integrated Development Environment (IDE) like Android Studio, IntelliJ, or Eclipse, but SDKs could also be hosted in a Git repository.
What Is a SDK?
The specific resources included in a SDK can vary from one SDK to another. But typically, SDKs include components such as:
- Software libraries that support a specific application type or use case
- Documentation to help guide developers in building a certain type of application.Code examples or samples, which can also help guide developers
- Tools for building, running, testing, and/or deploying a certain type of application
It’s important to note that SDKs aren’t typically intended to include everything you would need to create a specific type of application. Developers usually need other tools that aren’t part of a SDK – such as an Integrated Development Environment (IDE), source code managers, and Continuous Integration (CI) servers. SDKs provide some helpful programming resources, but they are not complete development kits unto themselves.
What Are the Purpose and Benefits of a SDK?
In general, the purpose of SDKs is to make it easy for developers to acquire the tools, code, information, and other resources they need to build a certain type of application.
SDKs are often provided by software or platform vendors who want to make it easier for third-party developers to build software that interacts with their platform. However, businesses could also create SDKs for internal use. In that case, SDKs would serve to help developers inside the organization build applications for specific environments or use cases that serve the organization.
SDKs benefit developers in a few key ways:
- Convenience: SDKs save developers from having to manually find and download important development tools. With a SDK, developers get important resources in a single, convenient package.
- Guidance: SDKs can be useful for helping developers follow certain practices or adhere to specific standards if the tools, documentation, and other resources inside a SDK enforce those standards.
- Consistency: Along similar lines, SDKs help ensure some level of consistency in the way applications are developed. When most or all developers use the same tools and documentation, they will tend to design and implement their applications in a similar way. As a result, there is more predictability within the ecosystem in which the developers work.
Examples of a SDK
SDKs can be used in a wide variety of contexts. As examples of SDKs in the real world, however, consider the following common SDK use cases:
- Cloud development: Public cloud vendors often supply SDKs to help developers build applications that run on their platforms. In many cases, the SDKs target a specific type of cloud service (like a cloud vendor’s object storage service or VM hosting service).
- Mobile application development: Mobile platforms, including iOS and Android, offer SDKs designed to simplify the development of applications on those platforms.
- Language-specific SDKs: Many programming languages and development frameworks feature SDKs, which contain resources designed to help developers build software in that language. For example, the Java Development Kit, or JDK, contains various tools to help build, test, and document Java applications.
SDKs vs. APIs
SDKs are sometimes compared to Application Programming Interfaces, or APIs. Like SDKs, APIs are an important resource for helping developers to build software that interacts with a specific platform or serves a certain purpose. Also like SDKs, APIs can be used both externally (to facilitate integrations between a given platform and third-party apps) or internally (to help applications or services within an organization, or sometimes even with the same application, connect to each other).
However, SDKs and APIs are fundamentally different types of resources. An API is a way for applications or services to interact, whereas a SDK is a resource that helps developers create applications.
SDKs vs. Software Libraries
SDKs are also similar in some respects to software libraries. But here again, there is a clear difference.
A software library is a collection of code or other files that can be imported into, called by, or otherwise used by an application when the application runs. A SDK, in contrast, is a collection of various other types of resources. SDKs can (and often do) include software libraries, but they also frequently contain other types of resources (like documentation or software testing tools) that aren’t part of software libraries.
An SDK Standardizes Applications
You don’t need to use a SDK. There is nothing stopping you from going out and building an application totally from scratch.
But in most cases, SDKs save time and effort while also making it easy to adhere to standards and design applications consistently. If a SDK is available for the platform or ecosystem in which you work, it’s very likely that you’ll benefit from using it.