Cross -platform software - Cross-platform software

I computing er krydsplatformssoftware (også multi-platform-software eller platformuafhængig software ) computersoftware, der er designet til at fungere på flere computingsplatforme. Nogle platforme på tværs af platforme kræver en separat build til hver platform, men nogle kan køres direkte på en hvilken som helst platform uden særlig forberedelse, skrives på et tolket sprog eller kompileres til bærbar bytecode, som tolke eller run-time pakker er almindelige eller standard komponenter på alle understøttede platforme.

For eksempel kan en cross-platform- applikation køre på Microsoft Windows , Linux og macOS . Cross-platform software kan køre på mange platforme eller så få som to. Nogle rammer for udvikling på tværs af platforme er Codename One , Kivy , Qt , Flutter , NativeScript , Xamarin , Phonegap , Ionic og React Native .

Platforme

Platform kan referere til den type processor (CPU) eller anden hardware, som et operativsystem (OS) eller applikation kører på, typen af ​​operativsystem eller en kombination af de to. Et eksempel på en fælles platform er Microsoft Windows OS, der kører på x86 -arkitekturen . Andre velkendte desktop-platforme er Linux / Unix og macOS -som begge er tværplatforme. Der er dog mange enheder som smartphones , der også er platforme. Applikationer kan skrives til at afhænge af funktionerne på en bestemt platform - enten den hardware, operativsystem eller virtuelle maskine (VM), den kører på. For eksempel er Java -platformen en fælles VM -platform, der kører på mange operativsystemer og hardwaretyper.

Hardware

En hardwareplatform kan referere til en instruktionssætarkitektur . For eksempel: x86-arkitektur og dens varianter, såsom IA-32 og x86-64 . Disse maskiner kører ofte en version af Microsoft Windows, selvom de kan køre andre operativsystemer, herunder Linux, OpenBSD , NetBSD , macOS og FreeBSD .

De 32-bit ARM arkitekturer (og nyere 64-bit -versionen) er almindelig på smartphones og tablet-computere , der kører Android, iOS og andre mobile operativsystemer .

Software

En softwareplatform kan enten være et operativsystem eller et programmeringsmiljø , men mere almindeligt er det en kombination af begge. En undtagelse er Java , som bruger en OS-uafhængig VM til at udføre Java bytecode . Eksempler på softwareplatforme er:

Mindre/historisk

Java

Den Java-sproget typisk kompileret til at køre på en VM, der er en del af Java-platformen. Java VM ( JVM ) er en CPU implementeret i software, der kører al Java -kode. Dette gør det muligt at køre den samme kode på alle systemer, der implementerer en JVM. Java-software kan udføres af en hardware-baseret Java-processor . Dette bruges mest i integrerede systemer.

Java-kode, der kører i JVM, har adgang til OS-relaterede tjenester, f.eks. Disk-I/O og netværksadgang, hvis de relevante privilegier er givet. JVM foretager systemopkald på vegne af Java -applikationen. Dette giver brugerne mulighed for at bestemme det passende beskyttelsesniveau, afhængigt af en ACL . For eksempel er disk- og netværksadgang normalt aktiveret for desktop-applikationer, men ikke for browserbaserede applets . Den Java oprindelige grænseflade (JNI) kan også bruges til at få adgang OS-specifikke funktioner, med et tab af portabilitet.

I øjeblikket kan Java Standard Edition-software køre på Microsoft Windows, macOS, flere Unix-lignende operativsystemer og flere realtidsoperativsystemer til integrerede enheder. Til mobilapplikationer bruges browser-plugins til Windows- og Mac-baserede enheder, og Android har indbygget support til Java. Der er også undersæt af Java, f.eks. Java Card eller Java Platform, Micro Edition , designet til ressourcebegrænsede enheder.

Implementering

