Monialustainen ohjelmisto - Cross-platform software

In Computing , cross-platform-ohjelmisto (myös monen alustan ohjelmistojen tai alustasta riippumaton ohjelmisto ) on tietokoneohjelmisto , joka on suunniteltu toimimaan useissa käyttöympäristöissä. Jotkin eri alustojen väliset ohjelmistot edellyttävät erillistä rakennetta kullekin alustalle, mutta jotkut voidaan suorittaa suoraan millä tahansa alustalla ilman erityistä valmistelua, kirjoitettuna tulkittuna kielellä tai koottuna kannettavaan tavukoodiin , jolle tulkit tai ajonaikaiset paketit ovat yleisiä tai vakio kaikkien tuettujen alustojen komponentit.

Esimerkiksi monitasoinen sovellus voi toimia Microsoft Windows- , Linux- ja macOS- käyttöjärjestelmissä . Monialustainen ohjelmisto voi toimia monilla alustoilla tai vain kahdella. Joitakin alustojen välisen kehityksen kehyksiä ovat Codename One , Kivy , Qt , Flutter , NativeScript , Xamarin , Phonegap , Ionic ja React Native .

Alustat

Alusta voi viitata suorittimen (CPU) tai muun laitteiston tyyppiin, jolla käyttöjärjestelmä tai sovellus toimii, käyttöjärjestelmän tyypille tai näiden yhdistelmälle. Esimerkki yleisestä alustasta on Microsoft Windows -käyttöjärjestelmä, joka toimii x86 -arkkitehtuurilla . Muita tunnettuja työpöytäalustoja ovat Linux / Unix ja macOS , jotka molemmat ovat monia eri alustoja. On kuitenkin monia laitteita, kuten älypuhelimia, jotka ovat myös alustoja. Sovellukset voidaan kirjoittaa riippumaan tietyn alustan ominaisuuksista - joko laitteistosta, käyttöjärjestelmästä tai virtuaalikoneesta (VM), jossa se toimii. Esimerkiksi Java -alusta on yleinen VM -alusta, joka toimii monissa käyttöjärjestelmissä ja laitteistotyypeissä.

Laitteisto

Laitteistoalusta voi viitata käskyjoukon arkkitehtuuriin . Esimerkiksi: x86-arkkitehtuuri ja sen vaihtoehdot, kuten IA-32 ja x86-64 . Nämä koneet käyttävät usein yhtä Microsoft Windows -versiota, vaikka ne voivat käyttää muita käyttöjärjestelmiä, kuten Linux, OpenBSD , NetBSD , macOS ja FreeBSD .

32-bittinen ARM arkkitehtuurit (ja uudempi 64-bittinen versio) on yleinen älypuhelimet ja tabletti tietokoneita , jotka kulkevat Android, IOS ja muut mobiili käyttöjärjestelmiä .

Ohjelmisto

Ohjelmistoalustaa voi olla joko OS tai ohjelmoinnin ympäristön , mutta yleisemmin se on molempia. Poikkeuksena on Java , joka käyttää käyttöjärjestelmästä riippumatonta VM: ää Java-tavukoodin suorittamiseen . Esimerkkejä ohjelmistoalustoista ovat:

Pieni/historiallinen

Java

Java tyypillisesti koottu toimimaan VM, joka on osa Java. Java VM ( JVM ) on ohjelmistossa toteutettu suoritin, joka suorittaa kaiken Java -koodin. Tämä mahdollistaa saman koodin suorittamisen kaikissa järjestelmissä, jotka toteuttavat JVM: n. Java-ohjelmisto voidaan suorittaa laitteistopohjaisella Java-prosessorilla . Tätä käytetään lähinnä sulautetuissa järjestelmissä.

JVM: ssä käynnissä olevalla Java-koodilla on pääsy käyttöjärjestelmään liittyviin palveluihin, kuten levyn I/O ja verkkoliitäntä, jos asianmukaiset käyttöoikeudet on myönnetty. JVM soittaa järjestelmäpuheluita Java -sovelluksen puolesta. Näin käyttäjät voivat päättää sopivan suojaustason ACL -luettelosta riippuen . Esimerkiksi levyn ja verkon käyttö on yleensä käytössä työpöytäsovelluksissa, mutta ei selainpohjaisissa sovelmissa . Java Native Interface (JNI) voidaan myös käyttää pääsy OS ominaisia toimintoja, menetyksen kanssa siirrettävyyden.

