Software multiplataforma - Cross-platform software

En informática , el software multiplataforma (también software multiplataforma o software independiente de la plataforma ) es un software informático diseñado para funcionar en varias plataformas informáticas. Algunos software multiplataforma requieren una compilación separada para cada plataforma, pero algunos pueden ejecutarse directamente en cualquier plataforma sin preparación especial, escribirse en un lenguaje interpretado o compilarse en un código de bytes portátil para el cual los intérpretes o los paquetes de tiempo de ejecución son comunes o estándar. componentes de todas las plataformas compatibles.

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

Plataformas

La plataforma puede hacer referencia 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. Un ejemplo de una plataforma común es el sistema operativo Microsoft Windows que se ejecuta en la arquitectura x86 . Otras plataformas de escritorio conocidas son Linux / Unix y macOS , las cuales son multiplataforma. Sin embargo, hay muchos dispositivos, como los teléfonos inteligentes, que también son plataformas. Las aplicaciones se pueden escribir para que dependan de las características de una plataforma en particular, ya sea el hardware, el sistema operativo o la máquina virtual (VM) en la que se ejecuta. Por ejemplo, la plataforma Java es una plataforma VM común que se ejecuta en muchos sistemas operativos y tipos de hardware.

Hardware

Una plataforma de hardware puede referirse a una arquitectura de conjunto de instrucciones . Por ejemplo: arquitectura x86 y sus variantes como IA-32 y x86-64 . Estas máquinas a menudo ejecutan una versión de Microsoft Windows, aunque pueden ejecutar otros sistemas operativos, incluidos Linux, OpenBSD , NetBSD , macOS y FreeBSD .

Las arquitecturas ARM de 32 bits (y la versión más reciente de 64 bits ) son comunes en teléfonos inteligentes y tabletas , que ejecutan Android, iOS y otros sistemas operativos móviles .

Software

Una plataforma de software puede ser un sistema operativo o un entorno de programación , aunque más comúnmente es una combinación de ambos. Una excepción es Java , que utiliza una máquina virtual independiente del sistema operativo para ejecutar el código de bytes de Java . Ejemplos de plataformas de software son:

Menor / histórico

Java

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

El código Java que se ejecuta en la JVM tiene acceso a servicios relacionados con el sistema operativo, como E / S de disco y acceso a la red, si se 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, dependiendo de una 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 sistema operativo, con una pérdida de portabilidad.

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

Implementación

Para que el software se considere multiplataforma, debe funcionar en más de una arquitectura de computadora o sistema operativo. El desarrollo de dicho software puede ser una tarea que requiere mucho tiempo porque los diferentes sistemas operativos tienen diferentes interfaces de programación de aplicaciones (API). Por ejemplo, Linux usa una API diferente a la de Windows.

Es posible que el software escrito para un sistema operativo no funcione automáticamente en todas las arquitecturas que admite el sistema operativo. Un ejemplo es OpenOffice.org , que en 2006 no se ejecutaba de forma nativa en procesadores AMD64 o Intel 64 que implementaran los estándares x86-64; en 2012 fue "mayoritariamente" portado a estos sistemas. El hecho de que el 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 se describen normalmente como multiplataforma porque, idealmente, se puede acceder a ellas desde cualquier navegador web : el navegador es la plataforma. Las aplicaciones web generalmente emplean un modelo cliente-servidor , pero varían ampliamente en complejidad y funcionalidad. Puede resultar difícil conciliar el deseo de 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 simples intercambios de solicitudes de datos y respuestas del servidor. Este tipo de aplicación fue la norma en las primeras fases del desarrollo de aplicaciones en la World Wide Web . Estas aplicaciones siguen un modelo de transacción simple , idéntico al de las páginas web estáticas . Hoy en día, todavía son relativamente comunes, especialmente donde la compatibilidad y la simplicidad multiplataforma se consideran más críticas que la funcionalidad avanzada.

Ejemplos destacados de aplicaciones web avanzadas incluyen la interfaz web de Gmail , A9.com , el sitio web de Google Maps y el servicio Live Search (ahora Bing ) de Microsoft. 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 características incluyen Ajax , JavaScript , HTML dinámico , SVG y otros componentes de aplicaciones web enriquecidas . Las versiones anteriores a menudo carecen de estos.

Diseño

Debido a los intereses en competencia de 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 similar a todos los usuarios y plataformas, al tiempo que disminuye esa funcionalidad a un mínimo común denominador para los navegadores de clientes más limitados. Por ejemplo, un usuario que intente utilizar un navegador de funciones limitadas para acceder a Gmail puede notar que Gmail cambia al modo básico, con funcionalidad reducida pero aún en uso.

