SDK: Was ist eigentlich ein Software Development Kit?

Software-Entwickler stehen tagtäglich vor einer Menge Herausforderungen. Abseits des reinen Programmierens gilt es unter anderem, Konzepte und Prototypen für neue Anwendungen zu entwerfen, Entwicklungsschritte zu planen und zu organisieren oder Zwischenresultate zu analysieren und Fehler bzw. Schwachstellen zu beheben. Der Trend der steigenden Komplexität von Software ist bei der Bewältigung dieser Aufgaben nur wenig hilfreich, weshalb Hilfsmittel wie Frameworks – also einsatzfertige Code-Basisgerüste – aus dem modernen Entwickleralltag nicht mehr wegzudenken sind.

Ein weiteres, unverzichtbares Werkzeug sind sogenannte Software Development Kits (SDKs), die bei der täglichen Arbeit mit Programmiersprachen sowie bei der plattformspezifischen Entwicklung und Bereitstellung von Software eine übergeordnete Rolle spielen.

Was ist ein SDK (Software Development Kit)?

Bei einem Software Development Kit, oder kurz SDK, handelt es sich um ein Paket aus Werkzeugen und Informationen, das es Entwicklern erleichtert bzw. erst möglich macht, Programme in einer bestimmten Programmiersprache, für eine bestimmte Zielplattform oder Anwendung zu entwickeln. Die Zusammenstellung und Veröffentlichung eines SDKs obliegt dabei dem ursprünglichen Entwickler der jeweiligen Sprache bzw. der jeweiligen Hard-/Software, der seinerseits ein natürliches Eigeninteresse hat, dass Drittanbieter-Software für das eigene Produkt bzw. in der geschaffenen Programmiersprache auf den Markt gelangt. In den meisten Fällen stehen Software Development Kits daher zur kostenfreien Nutzung zur Verfügung, wobei der Hersteller diese an bestimmte Regeln und Lizenzen knüpfen kann.

Definition

Software Development Kit: Ein SDK (Software Development Kit) ist eine Sammlung von Hilfsmitteln für die Entwicklung von Anwendungen für eine bestimmte Hard-/Software oder in einer bestimmten Programmiersprache. Bei einigen interpretierten Sprachen kann das SDK identisch mit der Laufzeitumgebung sein.

Welche Inhalte umfasst ein Software Development Kit?

Die Zusammensetzung eines SDKs variiert von Hersteller zu Hersteller. Für den Umfang eines Kits ist außerdem entscheidend, ob dieses für eine Sprache, ein Betriebssystem oder Hardware gedacht ist. Als Standardkomponente, die in nahezu allen Software Development Kits enthalten ist, lässt sich die API (bzw. die APIs) nennen, über die sich neue Software-Projekte auf Quelltext-Ebene anbinden lassen. Die Bereitstellung dieser elementaren Programmierschnittstelle(n) wird meist von einer umfangreichen Dokumentation begleitet, die Erklärungen zur API-Nutzung sowie weitere nützliche Informationen beinhaltet. Interessierte Entwickler können sich so schnell einen Überblick darüber verschaffen, ob und wie sich ihr geplantes Projekt realisieren lässt.

Hinweis

Einige Hersteller nutzen anstelle von SDK alternative Bezeichnungen für ihre Software-Pakete. Oracle beispielsweise nennt die Sammlung für die vertriebene Programmiersprache Java „JDK“ – Java (SE) Development Kit.

Falls es für die Entwicklung erforderlich ist bzw. den Entwicklungsprozess erheblich vereinfacht, sollte ein gutes Software Development Kit außerdem alle technischen Basiskomponenten wie Editoren, Bibliotheken, Laufzeit- und Entwicklungsumgebungen, Compiler oder Debugger (und andere Test-/Analyse-Tools, insofern vorhanden) mitliefern. Auch spezielle Treiber und Netzwerkprotokolle, die benötigt werden, fallen in diese Kategorie. In manchen Fällen fügen Hersteller den SDKs auch Beispiele oder kleinere Testprojekte hinzu, die den Einstieg erheblich vereinfachen.

Die möglichen Komponenten von Software Development Kits in der Zusammenfassung:

  • API(s)
  • Dokumentation
  • Editoren
  • Bibliotheken
  • Laufzeit- und Entwicklungsumgebungen
  • Compiler
  • Debugger
  • Treiber
  • Netzwerkprotokolle
  • Beispiele/Testprojekte

Welche Regeln bzw. Lizenzen können für SDKs gelten?

Wie bereits erwähnt, sind die meisten SDKs kostenfrei verfügbar, was vor allem daran liegt, dass neue Software für das eigene System bzw. Gerät für jeden Hersteller eine der einfachsten Möglichkeiten darstellt, den Mehrwert für Nutzer zu steigern. Besonders deutlich wird dies bei Smartphones und Tablets, denen ohne Apps von Drittanbietern wohl nur ein Bruchteil des Interesses gelten würde. Der Download und die Nutzung eines Software Development Kits kann jedoch an bestimmte Regeln geknüpft werden.

Zur Anzeige dieses Videos sind Cookies von Drittanbietern erforderlich. Ihre Cookie-Einstellungen können Sie hier aufrufen und ändern.

So ist es beispielsweise möglich, dass ein Hersteller den Zugriff auf ein SDK nur gewährt, wenn man sich verpflichtet, gewisse vertrauliche Informationen nicht weiterzugeben. Eine solche Geheimhaltungsvereinbarung (engl. non-disclosure agreement) ist insbesondere bei Software mit geheimen Algorithmen und bei Produkten im Alpha- oder Betastatus üblich. Um sicherzugehen, dass die kreierte Software nicht unter einer anderen, inkompatiblen Lizenz veröffentlicht wird, kann ein Software Development Kit außerdem mit einer Lizenz versehen werden. Dabei sind sowohl proprietäre als auch freie Lizenzen möglich, weshalb Entwickler sich noch vor Beginn ihrer Arbeit mit den zugrundeliegenden Modellen auseinandersetzen sollten, wie folgende Beispiele verdeutlichen:

  • Besitzt ein SDK eine proprietäre Lizenz, ist es für die Entwicklung von Open-Source-Software ungeeignet.
  • Ist ein Software Development Kit GPL-lizenziert (GNU General Public License), dann ist es nicht für die Entwicklung proprietärer Anwendungen geeignet.
  • Steht ein SDK unter der freien LGPL-Lizenz (GNU Lesser General Public License), dann kann es auch für Projekte mit proprietären Code-Bestandteilen verwendet werden. Diese müssen aber immer so aufgebaut sein, dass Endnutzer den quelloffenen Anteil der Software jederzeit nachvollziehen und modifizieren können.
Fakt

Open-Source-Anwendungen wie LibreOffice oder Mozilla Firefox entwickeln sich vor allem auch dank veröffentlichten Software Developments Kit stetig weiter: Sowohl Hobby- als auch Profi-Entwickler nutzen die SDKs dieser freien Programme, um neue Designs oder funktionale Erweiterungen zu programmieren und der gesamten Community zur Verfügung zu stellen.