Tällä hetkellä Java Standard Edition -ohjelmisto voi toimia Microsoft Windowsissa, macOS: ssa, useissa Unix-tyyppisissä käyttöjärjestelmissä ja useissa reaaliaikaisissa käyttöjärjestelmissä sulautetuille laitteille. Mobiilisovelluksissa selainlaajennuksia käytetään Windows- ja Mac-pohjaisissa laitteissa, ja Androidissa on sisäänrakennettu Java-tuki. On myös Java-osajoukkoja, kuten Java-kortti tai Java-alusta, Micro Edition , joka on suunniteltu resurssirajoitteisille laitteille.

Toteutus

Jotta ohjelmistoa voidaan pitää alustanvälisenä, sen on toimittava useammassa kuin yhdessä tietokonearkkitehtuurissa tai käyttöjärjestelmässä. Tällaisen ohjelmiston kehittäminen voi olla aikaa vievä tehtävä, koska eri käyttöjärjestelmillä on erilaiset sovellusohjelmointirajapinnat (API). Esimerkiksi Linux käyttää eri sovellusliittymää kuin Windows.

Yhdelle käyttöjärjestelmälle kirjoitetut ohjelmistot eivät välttämättä toimi automaattisesti kaikilla käyttöjärjestelmillä tuetuilla arkkitehtuureilla. Yksi esimerkki on OpenOffice.org , joka vuonna 2006 ei alun perin käyttänyt x86-64-standardeja toteuttavia AMD64- tai Intel 64 -suorittimia; vuoteen 2012 mennessä se "siirrettiin" enimmäkseen näihin järjestelmiin. Vain koska ohjelmisto on kirjoitettu suositulla ohjelmointikielellä , kuten C tai C ++ , se ei tarkoita, että se toimii kaikissa käyttöjärjestelmissä, jotka tukevat kyseistä kieltä - tai jopa saman käyttöjärjestelmän eri versioissa.

Web -sovellukset

Verkkosovelluksia kuvataan tyypillisesti eri alustoille, koska ne ovat parhaimmillaan käytettävissä mistä tahansa verkkoselaimesta : selain on alusta. Verkkosovellukset käyttävät yleensä asiakas -palvelin -mallia , mutta vaihtelevat suuresti monimutkaisuudesta ja toiminnallisuudesta. Ominaisuuksien halun ja yhteensopivuustarpeen voi olla vaikea sovittaa yhteen.

Perusverkkosovellukset suorittavat kaiken tai suurimman osan käsittelystä tilattomalta palvelimelta ja välittävät tuloksen asiakasselaimelle. Kaikki käyttäjän vuorovaikutus sovelluksen kanssa koostuu yksinkertaisista datapyyntöjen ja palvelinvastausten vaihdoista. Tämäntyyppinen sovellus oli normi World Wide Web -sovellusten kehittämisen alkuvaiheessa . Tällaiset sovellukset noudattavat yksinkertaista tapahtumamallia , joka on identtinen staattisten verkkosivujen näyttämisen kanssa . Nykyään ne ovat edelleen suhteellisen yleisiä, erityisesti silloin, kun eri alustojen välistä yhteensopivuutta ja yksinkertaisuutta pidetään tärkeämpänä kuin kehittyneitä toimintoja.

Näkyviin esimerkkeihin edistyneistä verkkosovelluksista kuuluvat Gmailin , A9.comin , Google Mapsin verkkosivuston ja Microsoftin Live Search -palvelun (nyt Bing ) verkkokäyttöliittymä . Tällaiset sovellukset riippuvat rutiininomaisesti lisäominaisuuksista, jotka löytyvät vain suosittujen verkkoselainten uusimmista versioista. Näitä ominaisuuksia ovat Ajax , JavaScript , dynaaminen HTML , SVG ja muut rikkaiden verkkosovellusten osat . Vanhemmissa versioissa nämä puuttuvat usein.

Design

Yhteensopivuuden ja toimivuuden kilpailevien etujen vuoksi on syntynyt lukuisia suunnittelustrategioita.

Monet ohjelmistojärjestelmät käyttävät kerrostettua arkkitehtuuria, jossa alustakohtainen koodi on rajoitettu ylempään ja alimpaan kerrokseen.

Siro hajoaminen

