Programari multiplataforma
Dins de la informàtica, el programari multiplataforma (també anomenat programari multiplataforma, programari independent de la plataforma o programari independent de la plataforma) és un programari informàtic dissenyat per funcionar en diverses plataformes informàtiques.[1] Alguns programes multiplataforma requereixen una compilació independent per a cada plataforma, però alguns es poden executar directament en qualsevol plataforma sense preparació especial, escrits en un llenguatge interpretat o compilats en bytecode portàtils per als quals els intèrprets o paquets d'execució són components comuns o estàndard de totes les plataformes compatibles.[2]
Per exemple, una aplicació multiplataforma es pot executar a Linux, macOS i Microsoft Windows. El programari multiplataforma es pot executar en moltes plataformes, o només en dues. Alguns marcs per al desenvolupament multiplataforma són Codename One, ArkUI-X, Kivy, Qt, GTK, Flutter, NativeScript, Xamarin, Apache Cordova, Ionic i React Native.[3]
Plataformes
[modifica]La plataforma pot fer referència al tipus de processador (CPU) o un altre maquinari en què s'executa un sistema operatiu (SO) o aplicació, el tipus de sistema operatiu o una combinació dels dos.[4] Un exemple de plataforma comuna és Android, que s'executa amb la família d'arquitectures ARM. Altres plataformes conegudes són Linux/Unix, macOS i Windows, totes elles multiplataforma.[4] Les aplicacions es poden escriure depenent de les característiques d'una plataforma concreta, ja sigui el maquinari, el sistema operatiu o la màquina virtual (VM) en què s'executa. Per exemple, la plataforma Java és una plataforma de VM comuna que s'executa en molts sistemes operatius i tipus de maquinari.
Maquinari
[modifica]Una plataforma de maquinari pot fer referència a una arquitectura de conjunt d'instruccions. Per exemple: ARM o l'arquitectura x86. Aquestes màquines poden executar diferents sistemes operatius.
Els telèfons intel·ligents i les tauletes solen executar l'arquitectura ARM, sovint funcionen amb Android o iOS i altres sistemes operatius mòbils.
Programari
[modifica]Una plataforma de programari pot ser un sistema operatiu (SO) o un entorn de programació, encara que més habitualment és una combinació d'ambdós. Una excepció és Java, que utilitza una màquina virtual (VM) independent del sistema operatiu per executar el bytecode Java. Algunes plataformes de programari són:
- Android (ARM64)
- ChromeOS (ARM32, ARM64, IA-32, x86-64)
- Common Language Infrastructure (CLI) de Microsoft, implementada a:
- HarmonyOS (ARM64, RISC-V, x86, x64 i LoongArch)
- iOS ((ARMv8-A))
- iPadOS (ARMv8-A)
- Java
- Linux ( Alpha, ARC, ARM, C-Sky, Hexagon, LoongArch, m68k, Microblaze, MIPS, Nios II, OpenRISC, PA-RISC, PowerPC, RISC-V, s390, SuperH, SPARC, x86, Xtensa)
- macOS x86, ARM (silici d'Apple)
- Microsoft Windows (IA-32, x86-64, ARM, ARM64)
- PlayStation 4 (x86), PlayStation 3 (PowerPC) i PlayStation Vita (ARM)
- Solaris (SPARC, x86)
- SPARC
- Unix (moltes plataformes des de 1969)
- Navegadors web : la majoria són compatibles entre si, que executen aplicacions web de JavaScript
- Xbox
Implementació
[modifica]Perquè el programari es consideri multiplataforma, ha de funcionar en més d'una arquitectura o sistema operatiu informàtic. El desenvolupament d'aquest programari pot ser una tasca que requereix molt de temps perquè els diferents SO tenen diferents interfícies de programació d'aplicacions (API).
És possible que el programari escrit per a un sistema operatiu no funcioni automàticament en totes les arquitectures que admet el sistema operatiu. El fet que el programari estigui escrit en un llenguatge de programació popular com ara C o C++, no vol dir que s'executi en tots els SO que admeten aquest llenguatge, o fins i tot en diferents versions del mateix sistema operatiu.
Aplicacions web
[modifica]Les aplicacions web normalment es descriuen com a multiplataforma perquè, idealment, són accessibles des de qualsevol navegador web: el navegador és la plataforma. Les aplicacions web generalment utilitzen un model client-servidor, però varien molt en complexitat i funcionalitat. Pot ser difícil conciliar el desig de funcions amb la necessitat de compatibilitat.
Les aplicacions web bàsiques realitzen la totalitat o la major part del processament des d'un servidor sense estat i passen el resultat al navegador web del client. Tota la interacció de l'usuari amb l'aplicació consisteix en intercanvis senzills de sol·licituds de dades i respostes del servidor. Aquest tipus d'aplicacions era la norma en les primeres fases del desenvolupament d'aplicacions World Wide Web. Aquestes aplicacions segueixen un model de transacció senzill, idèntic al de servir pàgines web estàtiques. Avui en dia, encara són relativament comuns, especialment quan la compatibilitat i la simplicitat entre plataformes es consideren més crítiques que la funcionalitat avançada.
Aplicacions tradicionals
[modifica]Les aplicacions web són cada cop més populars, però molts usuaris d'ordinadors encara utilitzen programari d'aplicacions tradicional que no es basa en una arquitectura client/servidor web. La distinció entre aplicacions tradicionals i web no sempre és clara. Les característiques, els mètodes d'instal·lació i les arquitectures per a aplicacions web i tradicionals se superposen i difuminen la distinció. No obstant això, aquesta distinció simplificadora és una generalització comuna i útil.
Programació
[modifica]La programació multiplataforma és la pràctica d'escriure programari deliberadament per treballar en més d'una plataforma.
Aproximacions
[modifica]Hi ha diferents maneres d'escriure una aplicació multiplataforma. Un enfocament és crear diverses versions del mateix programari en diferents arbres de fonts ; és a dir, la versió de Microsoft Windows d'una aplicació pot tenir un conjunt de fitxers de codi font i la versió de Macintosh un altre, mentre que un sistema FOSS *nix pot tenir un tercer. Tot i que això és senzill, en comparació amb el desenvolupament per a una sola plataforma, pot costar molt més pagar un equip més gran o llançar productes més lentament. També pot donar lloc a més errors que cal seguir i corregir.
Un altre enfocament és utilitzar programari que amagui les diferències entre les plataformes. Aquesta capa d'abstracció aïlla l'aplicació de la plataforma. Aquestes aplicacions són agnòstiques de la plataforma. Les aplicacions que s'executen a la JVM es creen d'aquesta manera.
Algunes aplicacions barregen diversos mètodes de programació multiplataforma per crear l'aplicació final. Un exemple és el navegador web Firefox, que utilitza l'abstracció per construir alguns dels components de nivell inferior, amb subarbres d'origen separats per implementar funcions específiques de la plataforma (com la GUI) i la implementació de més d'un llenguatge de script per facilitar la portabilitat del programari. Firefox implementa XUL, CSS i JavaScript per ampliar el navegador, a més dels clàssics connectors de navegador d'estil Netscape. Gran part del navegador en si està escrit en XUL, CSS i JavaScript.
Referències
[modifica]- ↑ «Design Guidelines: Glossary» (en anglès). java.sun.com. Arxivat de l'original el 2012-02-13. [Consulta: 19 octubre 2011].
- ↑ «SDD Technology blog: Definition of cross platform» (en anglès). SDD Technology. [Consulta: 18 octubre 2020].
- ↑ Lee P Richardson. «Xamarin vs Ionic: A Mobile, Cross Platform, Shootout» (en anglès), 16-02-2016.
- ↑ 4,0 4,1 «Platform Definition» (en anglès). The Linux Information Project. [Consulta: 27 març 2014].
- ↑ «About Mono» (en anglès). mono-project.com. [Consulta: 17 desembre 2015].