Varias bases de código

Parte del software se mantiene en distintas bases de código para diferentes plataformas (hardware y sistema operativo), con una funcionalidad equivalente. Esto requiere más esfuerzo para mantener el código, pero puede valer la pena 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 varios formatos específicos de la plataforma. Una técnica es la compilación condicional . Con esta técnica no se repite el código que es común a todas las plataformas. Los bloques de código que solo son relevantes para ciertas plataformas se condicionan, de modo que solo se interpretan o compilan cuando es necesario. Otra técnica es la separación de funciones, que deshabilita las funciones que no son compatibles con los navegadores o los sistemas operativos, al tiempo que ofrece una aplicación completa al usuario. (Ver 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 scripting) puede consultar la plataforma en la que se está ejecutando para ejecutar diferentes bloques condicionalmente.

Bibliotecas de terceros

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

Diseño web adaptable

El diseño web receptivo (RWD) es un enfoque de diseño web destinado a crear el diseño visual de los sitios para proporcionar una experiencia de visualización óptima (lectura y navegación fáciles con un mínimo de cambio de tamaño, desplazamiento y desplazamiento) en una amplia gama de dispositivos, desde el móvil teléfonos a monitores de computadora 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. Hay varios enfoques que se utilizan para apuntar a múltiples plataformas, pero todos dan como resultado un software que requiere un esfuerzo manual sustancial para las pruebas y el mantenimiento. A veces se utilizan técnicas como la virtualización completa como solución para este problema.

Herramientas como el modelo de objetos de página permiten que las pruebas multiplataforma se escriban para que un caso de prueba cubra varias versiones de una aplicación. Si diferentes versiones tienen interfaces de usuario similares, todas se pueden probar con un caso de prueba.

Aplicaciones tradicionales

Las aplicaciones web se están volviendo cada vez más populares, pero muchos usuarios de computadoras todavía 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 para aplicaciones web y tradicionales se superponen y difuminan la distinción. Sin embargo, 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 solo ejecutable multiplataforma podría estar muy saturado de código que nunca se ejecuta en una plataforma en particular. En cambio, generalmente hay una selección de ejecutables, cada uno construido para una plataforma.

Para el software que se distribuye como un 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 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. llama un binario universal ), Linux y BSD en múltiples arquitecturas de computadora. Las cuatro plataformas (en este caso, Windows, macOS, Linux y BSD) son distribuciones ejecutables separadas, aunque provienen en gran parte del mismo código fuente .

El uso de diferentes conjuntos de herramientas puede no ser suficiente para construir ejecutables que funcionen para diferentes plataformas. En este caso, los programadores deben portar 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, puede modificarse y reconstruirse para ejecutarse también en Linux en x86 (y potencialmente en otras arquitecturas). Las múltiples versiones del código pueden almacenarse como bases de código separadas o fusionarse en una base de código.

Una alternativa a la migración es la virtualización multiplataforma , donde las aplicaciones compiladas para una plataforma pueden ejecutarse en otra sin modificar el código fuente o los binarios. Por ejemplo, el Rosetta de Apple , que está integrado en computadoras Macintosh basadas en Intel , ejecuta aplicaciones compiladas para la generación anterior de Mac que usaban CPU PowerPC. Otro ejemplo es IBM PowerVM Lx86 , que permite que las aplicaciones Linux / x86 se ejecuten sin modificaciones en Linux / Power OS.

Ejemplo de software binario multiplataforma:

  • La suite ofimática LibreOffice está diseñada para Microsoft Windows, macOS, muchas distribuciones de Linux, FreeBSD , NettBSD , OpenBSD , Android, iOS, Chrome OS, Collabora Online basado en la web y muchos otros. Muchos de estos son compatibles con varias plataformas de hardware con arquitecturas de procesador que incluyen IA-32 , x86-64 y ARM .

Escrituras e idiomas interpretados

Se puede considerar que un guión es multiplataforma si su intérprete está disponible en varias plataformas y el guión solo utiliza las funciones integradas en el idioma. Por ejemplo, una secuencia de comandos escrita en Python para un sistema similar a 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 programación de código abierto .