Laadukas heikentäminen pyrkii tarjoamaan saman tai samanlaisen toiminnallisuuden kaikille käyttäjille ja alustoille samalla, kun se vähentää toiminnallisuutta vähiten yhteiseksi nimittäjäksi rajoitetummille asiakasselaimille. Esimerkiksi käyttäjä, joka yrittää käyttää Gmailia rajoitetulla toiminnolla varustetulla selaimella, saattaa huomata, että Gmail siirtyy perustilaan, jonka toiminnot ovat heikentyneet, mutta silti käytössä.

Useita koodikantoja

Joitakin ohjelmistoja ylläpidetään erillisissä koodikannoissa eri (laitteisto- ja käyttöjärjestelmä) alustoille, joilla on vastaavat toiminnot. Tämä vaatii enemmän vaivaa koodin ylläpitämiseksi, mutta se voi olla kannattavaa, jos alustakohtaisen koodin määrä on suuri.

Yksi koodikanta

Tämä strategia perustuu siihen, että sillä on yksi koodikanta, joka voidaan koota useisiin alustakohtaisiin muotoihin. Yksi tekniikka on ehdollinen kokoaminen . Tällä tekniikalla kaikille alustoille yhteistä koodia ei toisteta. Koodilohkot, jotka ovat merkityksellisiä vain tietyille alustoille, on ehdollisia, joten niitä tulkitaan tai kootaan vain tarvittaessa. Toinen tekniikka on toiminnallisuuden erottaminen, joka poistaa käytöstä toiminnot, joita selaimet tai käyttöjärjestelmät eivät tue, mutta toimittaa silti täydellisen sovelluksen käyttäjälle. (Katso myös: Huolien erottaminen .) Tätä tekniikkaa käytetään web -kehityksessä, jossa tulkittu koodi (kuten komentosarjakielet) voi kysyä käynnissä olevalta alustalta suorittaakseen erilaisia ​​lohkoja ehdollisesti.

Kolmannen osapuolen kirjastot

Kolmannen osapuolen kirjastot yrittävät yksinkertaistaa eri alustojen ominaisuuksia piilottamalla asiakkaiden erilaistamisen monimutkaisuudet yhden, yhtenäisen sovellusliittymän taakse toimittajan lukituksen kustannuksella .

Responsiivinen web -suunnittelu

Responsiivinen web -suunnittelu (RWD) on verkkosuunnittelumenetelmä, jonka tarkoituksena on luoda sivustojen visuaalinen ulkoasu optimaalisen katselukokemuksen aikaansaamiseksi - helppo lukeminen ja navigointi pienellä koolla, panoroinnilla ja vierityksellä - useilla eri laitteilla mobiililaitteista puhelimista pöytätietokoneiden näyttöihin. Tässä tekniikassa käytetään vähän tai ei ollenkaan alustakohtaista koodia.

Testaus

Monialustaiset sovellukset tarvitsevat paljon enemmän integrointitestausta . Jotkin selaimet kieltävät eri versioiden asentamisen samaan koneeseen. Useisiin alustoihin kohdistamiseen käytetään useita lähestymistapoja, mutta ne kaikki johtavat ohjelmistoon, joka vaatii huomattavaa manuaalista työtä testauksessa ja ylläpidossa. Tämän ongelman ratkaisuksi käytetään joskus tekniikoita, kuten täydellistä virtualisointia .

Työkalut, kuten Page Object Model, mahdollistavat useiden alustojen testien skriptaamisen siten, että yksi testitapaus kattaa useita sovelluksen versioita. Jos eri versioilla on samanlaiset käyttöliittymät, kaikki voidaan testata yhdellä testikotelolla.

Perinteiset sovellukset

Verkkosovellukset ovat yhä suositumpia, mutta monet tietokoneen käyttäjät käyttävät edelleen perinteistä sovellusohjelmistoa, joka ei ole riippuvainen asiakas/web-palvelin -arkkitehtuurista. Perinteisten ja verkkosovellusten välinen ero ei ole aina selvä. Verkko- ja perinteisten sovellusten ominaisuudet, asennusmenetelmät ja arkkitehtuurit ovat päällekkäisiä ja hämärtävät eron. Tämä yksinkertaistava ero on kuitenkin yleinen ja hyödyllinen yleistys.

Binaarinen ohjelmisto

Perinteisiä sovellusohjelmistoja on jaettu binääritiedostoina, erityisesti suoritettavina tiedostoina . Suoritettavat tiedostot tukevat vain alusta, jolle ne on rakennettu-mikä tarkoittaa, että yksittäinen alustanvälinen suoritettava tiedosto voi olla hyvin paisunut koodilla, joka ei koskaan suorita tietyllä alustalla. Sen sijaan yleensä on valikoima suoritettavia tiedostoja, joista jokainen on rakennettu yhdelle alustalle.

