Software multiplataforma

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

En informática, software multiplataforma (también llamado software multiplataforma, software agnóstico de plataforma o plataforma- software independiente) es un software de computadora que está diseñado para funcionar en varias plataformas informáticas. Algunos programas multiplataforma requieren una compilación separada para cada plataforma, pero algunos pueden ejecutarse directamente en cualquier plataforma sin una preparación especial, estar escritos en un lenguaje interpretado o compilados en un código de bytes portátil para los cuales los intérpretes o los paquetes de tiempo de ejecución son comunes o estándar. componentes de todas las plataformas soportadas.

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

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 ambos. 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, ambas multiplataforma. Sin embargo, hay muchos dispositivos, como los teléfonos inteligentes, que también son plataformas. Las aplicaciones se pueden escribir para depender 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 de 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 los teléfonos inteligentes y las 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:

  • BlackBerry 10
  • Android para teléfonos inteligentes y tabletas (x86, ARM)
  • iOS (ARM)
  • Microsoft Windows (x86, ARM)
    • Infraestructura de lenguaje común de Microsoft (CLI), también conocido como. Marco NET
    • Variante multiplataforma Mono (previamente por Novell y ahora por Xamarin)
  • Java
  • navegadores web – más o menos compatibles entre sí, ejecutando aplicaciones web JavaScript
  • Linux (x86, PowerPC, ARM y otras arquitecturas)
  • macOS (x86, PowerPC (en 10,5 y siguientes), y ARM (en silicio de Apple o 11.0 y superior))
  • Mendix
  • Solaris (SPARC, x86)
  • SymbianOS
  • SPARC
  • PlayStation 4 (x86), PlayStation 3 (PowerPC) y PlayStation Vita (ARM)
  • Unix
  • Xbox
Menores/históricos
  • AmigaOS (m68k), AmigaOS 4 (PowerPC), AROS (x86, PowerPC, m68k), MorphOS (PowerPC)
  • Atari TOS, MiNT
  • BSD (muchas plataformas; véase NetBSDnet, por ejemplo)
  • Sistemas de tipo DOS en el x86: MS-DOS, PC DOS, DR-DOS, FreeDOS
  • OS/2, eComStation

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 puede ejecutarse 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 los 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 adecuado, según una ACL. Por ejemplo, el acceso al disco y a la red suele estar habilitado para las aplicaciones de escritorio, pero no para los 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 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 compatibles con el sistema operativo. Un ejemplo es OpenOffice.org, que en 2006 no se ejecutaba de forma nativa en los procesadores AMD64 o Intel 64 que implementaban los estándares x86-64; en 2012 era "principalmente" portados 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 compatibles con ese lenguaje, o incluso en diferentes versiones del mismo sistema operativo.

Aplicaciones web

Las aplicaciones web generalmente se describen como multiplataforma porque, idealmente, son accesibles 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 ser difícil reconciliar 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 era la norma en las primeras fases del desarrollo de aplicaciones de la World Wide Web. Estas aplicaciones siguen un modelo de transacción simple, idéntico al de servir páginas web estáticas. Hoy en día, todavía son relativamente comunes, especialmente donde la compatibilidad entre plataformas y la simplicidad se consideran más críticas que la funcionalidad avanzada.

Ejemplos destacados de aplicaciones web avanzadas incluyen la interfaz web para Gmail, A9.com, el sitio web de Google Maps y el servicio Live Search (ahora Bing) de Microsoft. Tales aplicaciones dependen rutinariamente 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 contrapuestos 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 mismo tiempo que reduce esa funcionalidad a un mínimo común denominador para navegadores de clientes más limitados. Por ejemplo, un usuario que intente usar un navegador de funciones limitadas para acceder a Gmail puede notar que Gmail cambia al modo básico, con una funcionalidad reducida pero aún útil.

Múltiples bases de código

