| Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Bitte entferne zuletzt diese Warnmarkierung. |
Plattformunabhängigkeit ist die Eigenschaft eines Programms, auf verschiedenen Computersystemen mit Unterschieden in Architektur, Prozessor, Compiler, Betriebssystem und weiteren Dienstprogrammen, die zur Übersetzung notwendig sind, lauffähig zu sein. Der Grad der Plattformunabhängigkeit wird als Portabilität bezeichnet (vom englischen „portability“). Dabei versteht man darunter nicht nur die bestehende Plattformunabhängigkeit, sondern auch den eingeschätzten Arbeitsaufwandes, der benötigt würde, um das Programm in ein vollständig plattformunabhängiges umzuwandeln. Dieser Vorgang wird Portierung genannt (siehe auch Migration (Informationstechnik)).
Es gibt verschiedene Formen von Plattformunabhängigkeit:
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.
Heutzutage wird eine relative Plattformunabhängigkeit am häufigsten durch die Verwendung von Laufzeitumgebungen von Sprachen wie Java oder .NET erzielt. Allerdings trifft der Begriff „Portabilität“ 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 z. B. 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.
Der Grad der Portabilität ist umgekehrt proportional zum Aufwand, das Computerprogramm auf einer anderen Plattform zum fehlerfreien Laufen zu bringen. 100-prozentige Portabilität ist dann gegeben, wenn der Aufwand 0 Stunden beträgt. Ein hoher Grad an Portabilität ist dann vorhanden, wenn das Programm mit nur wenigen Stunden Aufwand oder ohne Aufwand, aber mit nur gering eingeschränkter Funktionalität auf der anderen Plattform läuft. Maximale Portabilität bedeutet also, wenn ein Programm ohne Funktionsverlust vom Quell-System zum Ziel-System durch einfaches Kopieren, oder durch das Übertragen des Speichermediums selbst, wie etwa bei USB-Sticks oder USB-Festplatten, übertragen werden kann. In diesen Fällen spricht man dann von portabler Software.
Bei der Portierung eines Computerprogramms, das auf einem bestimmten Betriebssystem, einer Betriebssystemversion oder Hardware abläuft, treten diverse Probleme bei dem Versuch auf, es auch auf anderen Betriebssystemen, anderen Versionen oder anderer Hardware lauffähig zu machen. Gleiches gilt auch für den Wechsel von einer Programmiersprache auf eine andere.
Typische Probleme bei der Softwareportierung sind:
Durch die historisch gewachsenen Strukturen und Verfahrensweisen in der Informationstechnologie haben sich viele verschiedene Möglichkeiten ergeben, wie Computerprogramme gestaltet werden können. Dadurch ist die Portierbarkeit von Software mehr und mehr zu einem komplexen Problem geworden, so dass sich auch ganze Firmen (wie zum Beispiel VMware, Inc. oder Parallels, Inc.) auf diese Aufgabe spezialisiert haben.