What is an SDK?

Copy URL

A software development kit (SDK) is a set of tools provided by the manufacturer of (usually) a hardware platform, operating system (OS), or programming language.

Check out this open source SDK

SDKs help software developers create applications for that specific platform, system, or programming language. Think of it kind of like a toolkit, or the plastic bag of tools that comes packaged with the parts of a dresser you’ve bought to assemble yourself—only for app development. You have the building blocks—or development tools—you need to get the job done, and what’s included in the kit varies from manufacturer to manufacturer. 

Typically, a basic SDK will include a compiler, debugger, and application programming interfaces (APIs), but they can also include any of the following:

A good SDK will supply any components a developer might find necessary when creating new applications for that specific product and its ecosystem. Some SDKs will also include an example or basic test project to help developers get started as quickly as possible.

Some examples of software development kits are the Java development kit (JDK), the Windows 7 SDK, the MacOs X SDK, the Android SDK, and the iOS SDK. As a specific example, the Kubernetes operator SDK can help you develop your own Kubernetes operator. It contains high-level APIs, tools for scaffolding and code generation, and extensions to cover common operator use cases. 

Benefits

SDKs help developers increase productivity by providing the following:

  • Simpler integrations: SDKs simplify the complexity of integrations by simplifying standard processes, such as creating authorization signatures and interpreting SMS messages in native languages or platforms.
  • Documentation and instructions: SDKs provide built-in support and expertise with written code and support documentation, tutorials, and more, removing the need to search for answers or outsource. 
  • Cost savings: SDKs built within apps offer cost savings because of their shorter development cycles. The integrations also don't require specialized technical skills, allowing your team to perform in-house integrations.
Learn more about how Kubernetes operators work and how to build them

Red Hat resources

An API is included in most SDKs in order to connect new mobile apps or projects at the source-text level, in the command line. APIs let your product or service communicate with other products and services without having to know how they’re implemented. This can simplify app development, saving time and money. They also often include code samples, which give developers example programs and libraries to help them learn how to build basic programs. From there, they can move on to optimization and developing complex apps more easily, as well as debugging and adding new features as needed.

Some SDKs include documentation on how to use the APIs, as well as tutorials, FAQs, and sample graphics—since it can sometimes take a while for a developer to learn how to use a new SDK. For this reason, an intuitive programming or user interface (or more extensive documentation) is helpful in encouraging developers to use one company’s particular program instead of a competitor’s option.

Similarly, an SDK can be a great way for a company to introduce developers to their product and encourage them to create apps using their platform or OS, in real time, in an integrated development environment. For this reason, most SDKs are free to use—a developer can just download it and start programming immediately. 

Some SDKs may have rules or agreements that must be acknowledged and submitted before they can be used—especially for new products in an alpha or beta stage—or for software with algorithms that aren’t disclosed to the public (not open source). An SDK can also be subject to a license agreement, so that the software that’s created doesn’t get released under an incompatible license.

A developer needs to take these things into consideration when choosing which SDK to start working with. For instance:

  • An SDK with a proprietary license is incompatible with the development of open source software.
  • SDKs with a General Public License (GPL) won’t work for developing proprietary apps
  • There are caveats to working around a Lesser General Public License (LGPL) for projects with proprietary code elements. 

Open source applications are developed continuously, by amateurs and professionals, because their SDKs allow for the coding of new designs and functionality expansions, which are then shared with the rest of the community. 

Red Hat brings together the best tool, solutions, and service in application development, and we do it the open source way. Whether you’re searching for a platform to build your app on (Red Hat OpenShift), a runtime environment to build them in (Red Hat Runtimes), or a development environment with all the tools needed to develop, debug, test, and deploy applications, Red Hat has you covered.

To securely and quickly build and manage applications, Developers and DevOps can use Red Hat OpenShift Container Platform. Operators are among the most important components of the OpenShift Container Platform. They are the preferred method of packaging, deploying, and managing services on OpenShift, and as a developer, you can install operator SDK command-line interface (CLI) to create Go, Ansible, or Helm-based operators. 

Hub

The official Red Hat blog

Get the latest information about our ecosystem of customers, partners, and communities.

All Red Hat product trials

Our no-cost product trials help you gain hands-on experience, prepare for a certification, or assess if a product is right for your organization.

Keep reading

What is serverless?

Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers.

Stateful vs stateless applications

The difference between stateful and stateless applications is that stateful applications save past and present information while stateless applications don’t.

What is application migration?

Application migration is a process that can improve workloads by moving an application from one environment to another.

Application development and delivery resources