Abgrenzung begriffe sdk api framework middleware

Hallo,

es geht um die Begriffe SDK, API, Framework, Middleware.
Ich habe diverse Erklärungen dazu gelesen und erkenne nicht wirklich die Unterschiede. Sind irgendwie alles Umgebungen zur Softwareentwicklung. Wozu so viele verschiedene Bezeichnungen?
Gibt es wirklich gravierende Unterschiede oder redet man grundsätzlich immer vom Selben?

Vielen Dank
zQ 8)

SDK - Software Development Kit: ist ein Softwarepaket mit Entwicklungsumgebung und Bibliotheken

API - Application program interface: Ist die Beschreibung der Schnittstellen einer Bibliothek.

Framework: Entweder die philosophische Idee von oder eine sinnvolle Zusammenfassung von Bibliotheken, Datentypen und Algorithmen.

Middleware: ? Irgendetwas zwischen Hard- und Software, also Treiber etc.?

Ein SDK kann also ein oder mehrere Frameworks enthalten, diese haben APIs, die hoffentlich in der Dokumentation ausführlich erklärt werden. ?Wenn das SDK zur Programmierung der Steuerung irgendwelcher Geräte verwendet wird, dann kann auch Middleware dazugehören?

Gruß Lutz

es geht um die Begriffe SDK, API, Framework, Middleware.

Hallo,

machen wir’s hierarchisch:

API ist die reine Definition einer Softwareschnittstelle, also die Beschreibung der aufrufbaren Funktionen und ihrer Parameter, sowohl formal als auch welche Bedeutung Parameter und Ergebnis haben. Kann also auch nur gedruckt sein. Oder im Kopf.

Ein SDK sollte alles Nötige und Wünschenswerte für die Benutzung so eines API liefern, also z.B. Funktionsdefinitionen etwa für C,C++ usw. Der Umfang ist unterschiedlich, Dateien für Basic oder Delphi sind eher selten. Diese Dateien kann man sich natürlich anhand des API selbst schreiben, aber bei hunderten Funktionen artet das in Arbeit aus. Zusätzlich sind je nach Bedarf spezielle Linker oder Ressourcen-Umsetzprogramme enthalten, jedoch nicht der/die Compiler, schon aus Preisgründen.

Ein Framework ist ein Überbau zu einem API zur weiteren Arbeitserleichterung, indem oft gebrauchte Funktionalitäten vordefiniert werden. Z.B. werden im Windows API Scrollbalken mit einer Vielzahl von Messages gesteuert (wie die meisten anderen Dinge auch), ein Framework liefert dafür ein Objekt Scrollbalken mit möglichst einfach zu benutzenden Eigenschaften und Methoden. Darauf bauen hierarchisch weitere Objekte auf, z.B. Fenster, bei denen man nur die Eigenschaft Scrollbalken auf True setzen muss, dann hat es welche. Im Prinzip kann man ein Framework übrigens auch ohne Objekt-Orientierung schreiben, aber zeitgemäss ist das nicht mehr.

Middleware gehört hier weniger rein, das ist eher eine Erfindung der Werbung. Man bezeichnet damit Software, die den Zugriff von z.B. einem Buchungssystem auf eine andere, z.B. eine Grossrechner-Datenbank, ermöglicht. Anders gesagt, Middleware ist nur mit einer Software davor und dahinter überhaupt verwendbar und tritt im Idealfall dabei garnicht in Erscheinung. Im PC-Bereich hat zumindest der Begriff kaum Bedeutung, Techniken zum Datenbankzugriff konnte/musste man früher extra erwerben, sind aber inzwischen Bestandteil von Windows.

Gruss Reinhard

Ein SDK kann also ein oder mehrere Frameworks enthalten, diese
haben APIs, die hoffentlich in der Dokumentation ausführlich
erklärt werden.

diese Abgrenzung ist sicherlich nicht „wissenschaftlich korrekt“ ausgefeilt, aber trifft definitiv den Kern der Sache

Middleware: ? Irgendetwas zwischen Hard- und Software, also
Treiber etc.?

Wenn das SDK zur Programmierung der Steuerung
irgendwelcher Geräte verwendet wird, dann kann auch Middleware
dazugehören?

Hier kann ich nur jaein sagen. Eine Middleware hat die Aufgabe durch eine Abstraktion zwei Systeme/Programmschichten zutrennen.

Die häufigste Art der Middleware sind die MOM (Message Oriented Middleware). siehe hierzu http://de.wikipedia.org/wiki/Message_Oriented_Middle…

Middleware ist sehr oft in verteilten Anwendungen wieder zufinden und hat die Aufgabe zwischen zwei Programmen/Schichten zu vermitteln, damit jedes Programm/Schicht für sich autonom arbeiten kann. Die beide Schichten müssen nicht einmal was von der Existenz des anderen Programmes/Schicht wissen.

Dein Beispiel mit dem Treiber ist nicht unbedingt falsch, aber besser wäre in diesem Zusammenhang der HAL (Hardware Abstraction Layer) des Betriebssystemes und der Treiber einer Hardware ist ein Teil dieser HAL. Die Aufgabe der HAL ist die Trennung zwischen Hardware (Low-Level Programmierung) und den Betriebssystemkernfunktionen.