Software multiplataforma

Software informático implementado en múltiples plataformas informáticas

En informática , el software multiplataforma (también llamado software multiplataforma , software agnóstico de plataforma o software independiente de plataforma ) es un software de computadora que está diseñado para funcionar en varias plataformas informáticas . [1] Algunos software multiplataforma requieren una compilación separada para cada plataforma, pero algunos se pueden ejecutar directamente en cualquier plataforma sin preparación especial, estando escritos en un lenguaje interpretado o compilados en bytecode portable para el cual los intérpretes o paquetes de tiempo de ejecución son componentes comunes o estándar de todas las plataformas compatibles. [2]

Por ejemplo, una aplicación multiplataforma puede ejecutarse en Linux , macOS y Microsoft Windows . El software multiplataforma puede ejecutarse en muchas plataformas o en tan solo dos. Algunos marcos para el desarrollo multiplataforma son Codename One , ArkUI-X, Kivy , Qt , GTK , Flutter , NativeScript , Xamarin , Apache Cordova , Ionic y React Native . [3]

Plataformas

La plataforma puede referirse al tipo de procesador (CPU) u otro hardware en el que se ejecuta un sistema operativo (SO) o una aplicación , el tipo de SO o una combinación de los dos. [4] Un ejemplo de una plataforma común es Android , que se ejecuta en la familia de arquitectura ARM . Otras plataformas conocidas son Linux / Unix , macOS y Windows , todas ellas multiplataforma. [4] Las aplicaciones se pueden escribir para depender de las características de una plataforma en particular, ya sea el hardware, el SO o la máquina virtual (VM) en la que se ejecuta. Por ejemplo, la plataforma Java es una plataforma de VM común que se ejecuta en muchos SO y tipos de hardware.

Hardware

Una plataforma de hardware puede hacer referencia a una arquitectura de conjunto de instrucciones . Por ejemplo: ARM o la arquitectura x86. Estas máquinas pueden ejecutar diferentes sistemas operativos.

Los teléfonos inteligentes y tabletas generalmente ejecutan arquitectura ARM, estos a menudo ejecutan Android o iOS y otros sistemas operativos móviles .

Software

Una plataforma de software puede ser un sistema operativo (OS) o un entorno de programación , aunque lo más común es que sea una combinación de ambos. Una excepción es Java , que utiliza una máquina virtual (VM) independiente del SO para ejecutar el bytecode de Java . Algunas plataformas de software son:

Menor, histórico

Java

El lenguaje Java se compila normalmente para ejecutarse en una máquina virtual que forma parte de la plataforma Java. La máquina virtual Java (Java VM, JVM) es una CPU implementada en software, que ejecuta todo el código Java. Esto permite que el mismo código se ejecute en todos los sistemas que implementan una JVM. El software Java puede ejecutarse mediante un procesador Java basado en hardware . Esto se utiliza principalmente en sistemas integrados.

El código Java que se ejecuta en la JVM tiene acceso a servicios relacionados con el SO, como entrada/salida (E/S) de disco y acceso a la red, si se conceden los privilegios adecuados. La JVM realiza las llamadas al sistema en nombre de la aplicación Java. Esto permite a los usuarios decidir el nivel de protección adecuado, según una lista de control de acceso (ACL). Por ejemplo, el acceso al disco y a la red suele estar habilitado para aplicaciones de escritorio, pero no para subprogramas basados ​​en navegador . La interfaz nativa de Java (JNI) también se puede utilizar para acceder a funciones específicas del SO, con una pérdida de portabilidad.

Actualmente, el software Java Standard Edition puede ejecutarse en Microsoft Windows, macOS, varios sistemas operativos tipo Unix y varios sistemas operativos en tiempo real para dispositivos integrados. Para las aplicaciones móviles, se utilizan complementos de navegador para dispositivos basados ​​en Windows y Mac, y Android tiene soporte integrado para Java. También existen subconjuntos de Java, como Java Card o Java Platform, Micro Edition , diseñados para dispositivos con recursos limitados.

Implementación

Para que un software se considere multiplataforma, debe funcionar en más de una arquitectura informática o sistema operativo. El desarrollo de este tipo de software puede ser una tarea que demanda mucho tiempo, ya que los distintos sistemas operativos tienen distintas interfaces de programación de aplicaciones (API).