For at software kan betragtes som grænseoverskridende, skal det fungere på mere end én computerarkitektur eller OS. At udvikle sådan software kan være en tidskrævende opgave, fordi forskellige operativsystemer har forskellige applikationsprogrammeringsgrænseflader (API). Linux bruger f.eks. En anden API end Windows.

Software, der er skrevet til ét operativsystem, fungerer muligvis ikke automatisk på alle arkitekturer, som OS understøtter. Et eksempel er OpenOffice.org , som i 2006 ikke kørte indbygget på AMD64- eller Intel 64- processorer, der implementerede x86-64-standarderne; i 2012 blev det "for det meste" portet til disse systemer. Bare fordi software er skrevet i et populært programmeringssprog som C eller C ++ , betyder det ikke, at det vil køre på alle operativsystemer, der understøtter dette sprog - eller endda på forskellige versioner af det samme operativsystem.

Webapplikationer

Webapplikationer beskrives typisk som cross-platform, fordi de ideelt set er tilgængelige fra enhver webbrowser : browseren er platformen. Webapplikationer anvender generelt en klient -server -model , men varierer meget i kompleksitet og funktionalitet. Det kan være svært at forene ønsket om funktioner med behovet for kompatibilitet.

Grundlæggende webapplikationer udfører hele eller mest behandling fra en statsløs server og sender resultatet til klientwebbrowseren. Al brugerinteraktion med applikationen består af simple udvekslinger af dataanmodninger og serversvar. Denne type applikationer var normen i de tidlige faser af World Wide Web -applikationsudvikling. Sådanne applikationer følger en simpel transaktionsmodel , der er identisk med den for betjening af statiske websider . I dag er de stadig relativt almindelige, især hvor kompatibilitet på tværs af platforme og enkelhed anses for mere kritisk end avanceret funktionalitet.

Fremtrædende eksempler på avancerede webapplikationer omfatter webgrænsefladen til Gmail , A9.com , Google Maps -webstedet og Live Search -tjenesten (nu Bing ) fra Microsoft. Sådanne applikationer afhænger rutinemæssigt af yderligere funktioner, der kun findes i de nyere versioner af populære webbrowsere. Disse funktioner inkluderer Ajax , JavaScript , Dynamic HTML , SVG og andre komponenter i rige webapplikationer . Ældre versioner mangler ofte disse.

Design

På grund af de konkurrerende interesser om kompatibilitet og funktionalitet er der opstået mange designstrategier.

Mange softwaresystemer bruger en lagdelt arkitektur, hvor platformafhængig kode er begrænset til de øverste og nederste lag.

Yndefuld nedbrydning

Graciøs nedbrydning forsøger at levere den samme eller lignende funktionalitet til alle brugere og platforme, samtidig med at denne funktionalitet reduceres til en mindst fællesnævner for mere begrænsede klientbrowsere. For eksempel kan en bruger, der forsøger at bruge en browser med begrænset funktion til at få adgang til Gmail, bemærke, at Gmail skifter til grundlæggende tilstand med reduceret funktionalitet, men stadig er i brug.

Flere kodebaser

Nogle software vedligeholdes i forskellige kodebaser for forskellige (hardware og OS) platforme med tilsvarende funktionalitet. Dette kræver mere indsats for at vedligeholde koden, men kan være umagen værd, hvor mængden af ​​platformspecifik kode er høj.

Enkelt kodebase

Denne strategi er afhængig af at have en kodebase, der kan kompileres til flere platformspecifikke formater. En teknik er betinget kompilering . Med denne teknik gentages kode, der er fælles for alle platforme. Kodeblokke, der kun er relevante for visse platforme, gøres betingede, så de kun tolkes eller kompileres, når det er nødvendigt. En anden teknik er adskillelse af funktionalitet, som deaktiverer funktionalitet, der ikke understøttes af browsere eller operativsystemer, mens den stadig leverer en komplet applikation til brugeren. (Se også: Adskillelse af bekymringer .) Denne teknik bruges i webudvikling, hvor fortolket kode (som i scriptsprog) kan forespørge på den platform, den kører på for at udføre forskellige blokke betinget.