Algunos software se mantienen en bases de código distintas para diferentes plataformas (hardware y SO), con 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 múltiples formatos específicos de plataforma. Una técnica es la compilación condicional. Con esta técnica no se repite código que es común a todas las plataformas. Los bloques de código que solo son relevantes para ciertas plataformas se hacen condicionales, de modo que solo se interpreten o compilen cuando sea necesario. Otra técnica es la separación de la funcionalidad, que desactiva la funcionalidad no admitida por los navegadores o los sistemas operativos, al mismo tiempo que ofrece una aplicación completa al usuario. (Consulte 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 secuencias de comandos) puede consultar la plataforma en la que se ejecuta para ejecutar diferentes bloques de forma condicional.

Bibliotecas de terceros

Las bibliotecas de terceros intentan simplificar la capacidad multiplataforma ocultando las complejidades de la diferenciación del cliente detrás de una sola API 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 brindar una experiencia de visualización óptima (lectura y navegación fáciles con un mínimo de cambio de tamaño, desplazamiento panorámico y desplazamiento) en una amplia variedad 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. Se utilizan varios enfoques para apuntar a múltiples plataformas, pero todos ellos dan como resultado un software que requiere un esfuerzo manual sustancial para la prueba y el mantenimiento. A veces se utilizan técnicas como la virtualización completa como solución alternativa para este problema.