Es posible que el software escrito para un sistema operativo no funcione automáticamente en todas las arquitecturas que ese sistema operativo admite. El hecho de que un software esté escrito en un lenguaje de programación popular , como C o C++ , no significa que se ejecutará en todos los sistemas operativos que admiten ese lenguaje, o incluso en diferentes versiones del mismo sistema operativo.

Aplicaciones web

Las aplicaciones web suelen describirse como multiplataforma porque, idealmente, se puede acceder a ellas desde cualquier navegador web : el navegador es la plataforma. Las aplicaciones web suelen emplear un modelo cliente-servidor , pero varían ampliamente en complejidad y funcionalidad. Puede resultar difícil conciliar el deseo de contar con funciones con la necesidad de compatibilidad.

Las aplicaciones web básicas realizan todo o la mayor parte del procesamiento desde un servidor sin estado y pasan el resultado al navegador web del cliente. Toda la interacción del usuario con la aplicación consiste en intercambios simples de solicitudes de datos y respuestas del servidor. Este tipo de aplicación era la norma en las primeras fases del desarrollo de aplicaciones de la World Wide Web . Dichas aplicaciones siguen un modelo de transacción simple , idéntico al de servir páginas web estáticas . Hoy en día, siguen siendo relativamente comunes, especialmente donde la compatibilidad entre plataformas y la simplicidad se consideran más críticas que la funcionalidad avanzada.

Entre los ejemplos más destacados de aplicaciones web avanzadas se incluyen la interfaz web de Gmail y Google Maps . Estas aplicaciones dependen habitualmente de funciones adicionales que solo se encuentran en las versiones más recientes de los navegadores web más populares. Estas funciones incluyen Ajax , JavaScript , HTML dinámico , SVG y otros componentes de aplicaciones web enriquecidas .

Diseño

Debido a los intereses en competencia entre compatibilidad y funcionalidad, han surgido numerosas estrategias de diseño.

Muchos sistemas de software utilizan una arquitectura en capas donde el código dependiente de la plataforma está restringido a las capas superior e inferior.

Degradación elegante

La degradación elegante intenta proporcionar la misma funcionalidad o una funcionalidad similar a todos los usuarios y plataformas, al tiempo que reduce esa funcionalidad a un mínimo común denominador para los navegadores de clientes más limitados. Por ejemplo, un usuario que intenta utilizar un navegador con funciones limitadas para acceder a Gmail puede notar que Gmail cambia al modo básico, con una funcionalidad reducida pero aún útil.

Varias bases de código

Algunos programas se mantienen en bases de código distintas para diferentes plataformas (hardware y SO), con funcionalidades equivalentes. Esto requiere un mayor esfuerzo para mantener el código, pero puede resultar útil cuando la cantidad de código específico de la plataforma es alta.

Base de código única

Esta estrategia se basa en tener una base de código que se puede compilar en múltiples formatos específicos de la plataforma. Una técnica es la compilación condicional . Con esta técnica, el código que es común a todas las plataformas no se repite. Los bloques de código que solo son relevantes para ciertas plataformas se vuelven condicionales, de modo que solo se interpreten o compilen cuando sea necesario. Otra técnica es la separación de funcionalidad, que deshabilita la funcionalidad no compatible con los navegadores o los sistemas operativos, al tiempo que ofrece una aplicación completa al usuario. (Véase también: Separación de preocupaciones ). Esta técnica se utiliza en el desarrollo web, donde el código interpretado (como en los lenguajes de script) puede consultar la plataforma en la que se ejecuta para ejecutar diferentes bloques de forma condicional. [6]

Bibliotecas de terceros

Las bibliotecas de terceros intentan simplificar la capacidad multiplataforma ocultando las complejidades de la diferenciación de clientes detrás de una API única y unificada, a expensas del bloqueo del proveedor .

Diseño web responsivo

El diseño web responsivo (RWD) es un enfoque de diseño web cuyo objetivo es diseñar el diseño visual de los sitios para brindar una experiencia de visualización óptima (lectura y navegación sencillas con un mínimo de cambios de tamaño, desplazamientos y desplazamientos) en una amplia gama de dispositivos, desde teléfonos móviles hasta monitores de computadoras de escritorio. Con esta técnica, se utiliza poco o ningún código específico de la plataforma.

Pruebas

