Plattformunabhängigkeit
aus Wikipedia, der freien Enzyklopädie
Plattformunabhängigkeit ist die Eigenschaft eines Programms, auf verschiedenen Computersystemen mit Unterschieden in Architektur, Prozessor, Compiler, weiteren Tools, die zur Übersetzung notwendig sind und Betriebssystem etc. lauffähig zu sein.
Es gibt verschiedene Formen von Plattformunabhängigkeit:
- In Zwischencode vorliegende Software: Programme, die entweder in Form von Bytecode, wie beispielsweise Java- oder .NET-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. Viele im Quellcode portable Programme stehen bereits in vorgefertigten Versionen für mehrere Plattformen bereit. Beispiele hierfür sind der Internetbrowser Mozilla, das Grafikprogramm GIMP, das Office-Paket OpenOffice.org und die GNU Compiler Collection.
- 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.
Heutzutage wird Plattformunabhängigkeit automatisch mit entweder Java oder .NET verbunden – im Falle von .NET besteht zugleich eine Programmiersprachenunabhängigkeit, bei Java ist die Programmiersprache (in Form des Quellcodes sowie auch des Interpreters/Compilers) mehr oder weniger untrennbar mit der JVM verbunden. Durch Konzepte wie OSGi wird Java zum direkten Gegenspieler von .NET – sowohl im eingebetteten Systemen - (J2ME), als auch Endanwender- (J2SE) wie Server-Bereich (J2EE).
Hierzu ist zu ergänzen, dass gerade im Server-Bereich, wo schon sehr früh mit virtuellen Maschinen und virtuellen CPUs gearbeitet wurde (z. B. von IBM) Plattformunabhängigkeit ein anderes Gesicht hat, 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.