Tredjepartsbiblioteker

Tredjepartsbiblioteker forsøger at forenkle kapaciteten på tværs af platforme ved at skjule kompleksiteten af ​​kundedifferentiering bag en enkelt, samlet API på bekostning af leverandørlås .

Responsivt webdesign

Responsivt webdesign (RWD) er en webdesign -tilgang, der har til formål at udforme webstedets visuelle layout for at give en optimal seeroplevelse - let læsning og navigation med et minimum af størrelse, panorering og rulning - på tværs af en lang række enheder, fra mobil telefoner til stationære computerskærme. Lidt eller ingen platformsspecifik kode bruges med denne teknik.

Test

Cross-platform applikationer har brug for meget mere integrationstest . Nogle webbrowsere forbyder installation af forskellige versioner på den samme maskine. Der er flere metoder, der bruges til at målrette mod flere platforme, men alle resulterer i software, der kræver betydelig manuel indsats til test og vedligeholdelse. Teknikker som fuld virtualisering bruges undertiden som en løsning på dette problem.

Værktøjer som f.eks. Page Object Model gør det muligt at scripts på tværs af platforme, så en testcase dækker flere versioner af en app. Hvis forskellige versioner har lignende brugergrænseflader, kan alle testes med en testcase.

Traditionelle applikationer

Webapplikationer bliver stadig mere populære, men mange computerbrugere bruger stadig traditionel applikationssoftware, som ikke er afhængig af en klient/webserverarkitektur. Skelnen mellem traditionelle og webapplikationer er ikke altid klar. Funktioner, installationsmetoder og arkitekturer til web og traditionelle applikationer overlapper og slører sondringen. Ikke desto mindre er denne forenklende sondring en almindelig og nyttig generalisering.

Binær software

Traditionel applikationssoftware er blevet distribueret som binære filer, især eksekverbare filer . Eksekverbare filer understøtter kun platform, de blev bygget til-hvilket betyder, at en enkelt tværplatforms eksekverbar fil kunne være meget oppustet med kode, der aldrig udføres på en bestemt platform. I stedet er der generelt et udvalg af eksekverbare filer, der hver er bygget til en platform.

For software, der distribueres som en binær eksekverbar, f.eks. Den, der er skrevet i C eller C ++, skal der være en softwareopbygning til hver platform ved hjælp af et værktøjssæt, der oversætter - transkompilerer - en enkelt kodebase til flere binære eksekverbare filer. F.eks. Er Firefox , en open source-webbrowser, tilgængelig på Windows, macOS (både PowerPC og x86 gennem det, Apple kalder en Universal binær ), Linux og BSD på flere computerarkitekturer. De fire platforme (i dette tilfælde Windows, macOS, Linux og BSD) er separate eksekverbare distributioner, selvom de stort set kommer fra den samme kildekode .

Brugen af ​​forskellige værktøjssæt er muligvis ikke nok til at bygge en fungerende eksekverbar fil til forskellige platforme. I dette tilfælde skal programmører overføre kildekoden til den nye platform. For eksempel kan en applikation som Firefox, der allerede kører på Windows på x86-familien, også ændres og genopbygges til at køre på Linux på x86 (og muligvis andre arkitekturer). De flere versioner af koden kan gemmes som separate kodebaser eller flettes til en kodebase.

Et alternativ til porting er virtualisering på tværs af platforme , hvor applikationer, der er sammensat til en platform, kan køre på en anden uden ændring af kildekoden eller binære filer. Som et eksempel kører Apples Rosetta , der er indbygget i Intel -baserede Macintosh -computere, applikationer, der er kompileret til den tidligere generation af Mac'er, der brugte PowerPC -CPU'er. Et andet eksempel er IBM PowerVM Lx86 , som tillader Linux/x86 -applikationer at køre uændret på Linux/Power OS.

