Cross- platform ( cross-platform ) - ohjelmiston kyky toimia useiden laitteistoalustojen tai käyttöjärjestelmien kanssa . Se tarjotaan käyttämällä korkean tason ohjelmointikieliä , kehitys- ja ajonaikaisia ympäristöjä, jotka tukevat ehdollista kääntämistä, linkittämistä ja koodin suorittamista eri alustoilla. Tyypillinen esimerkki on ohjelmisto, joka on suunniteltu toimimaan samanaikaisesti Linux- ja Windows -käyttöjärjestelmissä.
Useimpia nykyaikaisia korkean tason ohjelmointikieliä voidaan kutsua monikäyttöisiksi . Esimerkiksi C , C ++ , Free Pascal , FreeBASIC , PureBasic ovat monialustaisia kieliä käännöstasolla, eli näille kielille on olemassa kääntäjiä eri alustoille. Tämä sallii - koodin asianmukaisella laadulla - ohjelman pääkoneen uudelleenkirjoittamisen, vain erityiset järjestelmästä riippuvat osat muuttuvat.
Yhtä tärkeitä monialustaisessa käytössä ovat standardoidut ajonaikaiset kirjastot . Erityisesti C-kielikirjastosta ( POSIX ) on tullut standardi. Suurista alustojen välisistä kirjastoista - Qt , GTK + , FLTK , STL , Boost , OpenGL , SDL , OpenAL , OpenCL .
On olemassa ristikääntäjiä - kääntäjiä, jotka luovat suoritettavan koodin muulle alustalle kuin sille, jolla kääntäjä itse toimii.
PHP , Perl , Python , Tcl ja Ruby ovat monialustaisia tulkittuja kieliä, ja niiden tulkkeja on olemassa monille alustoille.
Myös ActionScript Virtual Machine - , Java Virtual Machine - ja .NET -ajoajat ovat monialustaisia , mutta niiden syöttö ei ole lähdekoodia , vaan välikoodia . Siksi ActionScript- , Java- ja C# -kielellä kirjoitettuja ohjelmia voidaan ajaa eri käyttöjärjestelmissä ilman uudelleenkääntämistä.
Eri käyttöjärjestelmissä ja ympäristöissä - riippumatta siitä, miten työ niissä on teknisesti toteutettu - vakiorajapintaelementit ovat erikokoisia. Siksi käyttöliittymäelementtien yksinkertainen jäykkä sijoittaminen on mahdotonta - eri käyttöjärjestelmässä (ympäristössä) ne voivat "ryömii" toistensa päällä, "sumentaa", "humalassa". On olemassa useita lähestymistapoja:
Joka tapauksessa muissa käyttöjärjestelmissä ja ympäristöissä vaaditaan vähintään minimaalinen testaus, koska linkitysvirheet ovat mahdollisia ...
Vaikka laitteistoja ja ohjelmistoja on yleisesti standardoitu laajasti, ohjelmoijan on usein haaroitauduttava eri käyttöjärjestelmiin ja ympäristöihin, mukaan lukien yksi tai toinen ehdollisen käännöksen avulla .
Esimerkiksi Mozilla Firefox -selaimessa on eri kuvakesarjat eri käyttöjärjestelmille.
Suuri määrä sovellusohjelmia on myös monialustaisia. Tämä laatu on erityisen korostunut ohjelmissa, jotka on alun perin kehitetty Unix-tyyppisille käyttöjärjestelmille . Tärkeä edellytys niiden siirrettävyydelle muille alustoille on alustojen yhteensopivuus POSIX -suositusten kanssa sekä GCC-kääntäjän olemassaolo alustalle, jolle ne siirretään.
Nykyaikaiset käyttöjärjestelmät ovat myös usein monialustaisia. Esimerkiksi avoimen lähdekoodin käyttöjärjestelmät (erityisesti: NetBSD , Linux , FreeBSD , AROS ) voivat toimia useilla eri laitteistoalustoilla. Yleisimmät ovat: x86 , m68k , PowerPC , Alpha , AMD64 , SPARC . (" Elbrus OS " ei ole muuta kuin perusteellisesti muokattu Elbrus -alustalle . Mutta Elbrus-SPARC-alustoille on saatavana myös "Elbrus OS", joka on MCST:n SPARC - alustan ja x86-alustan toteutus. ) Ensimmäinen julkaisu Microsoft Windows NT 4 , julkaistu vuonna 1996, tuki neljää alustaa (x86, Alpha, MIPS ja PowerPC), uudemmat Windows NT:n versiot tukivat vain x86-alustaa. Nykyaikainen Microsoft Windows voi toimia sekä Intel x86 - että Intel Itanium - alustoilla . (Tarkemmin sanottuna Itaniumilla on vain Windows 2000/XP:n, Windows 2003:n ja Windows 2008:n versiot, minkä jälkeen Itaniumin tuki lopetettiin.) NetBSD -käyttöjärjestelmää pidetään useimpana alustana [1] , ja se on siirretty useimpiin käyttöjärjestelmiin. olemassa oleville alustoille.
Useat IDE :t , mukaan lukien Free Pascal, Lazarus , Qt Creator , toimivat eri käyttöjärjestelmissä: Linuxissa, Windowsissa ja muissa [2] .
Jos ohjelmaa ei ole tarkoitettu suoritettavaksi (käynnistettäväksi) tietyllä alustalla, mutta tälle alustalle on olemassa tämän ohjelman perusalustan emulaattori , niin ohjelma voidaan suorittaa emulaattoriympäristössä.
Tyypillisesti ohjelman suorittaminen emulaattoriympäristössä johtaa suorituskyvyn heikkenemiseen verrattuna vastaaviin ohjelmiin, joiden alusta on perusta, koska merkittävä osa järjestelmän resursseista kuluu emulaattoritoimintoihin.