Plattform (Computer)

Eine Computerplattform (auch -schicht oder -ebene, kurz Plattform) bezeichnet in der Informatik eine einheitliche Grundlage, auf der Computerprogramme ausgeführt und entwickelt werden können.
Eine Plattform ist eine Komponente eines Rechnersystems und befindet sich im Verbund mit weiteren Komponenten. Dabei kann es sich um die Hardware oder das Betriebssystem (OS), sogar um einen Webbrowser und die zugehörigen Programmierschnittstellen oder andere zugrunde liegende Software handeln, solange das Computerprogramm damit ausgeführt wird.
Für die betrachtete Plattform selbst sind die weiteren Komponenten des Rechnersystems, in dem sie arbeitet, nicht sichtbar. Eine Plattform kann aufgrund dieser Abstraktion auf unterschiedliche Rechnersysteme übertragen werden und arbeiten (siehe grafische Darstellung). Die interne Komplexität des Computersystems wird hierbei mit Hilfe von Softwaretechnik erhöht, was vereinfachte Nutzung durch menschliche Anwender zur Folge hat.
Bestandteile bzw. Abstraktionsebenen einer typischen Plattform sind: Rechnerarchitektur, Softwarestack, Laufzeitumgebung, Programmiersprache.
Zielsetzung und Methoden
[Bearbeiten | Quelltext bearbeiten]Die Idee hinter einer Plattform ist Abstraktion und Vereinfachung.
Erreicht werden kann diese Vereinfachung dadurch, dass dem Anwendungsentwickler ein abstrakteres Funktionsmodell von konkreter Funktionalität zur Verfügung gestellt wird, typischerweise in Form einer Programmierschnittstelle (eng. API), welche darunter liegende Funktionalität einhüllt. Für die resultierende Anwendung geschieht das typischerweise in Form einer dynamisch interpretierten Laufzeitumgebung (z. B. JRE, Browser) oder einer binären ABI zu bekannten Softwarefunktionen.
Eine Qualität, die diese Abstraktionsschichten bieten können, ist Allgemeingültigkeit, üblicherweise als Kompatibilität bezeichnet. Das kann sich auf die Breite, also die Menge der verschiedenartigen, abstrahierten Details beziehen, wie auch auf die Stabilität der Plattform über die Zeit. Bei der Kompatibilität über die Zeit kann die Sicherstellung der Abwärtskompatibilität bei einer Weiterentwicklung einer Plattform gemeint sein oder auch die Zusicherung des Herstellers, dass mit dem Aufkommen neuer abstrahierbarer „Details“ (z. B. neue Betriebssysteme, neue Hardware) diese in die Plattform integriert werden (Aufwärtskompatibilität).
Plattformarten
[Bearbeiten | Quelltext bearbeiten]Bei Plattformen kann zwischen Soft- und Hardwareplattformen unterschieden werden.
Hardwareplattform
[Bearbeiten | Quelltext bearbeiten]Eine Hardwareplattform, auch Maschinenebene genannt, bezeichnet eine bestimmte Rechnerart oder eine [Prozessor]-Familie. Die Maschinenebene ist hauptsächlich durch eine bestimmte Rechner- oder Prozessorarchitektur gegeben und liegt logisch betrachtet ganz unten – unter der Anwendungsebene.
Eine Prozessorarchitektur-Plattform verwendet eine einheitliche Maschinensprache, Datenwortgröße, Byte-Reihenfolge usw. Ein Beispiel dafür ist die weitverbreitete x86-Architektur.
Wie die einzelnen Befehle dieser Maschinensprache intern im Mikroprozessor verarbeitet werden (z. B. mit Micro-ops), kann sich aber innerhalb der gleichen Plattform stark unterscheiden. Nur die Endergebnisse, welche die Befehle liefern, bleiben dieselben.
Hardwareplattformen können grob in CISC- und RISC-Architekturen eingeteilt werden. Bei aktuellen Prozessorarchitekturen verwischen sich aber die Grenzen zwischen diesen beiden Architekturtypen zusehends.
Softwareplattform
[Bearbeiten | Quelltext bearbeiten]Die sogenannten Software-Plattformen, auch Anwendungsebene genannt, werden wie folgt unterschieden.
Binärschnittstellen-basierte Plattform
[Bearbeiten | Quelltext bearbeiten]Kompatibilität über die Zeit lässt sich beispielsweise über stabilgehaltene Binärschnittstellen von Funktionsbibliotheken erreichen, mit denen auf die Plattform zugegriffen wird. Bei einer Weiterentwicklung der Plattform muss ausschließlich der Plattformanbieter dafür Sorge tragen, dass die Kompatibilität erhalten bleibt. Dieser muss dann die neue Version seiner Plattformbibliothek verbreiten, Änderungen am Anwendungsprogramm (Neukompilierung oder Anpassung) durch Anwendungsentwickler oder Konfigurationsänderungen durch Anwender sind nicht notwendig.
Quellcode-basierende Plattform
[Bearbeiten | Quelltext bearbeiten]Neben dem obigen Konzept einer auf Binärkompatibilität basierenden Plattform, welches eine weitergehende Lauffähigkeit von einmal erstellter Software ermöglicht, existiert noch das Konzept der Kompatibilität über die Portierbarkeit des Quellcodes eines Anwendungsprogramms. Hier wird keine langfristige oder breite Lauffähigkeit der Anwendungsprogramm-Kompilate garantiert,[1] sondern eine Kompilierbarkeit mit einer weiten Palette an unterliegender Hardware, Programmbibliotheken und Software-APIs, auch Plattformunabhängigkeit genannt. Nachteile sind, dass der Vorgang des Kompilierens dann häufiger und vor allem durch den Anwender oder Anwendungsentwickler durchgeführt werden muss, ein manchmal komplexer und fehlerträchtiger Vorgang. Auch die Erstellung portabler Software für eine solche Plattform ist ein Problem.[2] Ebenso kann die Notwendigkeit, dass der Quellcode beim Anwender vorliegen muss, ein Hindernis sein, da beispielsweise bei proprietärer Software eine Offenlegung von diesem unüblich ist. Deshalb ist dieses Konzept der Quellcode-basierenden Kompatibilität vor allem im Open-Source-Bereich und bei unixähnlichen Betriebssystemen dominierend, die Binärkompatibilität dagegen beispielsweise bei Windows[3][4] oder den Mac-Betriebssystemen.[5]
Betriebssystem als Plattform
[Bearbeiten | Quelltext bearbeiten]Beispielsweise ermöglicht es eine Softwareplattform – wie die Win32-API und andere ähnliche in Betriebssysteme integrierte Schnittstellen – Softwareentwicklern, Anwendungen zu schreiben, die auf veränderlicher Hardware, wie Prozessoren unterschiedlicher Hersteller, verschiedenen Grafikkarten, verschiedenen