Eksempel på cross-platform binær software:

  • Den LibreOffice kontorpakke er bygget til Microsoft Windows, MacOS, mange Linux-distributioner, FreeBSD , NettBSD , OpenBSD , Android, iOS, Chrome OS, webbaseret samar Online og mange andre. Mange af disse understøttes på flere hardwareplatforme med processorarkitekturer, herunder IA-32 , x86-64 og ARM .

Scripts og fortolkede sprog

Et script kan anses for at være tværplatform, hvis dets tolk er tilgængelig på flere platforme, og scriptet kun bruger de faciliteter, der er indbygget i sproget. For eksempel vil et script skrevet i Python til et Unix-lignende system sandsynligvis køre med lidt eller ingen ændringer på Windows, fordi Python også kører på Windows; faktisk er der mange implementeringer (f.eks. IronPython til .NET Framework ). Det samme gælder for mange af open-source scriptsprogene .

I modsætning til binære eksekverbare filer kan det samme script bruges på alle computere, der har software til at fortolke scriptet. Dette skyldes, at scriptet generelt er gemt i ren tekst i en tekstfil . Der kan være nogle trivielle spørgsmål, f.eks. Repræsentationen af ​​en ny linjetegn .

Nogle populære scriptsprog på tværs af platforme er:

  • bash -En Unix-shell kører sædvanligvis på Linux og andre moderne Unix-lignende systemer samt på Windows via Cygwin POSIX- kompatibilitetslaget.
  • Perl - Først udgivet i 1987. Anvendes til CGI -programmering, små systemadministrationsopgaver og mere.
  • PHP - Mest brugt til webapplikationer.
  • Python -Et sprog, der fokuserer på hurtig applikationsudvikling og let at skrive, i stedet for effektivitet i løbetid.
  • Ruby -Et objektorienteret sprog, der har til formål at være let at læse. Kan også bruges på internettet gennem Ruby on Rails .
  • Tcl - Et dynamisk programmeringssprog, der er velegnet til en lang række anvendelser, herunder web- og desktop -applikationer, netværk, administration, test og mange flere.

Computerspil

Cross-platform eller multi-platform er et begreb, der også kan gælde videospil udgivet på en række videospilkonsoller . Eksempler på spil på tværs af platforme inkluderer: Miner 2049er , Tomb Raider: Legend , FIFA-serien , NHL-serien og Minecraft .

Hver er blevet frigivet på tværs af en række spilplatforme, såsom Wii , PlayStation 3 , Xbox 360 , personlige computere og mobile enheder .

Sone platforme er sværere at skrive for end andre. For at opveje dette frigives et videospil muligvis først på et par platforme, derefter senere på andre. Typisk sker dette, når et nyt spilsystem udgives, fordi videospiludviklere skal gøre sig bekendt med dets hardware og software.

Nogle spil er muligvis ikke tværplatforme på grund af licensaftaler mellem udviklere og producenter af videospilkonsoller, der begrænser udviklingen til en bestemt konsol. Som et eksempel kunne Disney oprette et spil med den hensigt at frigive det på de nyeste Nintendo og Sony spilkonsoller. Skulle Disney først licensere spillet med Sony først, kan det være påkrævet at frigive spillet udelukkende på Sonys konsol i en kort periode eller på ubestemt tid .

Spil på tværs af platforme

Flere udviklere har implementeret måder at spille spil online på, mens de bruger forskellige platforme. Psyonix , Epic Games , Microsoft og Valve besidder alle teknologi, der gør det muligt for Xbox 360 og PlayStation 3 -spillere at spille med pc -gamere, hvilket efterlader beslutningen om, hvilken platform der skal bruges til forbrugerne. Det første spil, der tillod dette niveau af interaktivitet mellem pc- og konsolspil, var Quake 3 .

Spil, der er udstyret på tværs af platforme online spil inkluderer Rocket League , Final Fantasy XIV , Street Fighter V , Killer Instinct , Paragon og Fable Fortune , og Minecraft med sin bedre sammen opdatering på Windows 10 , VR udgaver, Pocket Edition og Xbox One .