A diferencia de los archivos ejecutables binarios, la misma secuencia de comandos se puede utilizar en todas las computadoras que tienen software para interpretar la secuencia de comandos. Esto se debe a que la secuencia de comandos 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 secuencias de comandos multiplataforma populares son:

  • bash : un shell de Unix se ejecuta comúnmente en Linux y otros sistemas modernos similares a Unix, así como en Windows a través de la capa de compatibilidad Cygwin POSIX .
  • Perl : lanzado por primera vez en 1987. Se utiliza para programación CGI , pequeñas tareas de administración de sistemas y más.
  • PHP : se utiliza principalmente para aplicaciones web.
  • Python : un lenguaje que se centra en el desarrollo rápido de aplicaciones y la facilidad de escritura, en lugar de la eficiencia en tiempo de ejecución.
  • Ruby : un lenguaje orientado a objetos que pretende ser fácil de leer. También se puede utilizar en la web a través de Ruby on Rails .
  • Tcl : un lenguaje de programación dinámico, adecuado para una amplia gama de usos, incluidas aplicaciones web y de escritorio, redes, administración, pruebas y muchos más.

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 . Ejemplos de juegos multiplataforma incluyen: Miner 2049er , Tomb Raider: Legend , serie FIFA , serie NHL y Minecraft .

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

Las plataformas Sone son más difíciles de escribir que otras. 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 juegos, porque los desarrolladores de videojuegos necesitan familiarizarse con su hardware y software.

Es posible que algunos juegos no sean multiplataforma debido a acuerdos de licencia entre desarrolladores y fabricantes de consolas de videojuegos que limitan el desarrollo a una consola en particular. Como ejemplo, Disney podría crear un juego con la intención de lanzarlo en las últimas consolas de juegos de Nintendo y Sony . Si Disney licencia el juego con Sony primero, es posible que deba lanzar el juego únicamente en la consola de Sony por un tiempo corto o indefinido .

Juego multiplataforma

Varios desarrolladores han implementado formas de jugar juegos en línea mientras usan 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 los juegos de PC y de consola fue Quake 3 .

Los juegos que cuentan con juegos 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 software deliberadamente para que funcione en más de una plataforma.

Enfoques

Hay diferentes formas de escribir una aplicación multiplataforma. Un enfoque consiste en crear varias versiones del mismo software en diferentes árboles de origen; 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 tercera. 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 se deben rastrear y corregir.

Otro enfoque es utilizar software que oculta 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 origen separados para implementar características específicas de la plataforma (como la GUI) y la implementación de más de un lenguaje de secuencias de comandos para facilitar la portabilidad del software. . Firefox implementa XUL , CSS y JavaScript para ampliar 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.

Conjuntos de herramientas y entornos

