Software de­vel­op­ers 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­pli­ca­tions, de­vel­op­ment steps planned and organized, and interim results analyzed. And wherever there are errors or weak points, these also need to be resolved. The trend of in­creas­ing com­plex­i­ty 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­for­ma­tion that helps de­vel­op­ers to create programs in a certain pro­gram­ming language, for a certain platform or ap­pli­ca­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­spec­tive 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­tur­er can define certain rules and licenses.

De­f­i­n­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­pli­ca­tions for specific hardware/software or in a certain pro­gram­ming language. With some in­ter­pret­ed languages, the SDK can be identical to the run-time en­vi­ron­ment.

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

The com­po­si­tion of an SDK varies from man­u­fac­tur­er to man­u­fac­tur­er. The scope of a kit also depends on whether it is intended for a language, operating system or hardware. Standard com­po­nents 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­men­ta­tion that covers ex­pla­na­tions on how to use the API as well as other useful in­for­ma­tion. This way in­ter­est­ed de­vel­op­ers can quickly get an overview of whether and how their planned project can be im­ple­ment­ed.

Note

Instead of SDKs, some man­u­fac­tur­ers use al­ter­na­tive 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­po­nents such as editors, libraries, run-time and de­vel­op­ment en­vi­ron­ments, compilers and debuggers (as well as other test/analysis tools, if available) if they are necessary for de­vel­op­ment or sig­nif­i­cant­ly 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­vel­op­ers to get started.

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

  • API(s)
  • Doc­u­men­ta­tion
  • Editors
  • Libraries
  • Run-time and de­vel­op­ment en­vi­ron­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­re­sents one of the easiest ways for any man­u­fac­tur­er to increase added value for users. This is es­pe­cial­ly 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­tur­er may only grant access to an SDK if a user agrees not to pass on con­fi­den­tial in­for­ma­tion. Non-dis­clo­sure agree­ments are es­pe­cial­ly common for software with secret al­go­rithms and products at an alpha or beta stage. To ensure that the created software is not released under another in­com­pat­i­ble license, a software de­vel­op­ment kit can also be subject to a license. Both pro­pri­etary and free licenses are possible here. For this reason, de­vel­op­ers 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­etary 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­etary ap­pli­ca­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­etary 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­pli­ca­tions like Li­bre­Of­fice or Mozilla Firefox are con­tin­u­ous­ly being developed thanks to software de­vel­op­ment kits: Both amateurs and pro­fes­sion­al de­vel­op­ers 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