Ohjelmistoille, jotka jaetaan binäärisenä suoritettavana tiedostona, kuten C- tai C ++ -muodossa, on oltava ohjelmistokokoonpano kullekin alustalle käyttäen työkalusarjaa, joka muuntaa - kääntää - yhden koodikannan useiksi binaaritiedostoiksi. Esimerkiksi Firefox , avoimen lähdekoodin verkkoselain, on saatavana Windowsille, macOS: lle (sekä PowerPC että x86 kautta, jonka Apple Inc. kutsuu Universal-binaariksi ), Linuxille ja BSD: lle useilla tietokonearkkitehtuureilla. Neljä alustoa (tässä tapauksessa Windows, macOS, Linux ja BSD) ovat erillisiä suoritettavia jakeluja, vaikka ne tulevat suurelta osin samasta lähdekoodista .

Eri työkalusarjojen käyttö ei ehkä riitä rakentamaan toimivia suoritettavia tiedostoja eri alustoille. Tällöin-ohjelmoijat on portti lähdekoodia uudelle alustalle. Esimerkiksi Firefoxin kaltainen sovellus, joka toimii jo x86-perheen Windowsissa, voidaan muokata ja rakentaa uudelleen toimimaan Linuxissa myös x86: lla (ja mahdollisesti muilla arkkitehtuureilla). Koodin useat versiot voidaan tallentaa erillisiksi koodikannoiksi tai yhdistää yhteen kooditietokantaan.

Vaihtoehtona siirtämiselle on eri alustojen välinen virtualisointi , jossa yhdelle alustalle kootut sovellukset voivat toimia toisella ilman lähdekoodin tai binaaritiedostojen muuttamista. Esimerkiksi Applen Rosetta , joka on rakennettu Intel -pohjaisiin Macintosh -tietokoneisiin, käyttää sovelluksia , jotka on koottu edellisen sukupolven Mac -tietokoneille, jotka käyttivät PowerPC -suorittimia. Toinen esimerkki on IBM PowerVM Lx86 , joka mahdollistaa Linux/x86 -sovellusten ajamisen muuttamattomina Linux/Power OS -käyttöjärjestelmässä.

Esimerkki alustanvälisestä binaariohjelmistosta:

  • LibreOffice toimisto-ohjelmisto on rakennettu Microsoft Windows, MacOS, monet Linux, FreeBSD , NettBSD , OpenBSD , Android-, iOS- ja Chrome-käyttöjärjestelmät, web-pohjainen Collabora Online ja monet muut. Monia näistä tuetaan useilla laitteistoalustoilla, joissa on prosessori-arkkitehtuuri, mukaan lukien IA-32 , x86-64 ja ARM .

Käsikirjoitukset ja tulkitut kielet

Käsikirjoituksen voidaan katsoa olevan eri alustojen välinen, jos sen tulkki on käytettävissä useilla alustoilla ja skripti käyttää vain kieleen rakennettuja palveluita. Esimerkiksi script kirjoitettu Python varten Unixin kaltaiset järjestelmä todennäköisesti ajaa vähän tai ei muutoksia Windows, koska Python myös toimii Windows; toteutuksia on todella monia (esim. IronPython for .NET Framework ). Sama koskee monia avoimen lähdekoodin skriptikieliä .

Toisin kuin binääriset suoritettavat tiedostot, samaa komentosarjaa voidaan käyttää kaikissa tietokoneissa, joissa on ohjelmisto tulkita komentosarja. Tämä johtuu siitä, että kirjoitus on yleensä tallennettu tekstimuodossa on tekstitiedosto . Ongelmia voi esiintyä, kuten uuden viivahahmon esittäminen .

