Software de­velopers face all sorts of chal­lenges in their daily work. Besides pure pro­gram­ming, concepts and pro­to­types must be designed for new ap­plic­a­tions, de­vel­op­ment steps planned and organised, and interim results analysed. And wherever there are errors or weak points, these also need to be resolved. The trend of in­creas­ing com­plex­ity in software only makes these tasks more difficult. That’s why modern de­vel­op­ment work can scarcely be imagined without aids like frame­works – ready-made code struc­tures.

Another essential tool is software de­vel­op­ment kits (SDKs), which play a central role in typical work with pro­gram­ming languages as well as the platform-specific de­vel­op­ment and provision of software.

What is an SDK (Software De­vel­op­ment Kit)?

A software de­vel­op­ment kit, or SDK for short, is a package of tools and in­form­a­tion that helps de­velopers to create programs in a certain pro­gram­ming language, for a certain platform or ap­plic­a­tion – or even enables them to do so in the first place. Compiling and releasing an SDK is up to the original developer of the re­spect­ive language or hardware/software, who in turn has a natural interest in helping third-party software for their product or pro­gram­ming language to enter the market. In most cases, software de­vel­op­ment kits are therefore available to use for free, although the man­u­fac­turer can define certain rules and licenses.

Defin­i­tion: Software De­vel­op­ment Kit

Software De­vel­op­ment Kit: An SDK (software de­vel­op­ment kit) is a col­lec­tion of tools for de­vel­op­ing ap­plic­a­tions for specific hardware/software or in a certain pro­gram­ming language. With some in­ter­preted languages, the SDK can be identical to the run-time en­vir­on­ment.

What Does a Software De­vel­op­ment Kit Contain?

The com­pos­i­tion of an SDK varies from man­u­fac­turer to man­u­fac­turer. The scope of a kit also depends on whether it is intended for a language, operating system or hardware. Standard com­pon­ents contained in almost all software de­vel­op­ment kits include the API (or APIs) for con­nect­ing new software projects at the level of the source text. These pro­gram­ming in­ter­faces are typically provided with extensive doc­u­ment­a­tion that covers ex­plan­a­tions on how to use the API as well as other useful in­form­a­tion. This way in­ter­ested de­velopers can quickly get an overview of whether and how their planned project can be im­ple­men­ted.

Note

Instead of SDKs, some man­u­fac­tur­ers use al­tern­at­ive names to refer to their software packages. For example, Oracle calls its col­lec­tion for the dis­trib­uted pro­gram­ming language Java “JDK” – Java (SE) De­vel­op­ment Kit.

A good software de­vel­op­ment kit should also be supplied with all technical core com­pon­ents such as editors, libraries, run-time and de­vel­op­ment en­vir­on­ments, compilers and debuggers (as well as other test/analysis tools, if available) if they are necessary for de­vel­op­ment or sig­ni­fic­antly simplify the de­vel­op­ment process. Likewise, special drivers and network protocols that are required should also be included. In some cases, man­u­fac­tur­ers also add examples or small test projects to their SDKs in order to make it as easy as possible for de­velopers to get started.

Here’s a summary of the com­pon­ents that may be found in software de­vel­op­ment kits:

  • API(s)
  • Doc­u­ment­a­tion
  • Editors
  • Libraries
  • Run-time and de­vel­op­ment en­vir­on­ments
  • Compilers
  • Debuggers
  • Drivers
  • Network protocols
  • Examples/test projects

What Rules or Licenses Might Apply to SDKs?

As mentioned above, most SDKs are available for free. This is primarily because new software for a system or device rep­res­ents one of the easiest ways for any man­u­fac­turer to increase added value for users. This is es­pe­cially evident with smart­phones and tables, which would only garner a fraction of the interest they have without third-party apps. However, certain rules may be tied to the download and use of software de­vel­op­ment kits.

For example, a man­u­fac­turer may only grant access to an SDK if a user agrees not to pass on con­fid­en­tial in­form­a­tion. Non-dis­clos­ure agree­ments are es­pe­cially common for software with secret al­gorithms and products at an alpha or beta stage. To ensure that the created software is not released under another in­com­pat­ible license, a software de­vel­op­ment kit can also be subject to a license. Both pro­pri­et­ary and free licenses are possible here. For this reason, de­velopers should consider the un­der­ly­ing models before they start their work – as shown by the following examples:

  • If an SDK has a pro­pri­et­ary license, it is un­suit­able for de­vel­op­ing open-source software.
  • In turn, software de­vel­op­ment kits with a GNU General Public License (GPL) are not suitable for the de­vel­op­ment of pro­pri­et­ary ap­plic­a­tions.
  • A software de­vel­op­ment kit provided under the free GNU Lesser General Public License (LGPL) can also be used for projects with pro­pri­et­ary code elements. However, these kinds of projects must always be created in a way that permits end users to view and modify the open-source component of the software at any time.
Fact

Open-source ap­plic­a­tions like Lib­reOf­fice or Mozilla Firefox are con­tinu­ously being developed thanks to software de­vel­op­ment kits: Both amateurs and pro­fes­sion­al de­velopers use the SDKs of these free programs to code new designs or func­tion­al ex­pan­sions, which they then make available to the whole community.

Go to Main Menu