Programmering

Cross-platform programmering er praksis med bevidst at skrive software til at arbejde på mere end én platform.

Tilgange

Der er forskellige måder at skrive en cross-platform-applikation på. En tilgang er at oprette flere versioner af den samme software i forskellige kildetræer - med andre ord kan Microsoft Windows -versionen af ​​et program have et sæt kildekodefiler og Macintosh -versionen en anden, mens et FOSS *nix -system muligvis har en tredje. Selvom dette er ligetil, kan det i forhold til at udvikle til kun én platform koste meget mere at betale et større team eller frigive produkter langsommere. Det kan også resultere i, at flere fejl kan spores og rettes.

En anden tilgang er at bruge software, der skjuler forskellene mellem platformene. Dette abstraktionslag isolerer applikationen fra platformen. Sådanne applikationer er platform agnostiske . Applikationer, der kører på JVM, er bygget på denne måde.

Nogle applikationer blander forskellige metoder til cross-platform programmering for at oprette den endelige applikation. Et eksempel er Firefox-webbrowseren, der bruger abstraktion til at bygge nogle af komponenterne på lavere niveau med separate kildetræer til implementering af platformspecifikke funktioner (som GUI) og implementering af mere end et scriptsprog for at lette softwareportabilitet . Firefox implementerer XUL , CSS og JavaScript til udvidelse af browseren, ud over klassiske Netscape -stil browser plugins. Meget af selve browseren er skrevet i XUL, CSS og JavaScript.

Værktøjssæt og miljøer