Las aplicaciones multiplataforma necesitan muchas más pruebas de integración . Algunos navegadores web prohíben la instalación de diferentes versiones en la misma máquina. Existen varios enfoques que se utilizan para abordar múltiples plataformas, pero todos ellos dan como resultado un software que requiere un esfuerzo manual sustancial para las pruebas y el mantenimiento. [7] A veces se utilizan técnicas como la virtualización completa como solución alternativa para este problema.

Las herramientas como el modelo de objetos de página permiten crear scripts para pruebas multiplataforma de modo que un caso de prueba cubra varias versiones de una aplicación. Si distintas versiones tienen interfaces de usuario similares, todas se pueden probar con un solo caso de prueba.

Aplicaciones tradicionales

Las aplicaciones web son cada vez más populares, pero muchos usuarios de ordenadores siguen utilizando software de aplicación tradicional que no se basa en una arquitectura cliente/servidor web. La distinción entre aplicaciones web y tradicionales no siempre es clara. Las características, los métodos de instalación y las arquitecturas de las aplicaciones web y tradicionales se superponen y difuminan la distinción. No obstante, esta distinción simplificadora es una generalización común y útil.

Software binario

El software de aplicación tradicional se ha distribuido como archivos binarios, especialmente archivos ejecutables . Los ejecutables solo admiten la plataforma para la que fueron creados, lo que significa que un único ejecutable multiplataforma podría estar muy sobrecargado con código que nunca se ejecuta en una plataforma en particular. En cambio, generalmente hay una selección de ejecutables, cada uno creado para una plataforma.

En el caso del software que se distribuye como ejecutable binario, como el escrito en C o C++, debe haber una compilación de software para cada plataforma, utilizando un conjunto de herramientas que traduzca (transcompila) una única base de código en varios ejecutables binarios. Por ejemplo, Firefox , un navegador web de código abierto, está disponible en Windows, macOS (tanto PowerPC como x86 a través de lo que Apple Inc. llama un binario universal ), Linux y BSD en múltiples arquitecturas informáticas. Las cuatro plataformas (en este caso, Windows, macOS, Linux y BSD) son distribuciones ejecutables independientes, aunque proceden en gran medida del mismo código fuente . En casos excepcionales, el código ejecutable creado para varias plataformas se combina en un único archivo ejecutable llamado binario fat .

El uso de diferentes conjuntos de herramientas puede no ser suficiente para crear archivos ejecutables que funcionen en diferentes plataformas. En este caso, los programadores deben trasladar el código fuente a la nueva plataforma. Por ejemplo, una aplicación como Firefox, que ya se ejecuta en Windows en la familia x86, se puede modificar y volver a crear para que se ejecute también en Linux en la familia x86 (y potencialmente en otras arquitecturas). Las distintas versiones del código se pueden almacenar como bases de código independientes o fusionar en una sola base de código.

Una alternativa a la portabilidad es la virtualización multiplataforma , en la que las aplicaciones compiladas para una plataforma pueden ejecutarse en otra sin modificar el código fuente ni los binarios. Por ejemplo, Rosetta de Apple , que está integrado en los ordenadores Macintosh basados ​​en Intel , ejecuta aplicaciones compiladas para la generación anterior de Mac que utilizaban CPU PowerPC. Otro ejemplo es IBM PowerVM Lx86 , que permite que las aplicaciones Linux/x86 se ejecuten sin modificaciones en el sistema operativo Linux/Power.

Ejemplo de software binario multiplataforma:

Scripts y lenguajes interpretados

Se puede considerar que un script es multiplataforma si su intérprete está disponible en varias plataformas y el script solo utiliza las funciones integradas en el lenguaje. Por ejemplo, un script escrito en Python para un sistema tipo Unix probablemente se ejecutará con poca o ninguna modificación en Windows, porque Python también se ejecuta en Windows; de hecho, hay muchas implementaciones (por ejemplo, IronPython para .NET Framework ). Lo mismo ocurre con muchos de los lenguajes de scripting de código abierto .

A diferencia de los archivos ejecutables binarios, el mismo script se puede utilizar en todas las computadoras que tengan software para interpretar el script. Esto se debe a que el script generalmente se almacena en texto sin formato en un archivo de texto . Puede haber algunos problemas triviales, como la representación de un carácter de nueva línea .

Algunos lenguajes de programación multiplataforma populares son:

Juegos de vídeo

Multiplataforma o multiplataforma es un término que también se puede aplicar a los videojuegos lanzados en una variedad de consolas de videojuegos . Algunos ejemplos de juegos multiplataforma incluyen: Miner 2049er , Tomb Raider: Legend , la serie FIFA , la serie NHL y Minecraft .