Hay herramientas mant disponibles para ayudar en el proceso de programación multiplataforma:

  • 8º: un lenguaje de desarrollo que utiliza Juce como capa 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, incluidos sus teclados, y también es compatible con AppWallet y el rendimiento nativo en todos los sistemas operativos.
  • AppearIQ : un marco que admite el flujo de trabajo de desarrollo e implementación de aplicaciones en un entorno empresarial. Los contenedores desarrollados de forma nativa presentan características de 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 gratuito que se utiliza para proporcionar una API independiente del dispositivo basada en gráficos vectoriales. Está diseñado para proporcionar primitivas para el dibujo bidimensional en varios backends diferentes. Cairo está escrito en C y tiene enlaces para muchos lenguajes de programación.
  • Cocos2d : un kit de herramientas de código abierto y un motor de juegos para desarrollar juegos y aplicaciones multiplataforma en 2D y 3D simples.
  • Codename One : un marco de código abierto Write Once Run Anywhere (WORA) 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, Linux.
  • Ecere SDK: una GUI y un kit de herramientas de gráficos 2D / 3D e IDE, 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 soporta muchas herramientas para el desarrollo de software. Los complementos están 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 GUI.
  • Flutter : un marco de interfaz de usuario multiplataforma para Android e iOS desarrollado por Google .
  • fpGUI : Un kit de herramientas de widgets de código abierto 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 de software rápido de Windows para la creación e implementación de aplicaciones multiplataforma basada en la representación del conocimiento y soporte de C # , COBOL , Java incluyendo dispositivos inteligentes Android y BlackBerry, Objective-C para dispositivos móviles Apple , RPG , Ruby , Visual Basic y Visual FoxPro .
  • GLBasic : un dialecto y compilador BÁSICO que genera código C ++. Incluye compiladores cruzados para muchas plataformas y es compatible con numerosas plataformas (Windows, Mac, Linux, Android, iOS y algunas computadoras de mano exóticas).
  • Godot : un SDK que usa Godot Engine.
  • GTK + : un conjunto de herramientas de widgets de código abierto para sistemas similares a 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, de imágenes y multimedia en Windows, iOS, macOS, Android, Linux y aplicaciones web.
  • LiveCode : un lenguaje comercial de desarrollo rápido de aplicaciones multiplataforma inspirado en HyperTalk.
  • Lazarus : un entorno de programación para el compilador FreePascal. Admite la creación de aplicaciones gráficas y de consola autónomas 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 tiempo de ejecución específico de la plataforma en aplicaciones para macOS y Windows Un tiempo de ejecución de Android multiplataforma. Permite que las aplicaciones de Android no modificadas se ejecuten de forma nativa en iOS y macOS
  • Mendix : una plataforma de desarrollo de aplicaciones de código bajo 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.
  • 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 ++.
  • Marco de aplicaciones de Mozilla : una plataforma de código abierto para crear aplicaciones macOS, Windows y Linux.
  • Un marco de JavaScript / TypeScript multiplataforma para el desarrollo de Android e iOS.
  • OpenGL : una biblioteca de gráficos 3D.
  • Pixel Game Maker MV : un software de desarrollo de juegos 2D patentado para Windows para desarrollar juegos de Windows y Nintendo Switch .
  • PureBasic : un lenguaje propietario e IDE para crear aplicaciones 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 similares a Unix con X11 , Microsoft Windows, macOS y otros sistemas, disponible tanto con licencias patentadas como de código abierto .
  • Biblioteca multimedia simple y rápida: una API de C ++ multimedia que proporciona acceso de bajo y alto nivel a gráficos, entrada, audio, etc.
  • Capa DirectMedia simple : una biblioteca multimedia de código abierto escrita en C que crea una abstracción sobre las API de entrada, sonido y gráficos de varias plataformas . Se ejecuta en sistemas operativos que incluyen Linux, Windows y macOS y está destinado a juegos y aplicaciones multimedia.
  • Smartface : una herramienta de desarrollo de aplicaciones nativa para crear aplicaciones móviles para Android e iOS, utilizando el editor de diseño WYSIWYG con editor de código JavaScript.
  • Tcl / Tk
  • Ultimate ++ : un marco de desarrollo rápido de aplicaciones C ++ centrado en la productividad de los programadores. Incluye un conjunto de bibliotecas (GUI, SQL, etc.) y un entorno de desarrollo integrado. Es compatible con sistemas operativos Windows y tipo Unix.
  • Unity : otro SDK multiplataforma que usa Unity Engine.
  • Plataforma Uno : Windows, macOS, iOS, Android, WebAssembly y Linux usando C #.
  • Unreal : un SDK multiplataforma que utiliza Unreal Engine.
  • V-Play Engine : V-Play es un SDK de desarrollo multiplataforma basado en el popular marco Qt. Las aplicaciones y juegos de V-Play se crean dentro de Qt Creator.
  • WaveMaker : una herramienta de desarrollo de código bajo para crear aplicaciones móviles híbridas y web receptivas (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 . Se ejecuta en sistemas similares a Unix con X11 , Microsoft Windows y macOS.
  • Xojo : un RAD IDE que utiliza un lenguaje de programación orientado a objetos para crear aplicaciones de escritorio, web e iOS. Xojo crea aplicaciones de escritorio compiladas y nativas para macOS, Windows, Linux y Raspberry Pi. Crea aplicaciones web compiladas que se pueden ejecutar como servidores independientes o mediante CGI. Y recientemente agregó la capacidad de crear aplicaciones nativas de iOS.

Desafíos

Existen muchos desafíos al desarrollar software multiplataforma.

  • Probar aplicaciones multiplataforma puede ser considerablemente más complicado, ya que diferentes plataformas pueden exhibir 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 a menudo están restringidos a usar el subconjunto de características de mínimo común denominador que están disponibles en todas las plataformas. Esto puede obstaculizar el rendimiento de la aplicación o impedir que los desarrolladores utilicen las funciones más avanzadas de cada plataforma.
  • Las diferentes plataformas a menudo tienen diferentes convenciones de interfaz de usuario, que las aplicaciones multiplataforma no siempre se adaptan. 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 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 ajusta a estas convenciones puede resultar torpe o extraña para el usuario. Cuando se trabaja rápidamente, estas convenciones contrarias 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 secuencias de comandos 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 impone una penalización en el rendimiento. Esta penalización se puede aliviar utilizando técnicas como la compilación justo a tiempo ; pero algunos gastos generales computacionales pueden ser inevitables.
  • Las diferentes plataformas requieren el uso de formatos de paquetes nativos como RPM y MSI . Los instaladores multiplataforma como InstallAnywhere abordan esta necesidad.
  • Los entornos de ejecución multiplataforma pueden sufrir fallas de seguridad multiplataforma, creando un entorno fértil para el malware multiplataforma.

Ver también

Referencias