Der er mant-værktøjer til rådighed for at hjælpe processen med programmering på tværs af platforme:

  • 8.: et udviklingssprog, der bruger Juce som sit GUI -lag. Det understøtter i øjeblikket Android, iOS, Windows, macOS, Linux og Raspberry Pi.
  • Anant Computing : En mobil applikationsplatform, der fungerer på alle indiske sprog, herunder deres tastaturer, og som også understøtter AppWallet og native performance i alle operativsystemer.
  • AppearIQ : en ramme, der understøtter arbejdsgangen for appudvikling og implementering i et virksomhedsmiljø. Native udviklede containere præsenterer hardwarefunktioner på de mobile enheder eller tablets via en API til HTML5 -kode, hvilket letter udviklingen af ​​mobile apps, der kører på forskellige platforme.
  • Boden: en UI -ramme skrevet i C ++.
  • Kairo : et gratis softwarebibliotek, der bruges til at levere en vektorgrafikbaseret, enhedsuafhængig API. Det er designet til at give primitiver til 2-dimensionel tegning på tværs af en række forskellige backends. Kairo er skrevet i C og har bindinger til mange programmeringssprog.
  • Cocos2d : en open-source værktøjskasse og spilmotor til udvikling af 2D og enkle 3D cross-platform spil og applikationer.
  • Kodenavn One : en open-source Write Once Run Anywhere (WORA) -ramme til Java- og Kotlin-udviklere.
  • Delphi : en IDE, der bruger et Pascal-baseret sprog til udvikling. Det understøtter Android, iOS, Windows, macOS, Linux.
  • Ecere SDK: en GUI og 2D/3D grafikværktøj og IDE, skrevet i eC og med understøttelse af yderligere sprog som C og Python. Det understøtter Linux, FreeBSD, Windows, Android, macOS og internettet via Emscripten eller Binaryen (WebAssemble).
  • Eclipse : et open-source udviklingsmiljø. Implementeret i Java med en konfigurerbar arkitektur, der understøtter mange værktøjer til softwareudvikling. Tilføjelser er tilgængelige til flere sprog, herunder Java og C ++.
  • FLTK : en open-source værktøjskasse, men mere let, fordi den begrænser sig til GUI.
  • Flutter : En UI-ramme på tværs af platforme til Android og iOS udviklet af Google .
  • fpGUI : En open-source widget-værktøjskasse, der er fuldstændigt implementeret i Object Pascal. Det understøtter i øjeblikket Linux, Windows og lidt Windows CE.
  • GeneXus : En Windows hurtige udvikling af software løsning til cross-platform program skabelse og implementering baseret på viden repræsentation og støtte C # , COBOL , Java , herunder Android og BlackBerry intelligente enheder, Objective-C til Apple mobile enheder, RPG , Ruby , Visual Basic , og Visual FoxPro .
  • GLBasic : En BASIC dialekt og compiler, der genererer C ++ - kode. Det inkluderer krydskompilatorer til mange platforme og understøtter talrige platforme (Windows, Mac, Linux, Android, iOS og nogle eksotiske håndholdte).
  • Godot : en SDK, der bruger Godot Engine.
  • GTK+ : En open-source widget-værktøjskasse til Unix-lignende systemer med X11 og Microsoft Windows.
  • Haxe : Et open source-sprog.
  • Juce : En applikationsramme skrevet i C ++, der bruges til at skrive native software på mange systemer (Microsoft Windows, POSIX, macOS), uden ændring af koden.
  • Kivy : en open-source cross-platform UI-ramme skrevet i Python . Det understøtter Android , iOS , Linux , OS X , Windows og Raspberry Pi .
  • LEADTOOLS : SDK-biblioteker på tværs af platforme til at integrere genkendelse, dokument, medicin, billeddannelse og multimedieteknologier i Windows, iOS, macOS, Android, Linux og webapplikationer.
  • LiveCode : et kommercielt sprogudviklingssprog på tværs af platforme, der er inspireret af HyperTalk.
  • Lazarus : Et programmeringsmiljø for FreePascal Compiler. Det understøtter oprettelsen af ​​selvstændige grafiske og konsolapplikationer og kører på Linux, MacOSX, iOS, Android, WinCE, Windows og WEB.
  • Max/MSP : Et visuelt programmeringssprog, der indkapsler platformuafhængig kode med et platformsspecifikt runtime-miljø i applikationer til macOS og Windows En cross-platform Android-runtime. Det tillader umodificerede Android -apps at køre indbygget på iOS og macOS
  • Mendix : en skybaseret low-code applikationsudviklingsplatform.
  • MonoCross : et open-source model-view-controller designmønster, hvor modellen og controlleren er tværplatform, men visningen er platformsspecifik.
  • Mono : En open-source cross-platform version af Microsoft .NET (en ramme for applikationer og programmeringssprog)
  • MoSync : en open-source SDK til udvikling af mobilplatformapps i C ++-familien.
  • Mozilla-applikationsramme : en open source-platform til opbygning af macOS-, Windows- og Linux-applikationer.
  • En cross-platform JavaScript/TypeScript-ramme til Android- og iOS-udvikling.
  • OpenGL : et 3D -grafikbibliotek.
  • Pixel Game Maker MV : En proprietær 2D -spiludviklingssoftware til Windows til udvikling af Windows- og Nintendo Switch -spil.
  • PureBasic : et proprietært sprog og IDE til opbygning af macOS, Windows og Linux applikationer.
  • ReNative : Den universelle udviklings-SDK til at bygge multi-platform-projekter med React Native. Indeholder nyeste iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS og Firefox TV -platforme.
  • Qt : en applikationsramme og widget-værktøjskasse til Unix-lignende systemer med X11 , Microsoft Windows, macOS og andre systemer-tilgængelig under både proprietære og open-source licenser .
  • Enkelt og hurtigt multimediebibliotek: Et multimedie C ++ API, der giver adgang til grafik, input, lyd osv. På lavt og højt niveau.
  • Simple DirectMedia Layer : et open-source multimediebibliotek skrevet i C, der skaber en abstraktion over forskellige platforme grafik, lyd og input- API'er . Det kører på operativsystemer, herunder Linux, Windows og macOS og er rettet mod spil og multimedieprogrammer.
  • Smartface : et native app -udviklingsværktøj til at oprette mobile applikationer til Android og iOS ved hjælp af WYSIWYG design editor med JavaScript kode editor.
  • Tcl/Tk
  • Ultimate ++ : en C ++ - hurtig applikationsudviklingsramme med fokus på programmørers produktivitet. Det indeholder et sæt biblioteker (GUI, SQL osv.) Og et integreret udviklingsmiljø. Det understøtter Windows og Unix-lignende OS-er.
  • Unity : En anden tvær-platform SDK, der bruger Unity Engine.
  • Uno Platform : Windows, macOS, iOS, Android, WebAssemble og Linux ved hjælp af C#.
  • Unreal : En tvær-platform SDK, der bruger Unreal Engine.
  • V-Play Engine : V-Play er en tvær-platform udviklings-SDK baseret på den populære Qt-ramme. V-Play apps og spil oprettes i Qt Creator.
  • WaveMaker : Et udviklingsværktøj med lav kode til at oprette responsive web- og hybridmobilapplikationer (Android og iOS).
  • WinDev: et integreret udviklingsmiljø til Windows, Linux, .Net og Java og webbrowsere. Optimeret til forretnings- og industrielle applikationer.
  • wxWidgets : en open-source widget-værktøjskasse, der også er en applikationsramme . Det kører på Unix-lignende systemer med X11 , Microsoft Windows og macOS.
  • Xojo : en RAD IDE, der bruger et objektorienteret programmeringssprog til at oprette desktop-, web- og iOS-apps. Xojo laver native, kompilerede desktop -apps til macOS, Windows, Linux og Raspberry Pi. Det opretter kompilerede webapps, der kan køres som selvstændige servere eller via CGI. Og det tilføjede for nylig muligheden for at oprette native iOS -apps.