Cada uno de ellos se ha lanzado en una variedad de plataformas de juego, como Wii , PlayStation 3 , Xbox 360 , computadoras personales y dispositivos móviles .

Algunas plataformas son más difíciles de desarrollar que otras, por lo que se necesita más tiempo para desarrollar el videojuego con el mismo estándar. Para compensar esto, un videojuego puede lanzarse primero en algunas plataformas y luego en otras. Por lo general, esto sucede cuando se lanza un nuevo sistema de juego, porque los desarrolladores de videojuegos necesitan familiarizarse con su hardware y software.

Algunos juegos pueden no ser multiplataforma debido a acuerdos de licencia entre desarrolladores y fabricantes de consolas de videojuegos que limitan el desarrollo a una consola en particular. Por ejemplo, Disney podría crear un juego con la intención de lanzarlo en las últimas consolas de Nintendo y Sony . Si Disney obtiene primero la licencia del juego con Sony, es posible que se le exija lanzar el juego únicamente en la consola de Sony durante un breve período o de manera indefinida .

Juego multiplataforma

Varios desarrolladores han implementado formas de jugar juegos en línea mientras se utilizan diferentes plataformas. Psyonix , Epic Games , Microsoft y Valve poseen tecnología que permite a los jugadores de Xbox 360 y PlayStation 3 jugar con jugadores de PC, dejando la decisión de qué plataforma usar a los consumidores. El primer juego que permitió este nivel de interactividad entre juegos de PC y consola (Dreamcast con teclado y mouse especialmente producidos) fue Quake 3. [11] [12]

Los juegos que cuentan con juego en línea multiplataforma incluyen Rocket League , Final Fantasy XIV , Street Fighter V , Killer Instinct , Paragon y Fable Fortune , y Minecraft con su actualización Better Together en Windows 10 , ediciones VR, Pocket Edition y Xbox One .

Programación

La programación multiplataforma es la práctica de escribir deliberadamente software para que funcione en más de una plataforma.

Aproches

Existen diferentes formas de escribir una aplicación multiplataforma. Una de ellas consiste en crear varias versiones del mismo software en diferentes árboles de código fuente ; en otras palabras, la versión de Microsoft Windows de una aplicación puede tener un conjunto de archivos de código fuente y la versión de Macintosh otro, mientras que un sistema FOSS *nix puede tener un tercero. Si bien esto es sencillo, en comparación con el desarrollo para una sola plataforma, puede costar mucho más pagar a un equipo más grande o lanzar productos más lentamente. También puede resultar en más errores que rastrear y corregir.

Otro enfoque consiste en utilizar software que oculte las diferencias entre las plataformas. Esta capa de abstracción aísla la aplicación de la plataforma. Estas aplicaciones son independientes de la plataforma . Las aplicaciones que se ejecutan en la JVM se crean de esta manera.

Algunas aplicaciones combinan varios métodos de programación multiplataforma para crear la aplicación final. Un ejemplo es el navegador web Firefox, que utiliza la abstracción para construir algunos de los componentes de nivel inferior, con subárboles de código fuente separados para implementar características específicas de la plataforma (como la GUI) y la implementación de más de un lenguaje de script para facilitar la portabilidad del software . Firefox implementa XUL , CSS y JavaScript para extender el navegador, además de los complementos de navegador clásicos de estilo Netscape . Gran parte del navegador en sí está escrito en XUL, CSS y JavaScript.

Kits de herramientas y entornos

