Plattformunabhängigkeit

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 26. April 2016 um 09:32 Uhr durch 9ai877 (Diskussion | Beiträge) (→‎Einschränkungen: hauptsächlich +betriebssystemübergreifend). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Die Plattformunabhängigkeit, genauer als plattformübergreifend wird – in der Informationstechnik – die Eigenschaft genannt, wenn ein Programm auf verschiedenen Plattformen ausgeführt werden kann.

Einschränkungen

Ein Programm benötigt in der Regel immer eine sogenannte Laufzeitumgebung, in der es ausgeführt (oder gestartet) werden und stabil – über den gesamten Ausführungszeitraum hinweg – lauffähig sein kann. Mit der Eigenschaft plattformunabhängig oder – etwas genauer – plattformübergreifend werden Programme näher beschrieben, die auf verschiedenen Plattformen – also Rechnersystemen mit Unterschieden in Architektur, Prozessor, Übersetzer, Betriebssystem (in diesem Fall auch betriebssystemübergreifend genannt) und weiteren Dienstprogrammen, die zur Übersetzung oder Ausführung notwendig sind – lauffähig sind. Der Grad der Plattformunabhängigkeit wird auch als Portabilität bezeichnet (aus englischen portability). Darunter wird nicht nur die bestehende Plattformunabhängigkeit, sondern auch der eingeschätzte Arbeitsaufwand verstanden, der benötigt würde, um ein Programm in ein plattformübergreifendes umzuwandeln. Dieser Vorgang wird auch Portierung oder Migration genannt.

Formen

Es gibt verschiedene Formen von Plattformunabhängigkeit:

Webanwendungen, welche vom Browser ausgeführt werden.
Hierbei ist das Betriebssystem egal, es muss nur über einen bestimmte Voraussetzungen erfüllenden Webbrowser verfügen.
Hybrid-Apps
Anwendungen, die unabhängig von der Plattform auf jedem Betriebssystem und jedem mobilen Endgerät ausgeführt werden können.
Multi-Channel-Apps
Anwendungen, die unabhängig von Endgerät und Betriebssystem ausgeführt werden können. Diese Geräte können sowohl mobil als auch, im Unterschied zu den Hybrid-Apps, stationär sein.
In Zwischencode vorliegende Software
Programme, die entweder in Form von Bytecode, wie hauptsächlich Java-Programme, oder eines portablen, interpretierbaren Quellcodes (Python, Perl, PHP und andere) vorliegen.
Fat Binaries und Universal Binaries
Programmpakete, die mehrere lauffähige Versionen enthalten. Das Betriebssystem startet ohne Zutun des Anwenders die passende Version. Beispiele für „fat binaries“ sind das OpenStep-Programmformat und die „fat binaries“ unter Mac OS, die sowohl auf Motorola-680x0-basierten Apple-Rechnern als auch auf PowerPC-Macs ausführbar sind. Universal Binaries unter Mac OS X laufen sowohl auf PowerPC als auch auf x86-32-Bit oder x86-64-Bit. Voraussetzung dafür, dass eine „fat binary“ überhaupt erstellt werden kann, ist die Portabilität des Quellcodes, insbesondere bezüglich der Byte-Reihenfolge ("endianess") und der Länge einer Zeigervariable.
Quellcode-Portabilität
Diese Form der Plattformunabhängigkeit ist häufig bei C-Programmen für Unix anzutreffen: Der Quellcode enthält Anweisungen, die es erlauben, die Betriebssystemunterschiede auszugleichen. Es existieren reichlich Hilfsmittel zu diesem Zweck, wie zum Beispiel GNU Autoconf. Eine weitere Möglichkeit ist die Verwendung systemunabhängiger Bibliotheken, wie Qt und GTK+. Viele im Quellcode portable Programme stehen bereits in vorgefertigten Versionen plattformübergreifend bereit.
Eingeschränkte Plattformunabhängigkeit
ist gegeben, wenn zum Beispiel das Programm nur auf einem bestimmten Prozessortyp lauffähig ist, aber auf ansonsten verschiedenen Hardware-Architekturen. Dies ist häufig bei in Assemblersprachen geschriebenen Programmen der Fall, wie man sie in den frühen Zeiten der Microcomputer unter CP/M oft antraf; heute wird Assemblersprache meist nur noch für besonders zeitkritische Programmstellen verwendet, und zwecks Plattformunabhängigkeit ist meist noch eine hochsprachliche Version der gleichen Programmfunktionen beigegeben. Auch Programme, die unabhängig vom CPU-Typ nur auf einer bestimmten Betriebssystem-Familie funktionieren sind eingeschränkt plattformunabhängig.