Jotkut suositut eri alustojen väliset komentosarjakielet ovat:

  • bash - Unix shell yleisesti Linuxissa ja muut modernit Unixin kaltaisissa järjestelmissä sekä Windowsissa kautta Cygwin POSIX yhteensopivuuskerros.
  • Perl - julkaistiin ensimmäisen kerran vuonna 1987. Käytetään CGI -ohjelmointiin, pieniin järjestelmänhallintatehtäviin ja muihin.
  • PHP - käytetään enimmäkseen verkkosovelluksissa.
  • Python- Kieli, joka keskittyy nopeaan sovellusten kehittämiseen ja kirjoittamisen helppouteen ajon tehokkuuden sijaan.
  • Ruby- Objektiivinen kieli, jonka tavoitteena on olla helppo lukea. Voidaan käyttää myös verkossa Ruby on Railsin kautta .
  • Tcl - Dynaaminen ohjelmointikieli, joka soveltuu monenlaisiin käyttötarkoituksiin, mukaan lukien verkko- ja työpöytäsovellukset, verkostoituminen, hallinto, testaus ja paljon muuta.

Videopelit

Monialustainen tai monialustainen on termi, joka voi koskea myös videopelejä, jotka on julkaistu useilla videopelikonsoleilla . Esimerkkejä alustojen välisistä peleistä ovat: Miner 2049er , Tomb Raider: Legend , FIFA-sarja , NHL-sarja ja Minecraft .

Jokainen niistä on julkaistu useilla pelialustoilla, kuten Wii , PlayStation 3 , Xbox 360 , henkilökohtaiset tietokoneet ja mobiililaitteet .

Yksittäisille alustoille on vaikeampi kirjoittaa kuin muille. Tämän kompensoimiseksi videopeli voidaan julkaista ensin muutamilla alustoilla ja myöhemmin muilla. Yleensä tämä tapahtuu, kun uusi pelijärjestelmä julkaistaan, koska videopelien kehittäjien on perehdyttävä sen laitteistoon ja ohjelmistoon.

Jotkin pelit eivät välttämättä ole eri alustoja, koska kehittäjät ja videopelikonsolivalmistajat solmivat lisenssisopimukset, jotka rajoittavat kehityksen yhteen tiettyyn konsoliin. Esimerkiksi Disney voisi luoda pelin, jonka tarkoituksena on julkaista uusimmat Nintendon ja Sonyn pelikonsolit. Jos Disney lisensoi pelin ensin Sonyn kanssa, se saattaa joutua julkaisemaan pelkästään Sonyn konsolissa lyhyeksi ajaksi tai toistaiseksi .

Monitasoinen pelaaminen

Useat kehittäjät ovat toteuttaneet tapoja pelata pelejä verkossa, kun he käyttävät eri alustoja. Psyonix , Epic Games , Microsoft , ja Valve kaikilla on tekniikka, jonka avulla Xbox 360 ja PlayStation 3 pelaajat pelata PC-pelaajille, jolloin päätös, jonka alustan käyttöä kuluttajille. Ensimmäinen peli, joka salli tämän tason vuorovaikutteisuuden PC- ja konsolipelien välillä, oli Quake 3 .

Pelejä, jotka on cross-platform verkkopelaamiseen kuuluvat Rocket League , Final Fantasy XIV , Street Fighter V , Killer Instinct , Paragon ja Fable Fortune , ja Minecraft sen Better Together päivityksen Windows 10 , VR painoksia, Pocket Edition ja Xbox One .

Ohjelmointi

Alustojen välinen ohjelmointi on käytäntöä, että ohjelmisto kirjoitetaan tarkoituksella useammalle kuin yhdelle alustalle.

Lähestymistavat

Monia alustoja sisältävän sovelluksen voi kirjoittaa eri tavoilla. Yksi tapa on luoda useita versioita samasta ohjelmistosta eri lähdepuissa - toisin sanoen sovelluksen Microsoft Windows -versiossa voi olla yksi lähdekooditiedosto ja Macintosh -versio toinen, kun taas FOSS *nix -järjestelmässä voi olla kolmas. Vaikka tämä on yksinkertaista, vain yhden alustan kehittäminen voi maksaa paljon enemmän maksaa suuremmalle tiimille tai julkaista tuotteita hitaammin. Se voi myös johtaa useampien vikojen seuraamiseen ja korjaamiseen.

Toinen tapa on käyttää ohjelmistoja, jotka piilottavat alustojen väliset erot. Tämä abstraktiokerros eristää sovelluksen alustalta. Tällaiset sovellukset ovat alustan agnostisia . JVM: ssä toimivat sovellukset on rakennettu tällä tavalla.