Hay muchas herramientas [13] [14] disponibles para ayudar en el proceso de programación multiplataforma:

  • 8th: un lenguaje de desarrollo que utiliza Juce como capa de interfaz gráfica de usuario. Actualmente es compatible con Android, iOS, Windows, macOS, Linux y Raspberry Pi.
  • Anant Computing: una plataforma de aplicaciones móviles que funciona en todos los idiomas de la India, incluidos sus teclados, y también admite AppWallet y rendimiento nativo en todos los sistemas operativos.
  • AppearIQ: un framework que apoya el flujo de trabajo de desarrollo e implementación de aplicaciones en un entorno empresarial. Los contenedores desarrollados de forma nativa presentan las características del hardware de los dispositivos móviles o tabletas a través de una API a código HTML5, lo que facilita el desarrollo de aplicaciones móviles que se ejecutan en diferentes plataformas.
  • Boden: un marco de interfaz de usuario escrito en C++.
  • Cairo : una biblioteca de software libre que se utiliza para proporcionar una API independiente del dispositivo basada en gráficos vectoriales. Está diseñada para proporcionar primitivas para dibujos bidimensionales en varios backends diferentes. Cairo está escrita en C y tiene enlaces para muchos lenguajes de programación.
  • Cocos2d : un kit de herramientas y motor de juegos de código abierto para desarrollar juegos y aplicaciones multiplataforma en 2D y 3D simples.
  • Codename One : un marco de trabajo Write Once Run Anywhere (WORA) de código abierto para desarrolladores de Java y Kotlin.
  • Delphi : un IDE que utiliza un lenguaje basado en Pascal para el desarrollo. Es compatible con Android, iOS, Windows, macOS y Linux.
  • Ecere SDK: un conjunto de herramientas y entorno de desarrollo integrado (IDE) para GUI y gráficos 2D/3D escrito en eC y con soporte para lenguajes adicionales como C y Python. Es compatible con Linux, FreeBSD, Windows, Android, macOS y la Web a través de Emscripten o Binaryen (WebAssembly).
  • Eclipse : un entorno de desarrollo de código abierto. Implementado en Java con una arquitectura configurable que admite muchas herramientas para el desarrollo de software. Hay complementos disponibles para varios lenguajes, incluidos Java y C++.
  • FLTK : un kit de herramientas de código abierto, pero más liviano porque se limita a la GUI.
  • Flutter : un marco de interfaz de usuario multiplataforma para Android e iOS desarrollado por Google .
  • fpGUI : un conjunto de herramientas de código abierto para widgets que está completamente implementado en Object Pascal. Actualmente es compatible con Linux, Windows y un poco de Windows CE.
  • GeneXus : una solución de desarrollo rápido de software para Windows para la creación e implementación de aplicaciones multiplataforma basada en la representación del conocimiento y compatible con C# , COBOL , Java (incluidos los dispositivos inteligentes Android y BlackBerry), Objective-C para dispositivos móviles de Apple , RPG , Ruby , Visual Basic y Visual FoxPro .
  • GLBasic : dialecto y compilador de BASIC que genera código C++. Incluye compiladores cruzados para muchas plataformas y es compatible con numerosas plataformas (Windows, Mac, Linux, Android, iOS y algunos dispositivos portátiles exóticos).
  • Godot : un SDK que utiliza Godot Engine.
  • GTK +: un kit de herramientas de widgets de código abierto para sistemas tipo Unix con X11 y Microsoft Windows.
  • Haxe : un lenguaje de código abierto.
  • Juce : un marco de aplicación escrito en C++, utilizado para escribir software nativo en numerosos sistemas (Microsoft Windows, POSIX, macOS), sin cambios en el código.
  • Kivy : un marco de interfaz de usuario multiplataforma de código abierto escrito en Python . Es compatible con Android , iOS , Linux , OS X , Windows y Raspberry Pi .
  • LEADTOOLS: Bibliotecas SDK multiplataforma para integrar tecnologías de reconocimiento, documentos, médicas, imágenes y multimedia en aplicaciones de Windows, iOS, macOS, Android, Linux y web. [15]
  • LiveCode : un lenguaje de desarrollo rápido de aplicaciones multiplataforma comercial inspirado en HyperTalk.
  • Lazarus : un entorno de programación para el compilador FreePascal. Permite la creación de aplicaciones gráficas y de consola independientes y funciona en Linux, MacOSX, iOS, Android, WinCE, Windows y WEB.
  • Max/MSP : lenguaje de programación visual que encapsula código independiente de la plataforma con un entorno de ejecución específico de la plataforma en aplicaciones para macOS y Windows. Un entorno de ejecución Android multiplataforma. Permite que las aplicaciones Android sin modificar se ejecuten de forma nativa en iOS y macOS.
  • Mendix : una plataforma de desarrollo de aplicaciones de bajo código basada en la nube.
  • MonoCross : un patrón de diseño de modelo-vista-controlador de código abierto donde el modelo y el controlador son multiplataforma pero la vista es específica de la plataforma. [16]
  • Mono : una versión multiplataforma de código abierto de Microsoft .NET (un marco para aplicaciones y lenguajes de programación)
  • MoSync : un SDK de código abierto para el desarrollo de aplicaciones de plataforma móvil en la familia C++.
  • Framework de aplicaciones de Mozilla : una plataforma de código abierto para crear aplicaciones para macOS, Windows y Linux.
  • OpenGL : una biblioteca de gráficos 3D.
  • Pixel Game Maker MV : un software de desarrollo de juegos 2D propietario para Windows para desarrollar juegos para Windows y Nintendo Switch .
  • PureBasic : un lenguaje propietario y una IDE para crear aplicaciones para macOS, Windows y Linux.
  • ReNative: el SDK de desarrollo universal para crear proyectos multiplataforma con React Native. Incluye las últimas plataformas iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS y Firefox TV.
  • Qt : un marco de aplicación y un kit de herramientas de widgets para sistemas tipo Unix con X11 , Microsoft Windows, macOS y otros sistemas, disponible bajo licencias tanto propietarias como de código abierto .
  • Biblioteca multimedia simple y rápida : una API C++ multimedia que proporciona acceso de bajo y alto nivel a gráficos, entrada, audio, etc.
  • Simple DirectMedia Layer : una biblioteca multimedia de código abierto escrita en C que crea una abstracción sobre las API de gráficos, sonido y entrada de varias plataformas . Se ejecuta en sistemas operativos como Linux, Windows y macOS y está destinada a juegos y aplicaciones multimedia.
  • Smartface : una herramienta de desarrollo de aplicaciones nativas para crear aplicaciones móviles para Android e iOS, utilizando el editor de diseño WYSIWYG con editor de código JavaScript.
  • Tcl / Tk
  • Titanium Mobile : marco multiplataforma de código abierto para el desarrollo de Android e iOS.
  • U++ : un marco de interfaz gráfica de usuario (GUI) de C++ para mejorar el rendimiento. Incluye un conjunto de bibliotecas (GUI, SQL, etc.) y un entorno de desarrollo integrado (IDE). Es compatible con Windows, macOS y Linux.
  • Unity : otro SDK multiplataforma que utiliza Unity Engine.
  • Plataforma Uno : Windows, macOS, iOS, Android, WebAssembly y Linux usando C#.
  • Unreal : un SDK multiplataforma que utiliza Unreal Engine.
  • Motor V-Play : V-Play es un SDK de desarrollo multiplataforma basado en el popular marco Qt. Las aplicaciones y los juegos V-Play se crean dentro de Qt Creator.
  • WaveMaker : una herramienta de desarrollo de bajo código para crear aplicaciones web responsivas y móviles híbridas (Android e iOS).
  • WinDev: un entorno de desarrollo integrado para Windows, Linux, .Net y Java, y navegadores web. Optimizado para aplicaciones comerciales e industriales.
  • wxWidgets : un kit de herramientas de widgets de código abierto que también es un marco de aplicación . [17] Se ejecuta en sistemas tipo Unix con X11 , Microsoft Windows y macOS.
  • Xojo : un IDE RAD que utiliza un lenguaje de programación orientado a objetos para compilar aplicaciones de escritorio, web e iOS. Xojo admite la compilación nativa para Windows, macOS, iOS y Linux, y también puede crear aplicaciones web compiladas que se pueden ejecutar como servidores independientes o mediante CGI.

