Multiplatform
Een multiplatform (of platformonafhankelijke) programmeertaal, softwaretoepassing of hardware-apparaat werkt op meer dan één systeemplatform (bijvoorbeeld UNIX, Windows en Macintosh). Voorbeelden van multiplatform talen zijn C, C++, Java, JavaScript, Python, Tcl, Erlang, Delphi+Kylix en REALbasic.
De meeste computertalen zijn strikt gezien platformonafhankelijk - want als men instructies wil geven aan de CPU op een hoog niveau, en op een manier die door de mens leesbaar is, is het niet nodig om sterk van het specifiek besturingssysteem afhankelijk te zijn. Om echter complexere zaken te doen, zoals een grafische gebruikersinterface (GUI) creëren met behulp van de widgetverzameling van het systeem, wordt het programma gelinkt met bibliotheken die specifiek kunnen zijn voor het systeem van de ontwikkelaar. Hoewel bijvoorbeeld C++ zelf op meerdere platformen werkt, zal een programma dat is geschreven voor Windows en daartoe de Win32 API gebruikt, normaalgezien niet compileren op een computer met UNIX. Er zijn vaak ook verschillen in de manier waarop de schrijvers van compilers een taalspecificatie interpreteren; in dit geval kan het nodig zijn het programma na te zien eer men het compileert op andere systemen.
Bepaalde programmeertalen, zoals Java zijn van het begin af ontworpen om te werken op elk platform dat een gepaste virtuele machine heeft. Talen die bytecode gebruiken als een gecompileerde voorstelling, of talen die script direct interpreteren, hoeven niet gecompileerd te worden voor het specifiek besturingssysteem. Bibliotheken die eigen zijn aan het besturingssysteem worden niet gelinkt met de verdeelde code, het is eerder de run-time-omgeving die gelijkaardig functionaliteit opnieuw zelf implementeert, of een brug vormt naar het besturingssysteem toe maar daarbij abstractie maakt van de specifieke eigenheden. Het is weliswaar mogelijk om Java programma's te maken die enkel draaien op een bepaald systeem, door ofwel het gebruik van JNI of het uitvoeren van een bytecode-naar-machinecode compiler; maar dit is meestal niet nodig.
Het leveren en testen van gecompileerde versie van een programma, voor elk besturingssysteem of elke CPU is praktisch onmogelijk, daarom zijn projecten die open source zijn of de gebruiker in staat stellen zelf code te compileren vaak veel beter platformonafhankelijk. Op eenzelfde manier zijn talen die geïnterpreteerd worden of een virtuele machine gebruiken eerder platformonafhankelijk. HotSpot, Sun's Java virtuele machine, wordt enkel geleverd als gecompileerde code, met ondersteuning voor verschillende, maar niet alle, platformen. Sun ondersteunt bijvoorbeeld enkel GNU/Linux op de i386-architectuur - iemand die Linux draait op een PowerPC of SPARC computer kan Java niet gebruiken zonder te compileren naar machinecode of het gebruik van hulpmiddelen van derden.
Veel API's zijn platformafhankelijk. OpenGL kan men beschouwen als platformonafhankelijk omdat dit niet afhankelijk is van een bepaald besturingssysteem, processorarchitectuur of een specifiek merk van grafische hardware. Platformafhankelijke API's kunnen nagemaakt worden op andere systemen als een tussenliggende compatibiliteitslaag, zoals de Wine-bibliotheek, die het mogelijk maakt om programma's die de Windows bibliotheken nodig hebben uit te voeren op UNIX.
Er bestaan ook multiplatform uitbreidingen en middleware voor veel programmeertalen, die ontwikkelaars de mogelijkheid bieden om dezelfde broncode te compileren en uit te voeren om verschillende platformen, met slechts een minimale aanpassing. Voorbeelden zijn Qt en wxWidgets.
[bewerk] Platformonafhankelijkheid en het Web
Web-applicaties zijn normaalgezien bruikbaar van eender welk platform met een webbrowser, onafhankelijk van de taal waarin ze geschreven zijn. Dit komt doordat de code uitgevoerd wordt op een server, en de communicatie met de gebruiker gebeurt enkel via HTTP en HTML of XHTML.
Webpagina's worden vaak platform- of browseronafhankelijk genoemd wanneer ze kunnen gebruikt worden vanaf elke browser, of minstens vanaf elke recente browser. Naast het creëren van geldige code, vereist dit vaak ook van de auteur om kennis te hebben van de eigenaardigheden van browsers die niet nauwkeurig omgaan met webstandaarden, zoals Internet Explorer.
Een webpagina die inhoud aanbiedt die niet door alle browsers kan getoond worden, zoals Macromedia Flash-presentaties, kan toch multiplatform zijn als er voorzieningen getroffen worden voor gebruikers die de speciale plugins of ondersteuning niet hebben. Men kan bijvoorbeeld afbeeldingen tonen in de plaats van complexere inhouden, of een downloadbare MPEG-versie van geanimeerd materiaal aanbieden.
Platformonafhankelijke toegankelijkheid op het web vereist het begrijpen van de gebruikers, maar ook van technische standaarden, wanneer men wil dat een pagina toegankelijk is op een wijd aanbod aan platformen zoals screen readers, Braille-gebaseerde webbrowsers, en kleine toestellen zoals mobiele telefoons en PDA's.