Udfordringer

Der er mange udfordringer ved udvikling af cross-platform software.

  • Test af applikationer på tværs af platforme kan være betydeligt mere kompliceret, da forskellige platforme kan udvise lidt forskellig adfærd eller subtile fejl. Dette problem har fået nogle udviklere til at spotte udviklingen på tværs af platforme som "skriv en gang, debug overalt", et bud på Sun Microsystems " skriv en gang, kør hvor som helst " marketing slogan.
  • Udviklere er ofte begrænset til at bruge den laveste fællesnævner delmængde af funktioner, der er tilgængelige på alle platforme. Dette kan forhindre programmets ydeevne eller forhindre udviklere i at bruge de mest avancerede funktioner på hver platform.
  • Forskellige platforme har ofte forskellige brugergrænsefladekonventioner, som applikationer på tværs af platforme ikke altid rummer. For eksempel skal applikationer, der er udviklet til macOS og GNOME , placere den vigtigste knap på højre side af et vindue eller en dialog, mens Microsoft Windows og KDE har den modsatte konvention. Selvom mange af disse forskelle er subtile, kan en cross-platform-applikation, der ikke er i overensstemmelse med disse konventioner, føles klodset eller fremmed for brugeren. Når man arbejder hurtigt, kan sådanne modsatrettede konventioner endda resultere i datatab , f.eks. I en dialogboks, der bekræfter, om ændringer skal gemmes eller kasseres.
  • Scriptsprog og VM -bytecode skal oversættes til indfødt eksekverbar kode hver gang de bruges, hvilket pålægger en effektivitetsstraf. Denne straf kan lindres ved hjælp af teknikker som just-in-time kompilering ; men nogle beregningsmæssige omkostninger kan være uundgåelige.
  • Forskellige platforme kræver brug af native pakkeformater som RPM og MSI . Multi-platform installatører som InstallAnywhere imødekommer dette behov.
  • Udførelsesmiljøer på tværs af platforme kan lide sikkerhedsfejl på tværs af platforme og skabe et frugtbart miljø for malware på tværs af platforme.

Se også

Referencer