Jotkut sovellukset yhdistävät eri alustojen välisen ohjelmoinnin menetelmiä lopullisen sovelluksen luomiseksi. Esimerkki on Firefox-selain, joka käyttää abstraktioita joidenkin alemman tason komponenttien rakentamiseen, ja niissä on erilliset lähdealipuut alustakohtaisten ominaisuuksien (kuten graafisen käyttöliittymän) toteuttamiseksi, ja useamman kuin yhden komentosarjakielen käyttöönotto ohjelmiston siirrettävyyden helpottamiseksi . Firefox käyttää XUL- , CSS- ja JavaScriptiä selaimen laajentamiseen klassisten Netscape -tyylisten selainlaajennusten lisäksi. Suuri osa selaimesta on kirjoitettu XUL-, CSS- ja JavaScript -kielillä.

Työkalut ja ympäristöt

Saatavilla on työkaluja eri alustojen välisen ohjelmoinnin helpottamiseksi:

  • 8.: kehityskieli, joka käyttää Jucea GUI -kerroksenaan. Se tukee tällä hetkellä Android-, iOS-, Windows-, macOS-, Linux- ja Raspberry Pi -laitteita.
  • Anant Computing : Mobiilisovellusympäristö, joka toimii kaikilla intialaisilla kielillä, myös näppäimistöillä, ja tukee myös AppWalletia ja natiivi suorituskykyä kaikissa käyttöjärjestelmissä.
  • AppearIQ : kehys, joka tukee sovellusten kehittämisen ja käyttöönoton työnkulkua yritysympäristössä. Alkuperäisesti kehitetyt säilöt esittävät mobiililaitteiden tai tablettien laitteisto -ominaisuuksia API -HTML5 -koodin kautta, mikä helpottaa eri alustoilla toimivien mobiilisovellusten kehittämistä.
  • Boden: käyttöliittymäkehys, joka on kirjoitettu C ++: lla.
  • Kairo : ilmainen ohjelmistokirjasto, jota käytetään vektorigrafiikkaan perustuvan, laitteesta riippumattoman sovellusliittymän tarjoamiseen. Se on suunniteltu tarjoamaan primitiivit 2-ulotteiseen piirtämiseen useilla eri taustaohjelmilla. Kairo on kirjoitettu C -kielellä ja siinä on sidoksia monille ohjelmointikielille.
  • Cocos2d : avoimen lähdekoodin työkalupakki ja pelimoottori 2D- ja yksinkertaisten 3D-pelien ja -sovellusten kehittämiseen.
  • Koodinimi One : avoimen lähdekoodin Write Once Run Anywhere (WORA) -kehys Java- ja Kotlin-kehittäjille.
  • Delphi : IDE, joka käyttää Pascal-pohjaista kieltä kehitykseen. Se tukee Android, iOS, Windows, macOS, Linux.
  • Ecere SDK: graafinen käyttöliittymä ja 2D/3D -grafiikkatyökalupaketti ja IDE, kirjoitettu eC -muodossa ja tukee muita kieliä, kuten C ja Python. Se tukee Linuxia, FreeBSD: tä, Windowsia, Androidia, macOS: ää ja verkkoa Emscriptenin tai Binaryenin (WebAss Assembly) kautta.
  • Eclipse : avoimen lähdekoodin kehitysympäristö. Toteutettu Java -ohjelmassa, jossa on konfiguroitava arkkitehtuuri, joka tukee monia työkaluja ohjelmistokehitykseen. Lisäosia on saatavana useille kielille, mukaan lukien Java ja C ++.
  • FLTK : avoimen lähdekoodin työkalupakki, mutta kevyempi, koska se rajoittuu graafiseen käyttöliittymään.
  • Flutter : Googlen kehittämä alustanvälinen käyttöliittymäkehys Androidille ja iOS: lle .
  • fpGUI : Avoimen lähdekoodin widget-työkalupakki, joka on täysin toteutettu Object Pascalissa. Se tukee tällä hetkellä Linuxia, Windowsia ja vähän Windows CE: tä.
  • GeneXus : Windows nopea ohjelmistokehitystä ratkaisu cross-platform sovellus luomiseen ja käyttöönotto perustuu tiedon esitys- ja tukevat C # , COBOL , Java kuten Android ja BlackBerry älykkäiden laitteiden, Objective-C ja Apple- mobiililaitteille, RPG , Ruby , Visual Basic , ja Visual FoxPro .
  • GLBasic : BASIC -murre ja kääntäjä, joka tuottaa C ++ -koodin. Se sisältää ristikääntäjät monille alustoille ja tukee useita alustoja (Windows, Mac, Linux, Android, iOS ja jotkut eksoottiset kämmenlaitteet).
  • Godot : SDK, joka käyttää Godot -moottoria.
  • GTK+ : Avoimen lähdekoodin widget-työkalupakki Unix-tyyppisille järjestelmille, joissa on X11 ja Microsoft Windows.
  • Haxe : Avoimen lähdekoodin kieli.
  • Juce : C ++: lla kirjoitettu sovelluskehys, jota käytetään alkuperäisten ohjelmistojen kirjoittamiseen useisiin järjestelmiin (Microsoft Windows, POSIX, macOS) ilman koodin muutoksia.
  • Kivy : avoimen lähdekoodin cross-platform UI -kehys, joka on kirjoitettu Pythonilla . Se tukee Android , iOS , Linux , OS X , Windows ja Raspberry Pi .
  • LEADTOOLS : Monialustaiset SDK-kirjastot tunnistus-, asiakirja-, lääketieteellisten, kuvantamis- ja multimediatekniikoiden integroimiseksi Windows-, iOS-, macOS-, Android-, Linux- ja verkkosovelluksiin.
  • LiveCode : HyperTalkin innoittama kaupallinen, eri alustojen välinen nopea sovelluskehityskieli.
  • Lazarus : FreePascal Compiler -ohjelmointiympäristö. Se tukee itsenäisten graafisten ja konsolisovellusten luomista ja toimii Linux-, MacOSX-, iOS-, Android-, WinCE-, Windows- ja WEB-käyttöjärjestelmissä.
  • Max/MSP : Visuaalinen ohjelmointikieli, joka koteloi alustasta riippumattoman koodin alustakohtaiseen ajonaikaiseen ympäristöön MacOS- ja Windows A -ympäristöjen välisen Android-ajon sovelluksiin. Sen avulla modifioimattomat Android -sovellukset voivat toimia natiivina iOS- ja macOS -käyttöjärjestelmissä
  • Liite : pilvipohjainen matalan koodin sovelluskehitysalusta.
  • MonoCross : avoimen lähdekoodin malli-näkymä-ohjaimen suunnittelumalli, jossa malli ja ohjain ovat eri alustoja, mutta näkymä on alustakohtainen.
  • Mono : Microsoft .NETin (sovellusten ja ohjelmointikielten kehys) avoimen lähdekoodin cross-platform-versio
  • MoSync : avoimen lähdekoodin SDK mobiilisovelluskehitykseen C ++ -perheessä.
  • Mozilla-sovelluskehys : avoimen lähdekoodin alusta macOS-, Windows- ja Linux-sovellusten rakentamiseen.
  • Monialustainen JavaScript/TypeScript-kehys Android- ja iOS-kehitykseen.
  • OpenGL : 3D -grafiikkakirjasto.
  • Pixel Game Maker MV : Oma 2D -pelikehitysohjelmisto Windowsille Windows- ja Nintendo Switch -pelien kehittämiseen.
  • PureBasic : oma kieli ja IDE macOS- , Windows- ja Linux -sovellusten rakentamiseen.
  • ReNative : Universaali kehityss SDK monen alustan projektien rakentamiseen React Native -ohjelman avulla. Sisältää uusimmat iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS ja Firefox TV -alustat.
  • Qt : sovellus puitteet ja widget Toolkit for Unixin kaltaisissa järjestelmissä X11 , Microsoft Windows, MacOS ja muiden järjestelmien käytettävissä niin omat kuin avoimen lähdekoodin lisenssejä .
  • Yksinkertainen ja nopea multimediakirjasto: Multimedia C ++ -sovellusliittymä, joka tarjoaa matalan ja korkean tason pääsyn grafiikkaan, tuloon, ääneen jne.
  • Simple DirectMedia Layer : avoimen lähdekoodin multimedia kirjasto kirjoitettu C, joka luo abstraktio yli eri alustoille grafiikkaa, ääntä, ja syöttö API . Se toimii käyttöjärjestelmissä, mukaan lukien Linux, Windows ja macOS, ja se on tarkoitettu peleille ja multimediasovelluksille.
  • Smartface : natiivisovellusten kehittämistyökalu mobiilisovellusten luomiseen Androidille ja iOS: lle WYSIWYG -suunnitteluohjelman ja JavaScript -koodieditorin avulla .
  • Tcl/Tk
  • Ultimate ++ : C ++: n nopea sovellusten kehittämiskehys, joka keskittyy ohjelmoijien tuottavuuteen. Se sisältää joukon kirjastoja (GUI, SQL jne.) Ja integroidun kehitysympäristön. Se tukee Windowsia ja Unix-tyyppisiä käyttöjärjestelmiä.
  • Unity : Toinen alustanvälinen SDK, joka käyttää Unity Engineä.
  • Uno -alusta : Windows, macOS, iOS, Android, WebAss Assembly ja Linux käyttäen C#.
  • Unreal : Monialustainen SDK, joka käyttää Unreal Engineä.
  • V-Play-moottori : V-Play on eri alustojen kehittämis SDK, joka perustuu suosittuun Qt-kehykseen. V-Play-sovellukset ja -pelit luodaan Qt Creatorissa.
  • WaveMaker : Matalan koodin kehittämistyökalu reagoivien verkko- ja hybridi-mobiilisovellusten (Android ja iOS) luomiseen.
  • WinDev: integroitu kehitysympäristö Windowsille, Linuxille, .Netille ja Javalle sekä verkkoselaimille. Optimoitu liike- ja teollisuussovelluksiin.
  • wxWidgets : avoimen lähdekoodin widget-työkalupakki, joka on myös sovelluskehys . Se toimii Unixin kaltaisissa järjestelmissä, joissa on X11 , Microsoft Windows ja macOS.
  • Xojo : RAD IDE, joka käyttää olio-ohjelmointikieltä työpöytä-, verkko- ja iOS-sovellusten luomiseen. Xojo tekee alkuperäisiä, koottuja työpöytäsovelluksia macOS: lle, Windowsille, Linuxille ja Raspberry Pi: lle. Se luo koottuja verkkosovelluksia, joita voidaan käyttää itsenäisinä palvelimina tai CGI: n kautta. Ja se lisäsi äskettäin mahdollisuuden luoda alkuperäisiä iOS -sovelluksia.

