Articulo de referencia

Software multiplataforma

Pantalla de VirtualBox con representaciones de las principales plataformas de sistemas operativos de escritorio. En informática , el software multiplataforma (también llamado so...

Pantalla de VirtualBox con representaciones de las principales plataformas de sistemas operativos de escritorio.

En informática , el software multiplataforma (también llamado software independiente de la plataforma o software independiente de la plataforma ) es un software diseñado para funcionar en varias plataformas informáticas . [ 1 ] Algunos programas multiplataforma requieren una compilación independiente para cada plataforma, pero otros pueden ejecutarse directamente en cualquier plataforma sin preparación especial, ya que están escritos en un lenguaje interpretado o compilados a código de bytes portátil cuyos 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 frameworks 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 , al tipo de SO o a una combinación de ambos. [ 4 ] Un ejemplo de 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 son multiplataforma. [ 4 ] Las aplicaciones pueden escribirse 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 referirse a una arquitectura de conjunto de instrucciones . Por ejemplo: ARM o la arquitectura x86. Estas máquinas pueden ejecutar diferentes sistemas operativos.

Los smartphones y las tabletas generalmente utilizan la arquitectura ARM, y suelen ejecutar Android, iOS u otros sistemas operativos móviles .

Software

Una plataforma de software puede ser un sistema operativo (SO) 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 sistema operativo para ejecutar el código de bytes de Java . Algunas plataformas de software son:

Menor, histórico

Java

El lenguaje Java se compila normalmente para ejecutarse en una máquina virtual (VM) que forma parte de la plataforma Java. La máquina virtual Java (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 embebidos.

El código Java que se ejecuta en la JVM tiene acceso a servicios del sistema operativo, como la entrada/salida (E/S) de disco y el acceso a la red, si se le otorgan 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 apropiado, 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 applets basados ​​en navegador . La Interfaz Nativa de Java (JNI) también se puede usar para acceder a funciones específicas del sistema operativo, aunque con una pérdida de portabilidad.

Actualmente, el software Java Standard Edition puede ejecutarse en Microsoft Windows, macOS, varios sistemas operativos tipo Unix y diversos sistemas operativos en tiempo real para dispositivos integrados. Para aplicaciones móviles, se utilizan complementos de navegador en dispositivos Windows y Mac, y Android cuenta con 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. Desarrollar este tipo de software puede ser una tarea que consume mucho tiempo, ya que los diferentes sistemas operativos tienen distintas interfaces de programación de aplicaciones (API).

El software escrito para un sistema operativo puede no funcionar automáticamente en todas las arquitecturas que este admite. El hecho de que un software esté escrito en un lenguaje de programación popular como C o C++ no significa que vaya a funcionar en todos los sistemas operativos que lo admiten, ni siquiera en diferentes versiones del mismo sistema operativo.

Aplicaciones web

Las aplicaciones web suelen describirse como multiplataforma porque, idealmente, son accesibles desde cualquier navegador web : el navegador es la plataforma. Generalmente, las aplicaciones web emplean un modelo cliente-servidor , pero varían mucho en complejidad y funcionalidad. Puede resultar difícil conciliar el deseo de incorporar funcionalidades con la necesidad de compatibilidad.

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

Ejemplos destacados de aplicaciones web avanzadas incluyen la interfaz web de Gmail y Google Maps . Estas aplicaciones suelen depender 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 la contraposición entre compatibilidad y funcionalidad, han surgido numerosas estrategias de diseño.

Muchos sistemas de software utilizan una arquitectura por capas en la que el código dependiente de la plataforma se restringe a las capas superior e inferior.

Degradación elegante

La degradación gradual busca brindar la misma funcionalidad, o una similar, a todos los usuarios y plataformas, reduciéndola al mínimo común denominador para los navegadores con menos funciones. Por ejemplo, un usuario que intenta acceder a Gmail con un navegador limitado puede notar que Gmail cambia al modo básico, con funcionalidad reducida pero aún útil.

Múltiples bases de código

Algunos programas se mantienen en bases de código distintas para diferentes plataformas (hardware y sistema operativo), con funcionalidades equivalentes. Esto requiere un mayor esfuerzo para el mantenimiento del código, pero puede merecer la pena cuando la cantidad de código específico de la plataforma es elevada.

Código base único

Esta estrategia se basa en tener un único código fuente que pueda compilarse a múltiples formatos específicos de plataforma. Una técnica es la compilación condicional . Con esta técnica, el código común a todas las plataformas no se repite. Los bloques de código que solo son relevantes para ciertas plataformas se hacen condicionales, de modo que solo se interpretan o compilan cuando es necesario. Otra técnica es la separación de funcionalidades, que desactiva las funcionalidades no compatibles con los navegadores o sistemas operativos, al tiempo que proporciona una aplicación completa al usuario. (Véase también: Separación de responsabilidades ). Esta técnica se utiliza en el desarrollo web, donde el código interpretado (como en los lenguajes de scripting) 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 compatibilidad multiplataforma ocultando las complejidades de la diferenciación de clientes tras una única API unificada, a costa de la dependencia de un proveedor específico .

Diseño web adaptable

El diseño web adaptable (RWD, por sus siglas en inglés) es un enfoque de diseño web que busca crear la disposición visual de los sitios para brindar una experiencia de visualización óptima: lectura y navegación sencillas con un mínimo de redimensionamiento, desplazamiento y cambio de página, en una amplia gama de dispositivos, desde teléfonos móviles hasta monitores de computadora de escritorio. Esta técnica utiliza poco o ningún código específico de la plataforma.

Pruebas

Las aplicaciones multiplataforma requieren 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 para desarrollar aplicaciones para múltiples plataformas, pero todos ellos dan como resultado software que requiere un esfuerzo manual considerable para su prueba y mantenimiento. [ 7 ] En ocasiones, se utilizan técnicas como la virtualización completa como solución alternativa a este problema.

Herramientas como el Page Object Model permiten crear scripts para pruebas multiplataforma, de modo que un único caso de prueba abarque varias versiones de una aplicación. Si las distintas versiones tienen interfaces de usuario similares, todas pueden probarse con un solo caso de prueba.

Aplicaciones tradicionales

Las aplicaciones web son cada vez más populares, pero muchos usuarios de computadoras aún utilizan software de aplicación tradicional que no se basa en una arquitectura cliente/servidor web. La distinción entre aplicaciones tradicionales y web 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. Sin embargo, esta distinción simplificada es una generalización común y útil.

Software binario

El software de aplicación tradicional se ha distribuido como archivos binarios, especialmente ejecutables . Los ejecutables solo son compatibles con la plataforma para la que fueron creados, lo que significa que un único ejecutable multiplataforma podría contener una gran cantidad de código que nunca se ejecuta en una plataforma específica. En cambio, generalmente se dispone de varios ejecutables, cada uno diseñado para una plataforma.

Para el software que se distribuye como un ejecutable binario, como el escrito en C o C++, debe existir una compilación de software para cada plataforma, utilizando un conjunto de herramientas que traduzca (transcompile) un único código fuente en múltiples 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. denomina 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 de ejecutables independientes, aunque provienen en gran medida del mismo código fuente . En raras ocasiones, el código ejecutable compilado 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 ejecutables funcionales para distintas plataformas. En este caso, los programadores deben adaptar el código fuente a la nueva plataforma. Por ejemplo, una aplicación como Firefox, que ya funciona en Windows con arquitectura x86, puede modificarse y recompilarse para que funcione también en Linux con arquitectura x86 (y potencialmente en otras arquitecturas). Las distintas versiones del código pueden almacenarse como bases de código independientes o fusionarse en una sola.

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

Ejemplo de software binario multiplataforma:

Sistemas de escritura y lenguajes interpretados

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

A diferencia de los archivos ejecutables binarios, el mismo script se puede usar en todos los ordenadores que tengan software para interpretarlo. Esto se debe a que el script generalmente se almacena en texto plano en un archivo de texto . Puede haber algunos problemas menores, como la representación de un carácter de nueva línea .

Algunos lenguajes de scripting multiplataforma populares son:

Juegos de vídeo

El término multiplataforma o cruzado también se aplica a los videojuegos lanzados para diversas consolas . Algunos ejemplos de juegos multiplataforma son: Miner 2049er , Tomb Raider: Legend , la saga FIFA , la saga NHL y Minecraft .

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

Algunas plataformas son más difíciles de desarrollar que otras, lo que requiere más tiempo para que el videojuego alcance el mismo nivel de calidad. Para compensar esto, un videojuego puede lanzarse primero en algunas plataformas y luego en otras. Normalmente, esto ocurre cuando se lanza un nuevo sistema de videojuegos, ya que los desarrolladores necesitan familiarizarse con su hardware y software.

Algunos juegos pueden no ser multiplataforma debido a acuerdos de licencia entre desarrolladores y fabricantes de consolas que limitan el desarrollo a una consola específica. 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 deba lanzarlo exclusivamente en la consola de Sony durante un tiempo limitado o de forma indefinida .

Juego multiplataforma

Varios desarrolladores han implementado formas de jugar en línea utilizando diferentes plataformas. Psyonix , Epic Games , Microsoft y Valve cuentan con 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 ratón especialmente diseñados) fue Quake 3. [ 11 ] [ 12 ]

Entre los juegos que ofrecen juego en línea multiplataforma se 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 de realidad virtual, Pocket Edition y Xbox One .

Programación

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

Aproches

Existen diferentes maneras de desarrollar una aplicación multiplataforma. Un enfoque consiste en crear varias versiones del mismo software en distintos árboles de código fuente ; es decir, la versión para Microsoft Windows podría tener un conjunto de archivos de código fuente, la versión para Macintosh otro, y un sistema *nix de código abierto podría tener un tercero. Si bien esto es sencillo, en comparación con el desarrollo para una sola plataforma, puede resultar mucho más costoso contratar un equipo más grande o retrasar el lanzamiento de los productos. Además, puede generar más errores que detectar 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. Dichas aplicaciones son independientes de la plataforma . Las aplicaciones que se ejecutan en la JVM se desarrollan de esta manera.

Algunas aplicaciones combinan diversos 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 bajo nivel, con subárboles de código fuente separados para implementar características específicas de cada plataforma (como la interfaz gráfica de usuario), y la implementación de más de un lenguaje de scripting para facilitar la portabilidad del software . Firefox implementa XUL , CSS y JavaScript para extender el navegador, además de los complementos clásicos de Netscape . Gran parte del propio navegador 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:

  • 8.º : un lenguaje de desarrollo que utiliza Juce como capa de interfaz gráfica de usuario (GUI). 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, incluyendo sus teclados, y que además es compatible con AppWallet y ofrece un rendimiento nativo en todos los sistemas operativos.
  • AppearIQ : un framework que facilita 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 de hardware de los dispositivos móviles o tabletas a través de una API para código HTML5, lo que facilita el desarrollo de aplicaciones móviles que se ejecutan en diferentes plataformas.
  • Boden : un framework de interfaz de usuario escrito en C++.
  • Cairo : una biblioteca de software libre que proporciona una API independiente del dispositivo basada en gráficos vectoriales. Está diseñada para ofrecer primitivas para el dibujo bidimensional en diversos sistemas de renderizado. Cairo está escrita en C y cuenta con interfaces para numerosos lenguajes de programación.
  • Cocos2d : un conjunto de herramientas y motor de juegos de código abierto para desarrollar juegos y aplicaciones multiplataforma en 2D y 3D sencillos.
  • Codename One : un framework de código abierto "Escribe una vez, ejecuta en cualquier lugar" (WORA, por sus siglas en inglés) para desarrolladores de Java y Kotlin.
  • Delphi : un entorno de desarrollo integrado (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 e IDE para interfaz gráfica de usuario (GUI) y gráficos 2D/3D, escrito en eC y compatible con otros lenguajes como C y Python. Es compatible con Linux, FreeBSD, Windows, Android, macOS y la web mediante Emscripten o Binaryen  (WebAssembly).
  • Eclipse : un entorno de desarrollo de código abierto. Implementado en Java con una arquitectura configurable que admite numerosas herramientas para el desarrollo de software. Existen complementos disponibles para varios lenguajes, incluidos Java y C++.
  • FLTK : un conjunto de herramientas de código abierto, pero más ligero porque se limita a la interfaz gráfica de usuario (GUI).
  • Flutter : Un framework de interfaz de usuario multiplataforma para iOS, Android, Mac y Windows, desarrollado por Google .
  • fpGUI : Un conjunto de herramientas de widgets de código abierto completamente implementado en Object Pascal. Actualmente es compatible con Linux, Windows y parcialmente con 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 dispositivos inteligentes Android y BlackBerry), Objective-C para dispositivos móviles Apple , RPG , Ruby , Visual Basic y Visual FoxPro .
  • GLBasic : Un dialecto y compilador de BASIC que genera código C++. Incluye compiladores cruzados para diversas plataformas y es compatible con numerosas plataformas (Windows, Mac, Linux, Android, iOS y algunos dispositivos portátiles poco comunes).
  • Godot : un SDK que utiliza el motor Godot.
  • GTK +: Un conjunto 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 desarrollo de aplicaciones escrito en C++, utilizado para escribir software nativo en numerosos sistemas (Microsoft Windows, POSIX, macOS), sin necesidad de modificar el código.
  • Kivy : un framework 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, medicina, imágenes y multimedia en aplicaciones de Windows, iOS, macOS, Android, Linux y web. [ 15 ]
  • LiveCode : un lenguaje comercial de desarrollo rápido de aplicaciones multiplataforma 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 se ejecuta en Linux, MacOSX, iOS, Android, WinCE, Windows y WEB.
  • Max/MSP : Un 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 multiplataforma para Android. Permite que las aplicaciones de 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 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 de trabajo para aplicaciones y lenguajes de programación).
  • MoSync : un SDK de código abierto para el desarrollo de aplicaciones para plataformas móviles en la familia C++.
  • Plataforma de desarrollo 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 propietario de desarrollo de juegos 2D para Windows, destinado al desarrollo de juegos para Windows y Nintendo Switch .
  • PureBasic : un lenguaje propietario y un entorno de desarrollo integrado (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 aplicaciones y un conjunto 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 sencilla y rápida : una API multimedia en C++ 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 capa de abstracción sobre las API de gráficos, sonido y entrada de diversas plataformas . Se ejecuta en sistemas operativos como Linux, Windows y macOS, y está orientada a juegos y aplicaciones multimedia.
  • Smartface : una herramienta de desarrollo de aplicaciones nativas para crear aplicaciones móviles para Android e iOS, que utiliza un editor de diseño WYSIWYG con un editor de código JavaScript.
  • Tcl / Tk
  • Titanium Mobile : marco de trabajo multiplataforma de código abierto para el desarrollo de aplicaciones Android e iOS.
  • U++ : un framework de interfaz gráfica de usuario (GUI) en C++ para alto 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 el motor Unity.
  • 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 framework Qt. Las aplicaciones y los juegos de V-Play se crean dentro de Qt Creator.
  • WaveMaker : Una herramienta de desarrollo de bajo código para crear aplicaciones web responsivas y aplicaciones móviles híbridas (Android e iOS).
  • WinDev : un entorno de desarrollo integrado para Windows, Linux, .Net, Java y navegadores web. Optimizado para aplicaciones empresariales e industriales.
  • wxWidgets : un conjunto 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 de desarrollo rápido (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

El desarrollo de software multiplataforma presenta numerosos desafíos:

  • Probar aplicaciones multiplataforma puede ser considerablemente más complicado, ya que las distintas plataformas pueden presentar comportamientos ligeramente diferentes o errores sutiles. Este problema ha llevado a algunos desarrolladores a ridiculizar el desarrollo multiplataforma como "escribe una vez, depura en todas partes", una parodia del eslogan publicitario de Sun Microsystems " escribe una vez, ejecuta en cualquier lugar ".
  • Los desarrolladores suelen verse obligados a utilizar el conjunto mínimo común denominador de funciones disponibles en todas las plataformas. Esto puede perjudicar el rendimiento de la aplicación o impedirles utilizar las funciones más avanzadas de cada plataforma.
  • Las distintas plataformas suelen tener convenciones de interfaz de usuario diferentes, que las aplicaciones multiplataforma no siempre respetan. Por ejemplo, las aplicaciones desarrolladas para macOS y GNOME suelen colocar el botón más importante en el lado derecho de una ventana o cuadro de diálogo, mientras que Microsoft Windows y KDE siguen 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 con rapidez, 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 scripting y el código de bytes de la máquina virtual deben traducirse a código ejecutable nativo cada vez que se utilizan, lo que supone una penalización en el rendimiento. Esta penalización puede mitigarse mediante técnicas como la compilación justo a tiempo ; sin embargo, cierta sobrecarga computacional puede ser inevitable.
  • Las distintas plataformas requieren el uso de formatos de paquete nativos como RPM y MSI . Los instaladores multiplataforma como InstallAnywhere satisfacen esta necesidad.
  • Los entornos de ejecución multiplataforma pueden sufrir fallos de seguridad multiplataforma, creando un entorno fértil para el malware multiplataforma. [ 18 ]

Véase también

Referencias

  1. "Directrices de diseño: Glosario" . java.sun.com. Archivado del 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: Un duelo móvil multiplataforma" .
  4. 1 2 "Definición de plataforma" . El Proyecto de Información de Linux . Recuperado 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 navegadores y características" . 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 recibe un nuevo diseño para tabletas Android y Chromebooks" . XDA-Developers . Consultado el 15 de enero de 2021. Collabora Office es una popular alternativa de código abierto a la suite Microsoft Office. Está basada en LibreOffice y está disponible en diversas plataformas, como Windows, Linux, iOS y Android. En julio de este año, una importante actualización de la suite ofimática incorporó compatibilidad con dispositivos Chrome OS.
  9. "¡Collabora Office para iOS y Android ahora es mejor!" . Adfinis . 15/12/2020 . Consultado el 15/01/2021 . ...interfaces optimizadas para pantallas táctiles: una para tabletas y otra para pantallas de teléfonos. ...(iOS, iPadOS, Chromebooks, Android).
  10. "Nextcloud Ubuntu Appliance añade Collabora Online a la imagen de Raspberry Pi" . MuyLinux . 26 de marzo de 2021. Consultado el 30 de marzo de 2021. La primera solución viable de oficina web autoalojada para la popular plataforma Raspberry Pi 4 .
  11. Cribba. Quake III Arena , Giant Bombcast , 15 de febrero de 2013.
  12. Charnock, Tom. "Una mirada más cercana al kit de inicio de Internet de Dreamcast" .
  13. "El kit de herramientas de la interfaz gráfica de usuario, página del marco de trabajo" . geocities.com . Archivado del original el 26 de octubre de 2009.
  14. "Preguntas frecuentes sobre plataformas independientes" . Archivado del original el 16 de agosto de 2008. Consultado el 25 de abril de 2009 .
  15. "Bibliotecas SDK multiplataforma para reconocimiento, documentos, medicina, 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. "wxWidgets: Biblioteca GUI multiplataforma" . wxwidgets.org .
  18. Warren, Tom (14 de enero de 2020). "Microsoft se despide de Windows 7 y de los millones de PC que aún lo ejecutan" . The Verge . Consultado el 6 de febrero de 2020 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Cross-platform_software&oldid=1361469870 "