Desafíos

Existen muchos desafíos al desarrollar software multiplataforma.

  • Probar aplicaciones multiplataforma puede resultar considerablemente más complicado, ya que las distintas plataformas pueden mostrar comportamientos ligeramente diferentes o errores sutiles. Este problema ha llevado a algunos desarrolladores a ridiculizar el desarrollo multiplataforma como "escribir una vez, depurar en todas partes", una versión del eslogan de marketing de Sun Microsystems " escribir una vez, ejecutar en cualquier lugar ".
  • Los desarrolladores suelen estar limitados a utilizar el subconjunto de características del mínimo común denominador que está disponible en todas las plataformas. Esto puede afectar el rendimiento de la aplicación o impedir que los desarrolladores utilicen las características más avanzadas de cada plataforma.
  • Las diferentes plataformas suelen tener diferentes convenciones de interfaz de usuario, que las aplicaciones multiplataforma no siempre cumplen. Por ejemplo, se supone que las aplicaciones desarrolladas para macOS y GNOME colocan el botón más importante en el lado derecho de una ventana o cuadro de diálogo, mientras que Microsoft Windows y KDE tienen la convención opuesta. Aunque muchas de estas diferencias son sutiles, una aplicación multiplataforma que no se ajuste a estas convenciones puede resultar torpe o extraña para el usuario. Al trabajar rápidamente, estas convenciones opuestas pueden incluso provocar la pérdida de datos , como en un cuadro de diálogo que confirma si se deben guardar o descartar los cambios.
  • Los lenguajes de programación y el código de bytes de las máquinas virtuales deben traducirse a código ejecutable nativo cada vez que se utilizan, lo que supone una penalización del rendimiento. Esta penalización se puede aliviar utilizando técnicas como la compilación en tiempo real , pero es posible que sea inevitable que se produzca cierta sobrecarga computacional.
  • Las distintas plataformas requieren el uso de formatos de paquetes nativos, como RPM y MSI . Los instaladores multiplataforma, como InstallAnywhere, satisfacen esta necesidad.
  • Los entornos de ejecución multiplataforma pueden sufrir fallas de seguridad multiplataforma, lo que crea un entorno fértil para el malware multiplataforma. [18]

