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.
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:
- Runtime/development environments
- Testing/analysis tools
- Network protocols
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, and the iPhone 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.
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. 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 to 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 CodeReady Studio), Red Hat has you covered.