Im Server-Bereich, wo schon sehr früh mit virtuellen Maschinen und virtuellen CPUs gearbeitet wurde, sieht es beim Thema Plattformunabhängigkeit etwas anders aus, als man es von klassischen Unix-/Linux-Portierungen her kennt – letztere fassen zwar zunehmend im Desktop-Bereich Fuß, verursachen durch die starke Ausrichtung auf x86-PCs in Sachen Plattformunabhängigkeit allerdings oftmals eher mehr Kopfzerbrechen als klassische Unix-Anwendungen.

Heute wird eine relative Plattformunabhängigkeit am häufigsten durch die Verwendung von Laufzeitumgebungen von Sprachen wie Java oder .NET erzielt. Allerdings wird diese scheinbare Unabhängigkeit wiederum durch eine Abhängigkeit von der Laufzeitumgebung erkauft, die nunmehr im Kern die Plattform ist.

Allerdings trifft der Begriff „Portabilität“ in beiden Fällen nicht den Kern der Sache, da es sich von Beginn an um plattformunabhängige Konzepte handelte – also auch alle APIs auf jedem Zielsystem im Vorhinein so nachgebildet werden müssen, dass die Software zwangsläufig lauffähig ist. Ansonsten wäre beispielsweise eine Java VM nicht zertifizierungsfähig. Die Laufzeitumgebungen selbst sind auch nicht auf jeder Plattform verfügbar, was zum Beispiel im Fall von .NET zu Entwicklungen wie der des Mono-Projektes geführt hat. Portierungen sind aus lizenz- oder patentrechtlichen Gründen meist gar nicht möglich, daher kann man ebenso nur von einer Form von eingeschränkter Plattformunabhängigkeit sprechen.

Portabilitätsmetriken

Die Portabilität kann zum Beispiel geschätzt werden über: P = 1−(Ü+A)/E[1]

Ü Übertragungsaufwand (insbesondere Neukompilierung)
A Anpassungsaufwand (Änderung des Quellcodes z. B. bei Austausch von Betriebssystemschnittstellen)
E Entwicklungsaufwand für Neuentwicklung

Dabei entspricht eine Portabilität von 1 der Kompatibilität, das Programm ist also ohne Änderung auf dem Zielsystem lauffähig; liegt Quellcode-Portabilität vor, ist in der Regel ein Ergebnis von > 90 % zu erwarten; wohingegen eine Portabilität nahe 0 eine Neuentwicklung des Programmes nahelegt. Portabilität ist kein Maß für die Lauffähigkeit eines Programmes auf der Zielplattform, d. h. selbst eine Portabilität von 99 % bedeutet nicht unbedingt, dass das Programm nutzbar ist, es bedeutet lediglich, dass eine Portierung im Vergleich zu einer Neuentwicklung deutlich weniger Aufwand erfordert.

Siehe auch

Weblinks

Wiktionary: plattformunabhängig – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Einzelnachweise

  1. Dr.-Ing. Günter Rothhardt, "Praxis der Softwareentwicklung", 2. unveränd. Aufl. 1988, VEB Verlag Technik Berlin, Kapitel 2, Seite 139