Véase también

Referencias

  1. ^ "Pautas de diseño: glosario". java.sun.com. Archivado desde el original el 13 de febrero de 2012. Consultado el 19 de octubre de 2011 .
  2. ^ "Blog de SDD Technology: Definición de multiplataforma". SDD Technology . Consultado el 18 de octubre de 2020 .
  3. ^ Lee P Richardson (16 de febrero de 2016). "Xamarin vs Ionic: una prueba multiplataforma para dispositivos móviles".
  4. ^ ab "Definición de plataforma". The Linux Information Project . Consultado el 27 de marzo de 2014 .
  5. ^ "Acerca de Mono". mono-project.com . Consultado el 17 de diciembre de 2015 .
  6. ^ Corti, Sascha P. (octubre de 2011). «Detección de características y navegador». Revista MSDN . Consultado el 28 de enero de 2014 .
  7. ^ Choudhary, SR (2014). "Pruebas y mantenimiento multiplataforma de aplicaciones web y móviles". Actas complementarias de la 36.ª Conferencia internacional sobre ingeniería de software. págs. 642–645. doi :10.1145/2591062.2591097. hdl : 1853/53588 . ISBN . 9781450327688.S2CID 1903037  .
  8. ^ Mehrotra, Pranob (1 de diciembre de 2020). "La suite Collabora Office obtiene un nuevo diseño para tabletas Android y Chromebooks". XDA-Developers . Consultado el 15 de enero de 2021 . Collabora Office es una alternativa popular de código abierto a la suite Microsoft Office. Se basa en LibreOffice y está disponible en una variedad de plataformas, incluidas Windows, Linux, iOS y Android. Este año, en julio, una importante actualización de la suite ofimática trajo soporte para dispositivos Chrome OS.
  9. ^ "¡Collabora Office en iOS y Android es ahora mucho mejor!". Adfinis . 2020-12-15 . Consultado el 2021-01-15 . ...interfaces táctiles optimizadas: una para tabletas y otra para pantallas de teléfonos. ...(iOS, iPadOS, Chromebooks, Android).
  10. ^ "Nextcloud Ubuntu Appliance agrega Collabora Online a la imagen de Raspberry Pi". MuyLinux . 2021-03-26 . Consultado el 2021-03-30 . la primera solución viable de oficina web alojada por uno mismo para la popular plataforma Raspberry Pi 4
  11. ^ Cribba. Quake III Arena, Giant Bombcast , 15 de febrero de 2013.
  12. ^ Una mirada más cercana al kit de inicio de Internet para Dreamcast
  13. ^ El kit de herramientas de GUI, página del marco
  14. ^ "Preguntas frecuentes sobre plataformas independientes". Archivado desde el original el 16 de agosto de 2008. Consultado el 25 de abril de 2009 .
  15. ^ "Bibliotecas de SDK multiplataforma para reconocimiento, documentos, aplicaciones médicas, imágenes y multimedia". www.leadtools.com . Consultado el 3 de marzo de 2021 .
  16. ^ "12 beneficios del desarrollo de aplicaciones multiplataforma con Xamarin". HeadWorks . 15 de marzo de 2019.
  17. ^ Descripción de WxWidgets
  18. ^ Warren, Tom (14 de enero de 2020). «Microsoft se despide de Windows 7 y de los millones de PC que aún lo utilizan». The Verge . Consultado el 6 de febrero de 2020 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Software_multiplataforma&oldid=1251704676"