Registrieren Passwort vergessen?

Plattformunabhängigkeit

25. Nov 2008, 14:23
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)).

[Bearbeiten] Formen

Es gibt verschiedene Formen von Plattformunabhängigkeit:

  • In Zwischencode vorliegende Software: Programme, die entweder in Form von Bytecode, wie hauptsächlich Java-Programme, oder eines portablen, interpretierbaren Quellcodes (Python, Perl und andere) vorliegen.
  • Fat Binaries: Programmpakete, die mehrere lauffähige Versionen enthalten. Das Betriebssystem startet ohne Zutun des Anwenders die richtige 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 oder auch Universal Binaries unter Mac OS X, die sowohl auf PowerPC, also auch auf x86 laufen. Voraussetzung dafür, dass eine „fat binary“ überhaupt erstellt werden kann, ist die Portabilität des Quellcodes.
  • 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 weiter 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 Prozessor-Typ 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.

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.

[Bearbeiten] Portabilität

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.

[Bearbeiten] Probleme bei der Softwareportierung

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:

  • Adressbreite des Speichers (16-, 32- oder 64-Bit-Architektur)
  • Fehlende oder eingeschränkte Programmbibliothek oder unterschiedliche APIs
  • Keine oder eingeschränkte Unterstützung der Hardware (z. B. USB unter Windows NT)
  • Programmiersprache ist auf dem Zielsystem nicht vorhanden bzw. Cross-Compiler fehlt
  • Programmiersprache ist nicht oder nur eingeschränkt standardisiert (z. B. SQL)
  • Programmiersprache ist nicht in vollem Umfang vorhanden (z. B. C++)
  • Andere Benutzerschnittstelle (Terminalausgabe, graphische Oberfläche)
  • Funktionen des Betriebssystems sind unterschiedlich (Dateisystem, Rechtevergabe)
  • Vollständig andere Installation des Programms (Installationsprogramm muss meist komplett neu programmiert werden)
  • Unterschiedliche Zeichensätze auf den Systemen
  • Zeitprobleme bei sehr unterschiedlichen Prozessoren oder anderer Hardware
  • Fehler im alten System, die erst auf dem Zielsystem auftreten (andere Compiler, andere Bibliothek)
  • Bessere Ausnutzung des Zielsystems (Multiprozessoren, mehr Speicher, Rechte des Systems statt eigener Rechteverwaltung)
  • Unterschiedliche Datenstrukturierung durch Big-/Little-Endian-Charakteristik des jeweiligen Prozessors


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.

Dieser Artikel ist eine Kopie aus der freien Enzyklopädie Wikipedia. Am Originalartikel kann jeder Korrekturen und Ergänzungen vornehmen. Zudem kann man frühere Versionen einsehen.
In Kooperation mit Lycos Europe Network