Herramientas como el modelo de objetos de página permiten crear scripts de pruebas multiplataforma 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 usan 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 desdibujan 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 inflado 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.

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 traduce (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 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 separadas, aunque provienen en gran medida del mismo código fuente. En casos raros, el código ejecutable creado para varias plataformas se combina en un solo archivo ejecutable llamado binario pesado.

El uso de diferentes conjuntos de herramientas puede no ser suficiente para crear 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 en Linux en x86 (y potencialmente también 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 archivos binarios. Como ejemplo, Rosetta de Apple, que está integrado en las 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 de oficina de LibreOffice está construida para Microsoft Windows, macOS, muchas distribuciones de Linux, FreeBSD, NetBSD, OpenBSD, Android, iOS, iPadOS, ChromeOS, colaboración web en línea y muchos otros. Muchos de ellos son apoyados en varias plataformas de hardware con arquitecturas procesadoras incluyendo IA-32, x86-64, ARM (ARMel, ARMhf, ARM64), MIPS, MIPSel, PowerPC, ppc64el y S390x[9]

Scripts y lenguajes interpretados

Se puede considerar que una secuencia de comandos es multiplataforma si su intérprete está disponible en varias plataformas y la secuencia de comandos solo utiliza las funciones integradas en el lenguaje. 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 secuencias de comandos de código abierto.

A diferencia de los archivos ejecutables binarios, la misma secuencia de comandos se puede usar en todas las computadoras que tienen software para interpretar la secuencia de comandos. Esto se debe a que el script generalmente se almacena como 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 – Unix shell 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 – Primera publicación en 1987. Se utiliza para la programación CGI, tareas de administración del sistema pequeño, y más.
  • PHP – Mayormente utilizado para aplicaciones web.
  • Python – Un lenguaje que se centra en el desarrollo de aplicaciones rápidas y la facilidad de escritura, en lugar de eficiencia de tiempo de ejecución.
  • Ruby – Un lenguaje orientado al objeto que pretende ser fácil de leer. También se puede utilizar en la web a través de Ruby en Rails.
  • Tcl – Un lenguaje de programación dinámico, adecuado para una amplia gama de usos, incluyendo aplicaciones web y de escritorio, redes, administración, pruebas y muchos más.

Videojuegos

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

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

Algunas plataformas 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 deben 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. En caso de que Disney licencie el juego con Sony primero, es posible que deba lanzar el juego únicamente en la consola de Sony por un período breve o indefinidamente.

Juego multiplataforma

Varios desarrolladores han implementado formas de jugar 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 los jugadores de PC, dejando la decisión de qué plataforma usar a los consumidores. El primer juego que permitió este nivel de interactividad entre PC y juegos 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 fuentes; 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 una El sistema FOSS *nix podría 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 para rastrear y corregir.

Otro enfoque es utilizar un 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 construyen 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 funciones 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 complementos de navegador clásicos al estilo de Netscape. Gran parte del navegador en sí está escrito en XUL, CSS y JavaScript.

Juegos de herramientas y entornos

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

  • 8o: un lenguaje de desarrollo que utiliza Juce como su capa GUI. Actualmente soporta Android, iOS, Windows, macOS, Linux y Raspberry Pi.
  • Anant Computing: Una plataforma de aplicación móvil que funciona en todos los idiomas indios, incluyendo sus teclados, y también admite AppWallet y rendimiento nativo en todos los sistemas operativos.
  • AppearIQ: un marco que apoya el flujo de trabajo de desarrollo y despliegue 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 un código API a HTML5 facilitando así el desarrollo de aplicaciones móviles que funcionan en diferentes plataformas.
  • Boden: un marco UI escrito en C++.
  • El Cairo: una librería de software utilizada para proporcionar una API basada en gráficos vectoriales y dependiente de dispositivos. Está diseñado para proporcionar primitivos para el dibujo 2-dimensional a través de varios backends diferentes. El Cairo está escrito en C y tiene enlaces para muchos idiomas de programación.
  • Cocos2d: un kit de herramientas de código abierto y motor de juego para el desarrollo de juegos y aplicaciones multiplataforma 3D simples.
  • Codename One: an open-source Write Once Run Anywhere (WORA) framework for Java and Kotlin developers.
  • Delphi: an IDE which uses a Pascal-based language for development. Soporta Android, iOS, Windows, macOS, Linux.
  • Ecere SDK: un toolkit gráfico GUI y 2D/3D e IDE, escrito en eC y con soporte para idiomas adicionales como C y Python. Admite 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 idiomas, incluyendo Java y C++.
  • FLTK: un kit de herramientas de código abierto, pero más ligero porque se limita a la GUI.
  • Flutter: Un marco UI multiplataforma para Android e iOS desarrollado por Google.
  • fpGUI: Un widget de código abierto que se implementa completamente en Object Pascal. Actualmente soporta Linux, Windows y un poco de Windows CE.
  • GeneXus: Una solución de desarrollo rápido de software de Windows para la creación de aplicaciones multiplataforma y el despliegue basado en la representación del conocimiento y el apoyo C#, COBOL, Java incluyendo dispositivos inteligentes Android y BlackBerry, Objetivo-C para dispositivos móviles de Apple, RPG, Ruby, Visual Basic y Visual FoxPro.
  • GLBasic: Un dialecto y compilador BASIC que genera código C++. Incluye compiladores cruzados para muchas plataformas y soporta numerosas plataformas (Windows, Mac, Linux, Android, iOS y algunos portátiles exóticos).
  • Godot: un SDK que utiliza Godot Engine.
  • GTK+: Un widget 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 UI multiplataforma de código abierto escrito en Python. Soporta Android, iOS, Linux, OS X, Windows y Raspberry Pi.
  • LEADTOOLS: Cross-platform Bibliotecas SDK para integrar el reconocimiento, el documento, las tecnologías médicas, de imagen y multimedia en Windows, iOS, macOS, Android, Linux y aplicaciones web.
  • LiveCode: un lenguaje comercial de desarrollo de aplicaciones rápidas multiplataforma inspirado en HyperTalk.
  • Lazarus: Un entorno de programación para el Compilador FreePascal. Soporta la creación de aplicaciones gráficas y consolas independientes y funciona en Linux, MacOSX, iOS, Android, WinCE, Windows y WEB.
  • Max/MSP: Un lenguaje de programación visual que encapsula código independiente de plataformas con un entorno de tiempo de ejecución específico de plataforma en aplicaciones para macOS y Windows A cross-platform Android runtime. Permite que las aplicaciones Android no modificadas funcionen nativamente en iOS y macOS
  • Mendix: una plataforma de desarrollo de aplicaciones de código bajo basado en la nube.
  • MonoCross: un modelo de código abierto–vista–controlador patrón de diseño donde el modelo y el controlador son multiplataforma pero la vista es de plataforma específica.
  • 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 aplicación de Mozilla: una plataforma de código abierto para la construcción de aplicaciones macOS, Windows y Linux.
  • Un marco multiplataforma JavaScript/TypeScript para el desarrollo de Android e iOS.
  • OpenGL: una biblioteca gráfica 3D.
  • Pixel Game Maker MV: Un software propietario de desarrollo de juegos 2D para Windows para desarrollar juegos de Windows y Nintendo Switch.
  • PureBasic: un lenguaje propietario e IDE para la construcción de aplicaciones macOS, Windows y Linux.
  • Renacimiento: El SDK de desarrollo universal para construir proyectos multiplataforma con React Native. Incluye los últimos iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS y Firefox plataformas de TV.
  • Qt: un marco de aplicación y widget toolkit para Sistemas similares a Unix con X11, Microsoft Windows, macOS y otros sistemas disponibles bajo licencias de propiedad y código abierto.
  • Multimedia simple y rápido Biblioteca: Una API C++ multimedia que proporciona acceso de bajo y alto nivel a gráficos, entrada, audio, etc.
  • Simple DirectMedia Capa: una biblioteca multimedia de código abierto escrita en C que crea una abstracción sobre los gráficos, sonido y API de entrada de varias plataformas. Funciona en OSs incluyendo Linux, Windows y macOS y está dirigido 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ódigos JavaScript.
  • Tcl/Tk
  • Titanium Mobile: open source cross-platform framework for Android and iOS development.
  • 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 Windows y Unix-like OS-s.
  • Unidad: Otro SDK multiplataforma que utiliza el motor de unidad.
  • Plataforma Uno: Windows, macOS, iOS, Android, WebAssembly y Linux usando C#.
  • Unreal: Un SDK multiplataforma que utiliza un motor irreal.
  • 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 web e híbridos sensibles (Android & iOS).
  • WinDev: un entorno de desarrollo integrado para Windows, Linux. Net and Java, and web browers. Optimizado para aplicaciones empresariales e industriales.
  • wxWidgets: un widget de código abierto toolkit que también es un marco de aplicación. Funciona en sistemas similares a Unix con X11, Microsoft Windows y macOS.
  • Xojo: un IDE RAD que utiliza un lenguaje de programación orientado a objetos para crear aplicaciones de escritorio, web e iOS. Xojo hace aplicaciones de escritorio nativas y compiladas para macOS, Windows, Linux y Raspberry Pi. Crea aplicaciones web compiladas que pueden ser ejecutadas como servidores independientes o a través de CGI. Y recientemente agregó la capacidad de crear aplicaciones iOS nativas.

Desafíos

Existen muchos desafíos al desarrollar software multiplataforma.

  • Prueba de 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 desestimar el desarrollo multiplataforma como "escribir una vez, depurar por todas partes", una toma en la consigna de marketing de Sun Microsystems "escribir una vez, correr en cualquier lugar".
  • Los desarrolladores a menudo se limitan a utilizar el subconjunto común mínimo de características que están disponibles en todas las plataformas. Esto puede dificultar el rendimiento de la aplicación o prohibir a los desarrolladores utilizar 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 se adaptan. Por ejemplo, las aplicaciones desarrolladas para macOS y GNOME deben colocar 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 sentirse clunky o ajena al usuario. Al trabajar rápidamente, tales convenciones opuestas pueden incluso resultar en la pérdida de datos, como en un cuadro de diálogo confirmando si hay que guardar o descartar cambios.
  • Los idiomas de scripting y el bytecode VM deben traducirse en código ejecutable nativo cada vez que se utilizan, imponiendo una pena de rendimiento. Esta pena se puede aliviar utilizando técnicas como la recopilación de tiempo justo en tiempo; pero algunos gastos superiores computacionales pueden ser inevitables.
  • Las diferentes plataformas requieren el uso de formatos de paquetes nativos como RPM y MSI. Instaladores multiplataforma tales como InstallAnywhere dirección esta necesidad.
  • Los entornos de ejecución multiplataforma pueden sufrir fallos de seguridad multiplataforma, creando un entorno fértil para el malware multiplataforma.

Contenido relacionado

Xerox alto

Diodo emisor de luz

Forma normal disyuntiva

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save