Haasteet

Monialustaisten ohjelmistojen kehittämisessä on monia haasteita.

  • Alustojen välisten sovellusten testaaminen voi olla huomattavasti monimutkaisempaa, koska eri alustoilla voi olla hieman erilainen käyttäytyminen tai hienovaraisia ​​virheitä. Tämä ongelma on johtanut siihen, että jotkut kehittäjät pilkkaavat eri alustojen kehitystä "kirjoita kerran, korjaa kaikkialla", ottaen huomioon Sun Microsystemsin " kirjoita kerran, juokse missä tahansa " -lauseen.
  • Kehittäjät rajoittuvat usein käyttämään pienimmän yhteisen nimittäjän osajoukkoa, joka on saatavana kaikilla alustoilla. Tämä voi haitata sovelluksen suorituskykyä tai estää kehittäjiä käyttämästä kunkin alustan kehittyneimpiä ominaisuuksia.
  • Eri alustoilla on usein erilaiset käyttöliittymäkäytännöt, joita eri alustojen sovellukset eivät aina sovi. Esimerkiksi macOS- ja GNOME- sovellusten on tarkoitus sijoittaa tärkein painike ikkunan tai valintaikkunan oikealle puolelle, kun taas Microsoft Windowsilla ja KDE: llä on päinvastainen käytäntö. Vaikka monet näistä eroista ovat hienovaraisia, alustanvälinen sovellus, joka ei noudata näitä käytäntöjä, voi tuntua hankalalta tai vieraalta käyttäjälle. Kun työskentelet nopeasti, tällaiset vastakkaiset käytännöt voivat jopa johtaa tietojen menetykseen , kuten valintaikkunassa, jossa vahvistetaan, tallennetaanko vai hylätäänkö muutokset.
  • Komentosarjakielet ja VM -tavukoodi on käännettävä alkuperäiseen suoritettavaan koodiin joka kerta, kun niitä käytetään. Tätä rangaistusta voidaan lieventää käyttämällä tekniikoita, kuten juuri oikea-aikainen kokoaminen ; mutta joitakin laskennallisia yleiskustannuksia voi olla väistämätöntä.
  • Eri alustat edellyttävät alkuperäisten pakettimuotojen, kuten RPM ja MSI, käyttöä . Usean alustan asentajat, kuten InstallAnywhere, vastaavat tähän tarpeeseen.
  • Alustojen väliset toteutusympäristöt voivat kärsiä eri alustojen välisistä tietoturva-aukoista, mikä luo hedelmällisen ympäristön eri alustojen haittaohjelmille.

Katso myös

Viitteet