De Wikipedia, la enciclopedia libre
  (Redirigido desde el desarrollo de aplicaciones multicanal )
Saltar a navegación Saltar a búsqueda

En informática , el software multiplataforma (también software multiplataforma o software independiente de la plataforma ) es un software informático que se implementa en múltiples plataformas informáticas. [1] El software multiplataforma se puede dividir en dos tipos; uno requiere construcción o compilación individual para cada plataforma que admite, y el otro puede ejecutarse directamente en cualquier plataforma sin preparación especial, por ejemplo, software escrito en un lenguaje interpretado o código de bytes portátil precompilado para el cual los intérpretes o el tiempo de ejecución Los paquetes son componentes comunes o estándar de todas las plataformas. [2]

Por ejemplo, una aplicación multiplataforma puede ejecutarse en Microsoft Windows , Linux y macOS . Los programas multiplataforma pueden ejecutarse en tantas como todas las plataformas existentes, o en tan solo dos plataformas. Existen marcos multiplataforma (como Codename One , Kivy , Qt , Flutter , NativeScript , Xamarin , Phonegap , Ionic y React Native ) para ayudar al desarrollo multiplataforma. [3]

Plataformas [ editar ]

La plataforma puede hacer referencia al tipo de procesador (CPU) u otro hardware en el que se ejecuta un sistema operativo o aplicación determinados , el tipo de sistema operativo en una computadora o la combinación del tipo de hardware y el tipo de sistema operativo que se ejecuta en él. [4] Un ejemplo de una plataforma común es Microsoft Windows que se ejecuta en la arquitectura x86 . Otras plataformas de computadoras de escritorio conocidas incluyen Linux / Unix y macOS , las cuales son multiplataforma. [4] Sin embargo, hay muchos dispositivos, como teléfonos inteligentesque también son plataformas informáticas en la práctica, pero que se piensan con menos frecuencia de esa manera. El software de aplicación se puede escribir para que dependa de las características de una plataforma en particular, ya sea el hardware, el sistema operativo o la máquina virtual en la que se ejecuta. La plataforma Java es una plataforma de máquina virtual que se ejecuta en muchos sistemas operativos y tipos de hardware, y es una plataforma común para la que se escribe software.

Plataformas de hardware [ editar ]

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 suelen ejecutar una versión de Microsoft Windows, [5] aunque también 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 .

Plataformas de software [ editar ]

Las plataformas de software pueden ser un sistema operativo o un entorno de programación , aunque más comúnmente es una combinación de ambos. Una excepción notable a esto es Java , que utiliza una máquina virtual independiente del sistema operativo para su código compilado , conocido en el mundo de Java como bytecode . Ejemplos de plataformas de software son:

  • Mora
  • Android para teléfonos inteligentes y tabletas (x86, ARM)
  • iOS ( ARM )
  • Microsoft Windows (x86, ARM )
    • La CLI , también conocida por los nombres de implementación .NET Framework (de Microsoft) y la variante multiplataforma Mono (anteriormente de Novell y ahora de Xamarin [6] )
  • 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 e inferior) y ARM [7] (en Apple Silicon o 11.0 y superior))
  • Mendix
  • Solaris (SPARC, x86)
  • SymbianOS
  • SPARC
  • PlayStation 4 (x86), PlayStation 3 (basado en PowerPC) y PlayStation Vita (ARM)
  • Unix
  • Xbox
Menor / histórico
  • AmigaOS (m68k), AmigaOS 4 (PowerPC), AROS (x86, PowerPC, m68k), MorphOS (PowerPC)
  • Atari TOS , MiNT
  • BSD (muchas plataformas; consulte NetBSDnet, [ aclaración necesaria ] por ejemplo)
  • Sistemas de tipo DOS en x86: MS-DOS , IBM PC DOS , DR-DOS , FreeDOS
  • OS / 2 , eComStation

Plataforma Java [ editar ]

Como se señaló anteriormente, la plataforma Java es una excepción a la regla general de que un sistema operativo es una plataforma de software. El lenguaje Java normalmente se compila en una máquina virtual: una CPU virtual que ejecuta todo el código escrito para el lenguaje. Esto permite que el mismo binario ejecutable se ejecute en todos los sistemas que implementan una máquina virtual Java (JVM). Los programas Java se pueden ejecutar de forma nativa utilizando un procesador Java . Esto no es común y se usa principalmente para 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. Esta configuración 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 . JNI también se puede utilizar para permitir el acceso a funciones específicas del sistema operativo.

Actualmente, los programas Java Standard Edition pueden ejecutarse en Microsoft Windows, macOS, varios sistemas operativos similares a Unix y varios sistemas operativos más no similares a UNIX, como los sistemas 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.

Implementaciones [ editar ]

Para que un software se considere multiplataforma, debe poder funcionar en más de una arquitectura de computadora o sistema operativo. Desarrollar un programa de este tipo 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 para el software de aplicación que Windows.

El software escrito para un sistema operativo en particular no funciona automáticamente en todas las arquitecturas que admite el sistema operativo. Un ejemplo en agosto de 2006 era OpenOffice.org , que no se ejecutaba de forma nativa en las líneas de procesadores AMD64 o Intel 64 que implementaban los estándares x86-64 para computadoras; esto ha cambiado desde entonces, y el paquete de software de OpenOffice.org está "mayoritariamente" adaptado a estos sistemas de 64 bits. [8] Esto también significa que solo porque un programa está escrito en un lenguaje de programación popular como C o C ++, no significa que se ejecutará en todos los sistemas operativos que admitan ese lenguaje de programación, o incluso en el mismo sistema operativo en una arquitectura diferente.

Aplicaciones web [ editar ]

Las aplicaciones web se describen normalmente como multiplataforma porque, idealmente, se puede acceder a ellas desde varios navegadores web dentro de diferentes sistemas operativos. Estas aplicaciones generalmente emplean una arquitectura de sistema cliente-servidor y varían ampliamente en complejidad y funcionalidad. Esta amplia variabilidad complica significativamente el objetivo de la capacidad multiplataforma, que habitualmente está en desacuerdo con el objetivo de la funcionalidad avanzada.

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 aplicaciones eran 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 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 las funcionalidades avanzadas.

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 avanzadas dependen habitualmente de funciones adicionales que solo se encuentran en las versiones más recientes de los navegadores web más populares. Estas dependencias incluyen Ajax , JavaScript , HTML dinámico , SVG y otros componentes de aplicaciones web enriquecidas . Las versiones anteriores de los navegadores web más populares tienden a carecer de compatibilidad con determinadas funciones.

Estrategias de diseño [ editar ]

Debido a los intereses en competencia de la compatibilidad multiplataforma y la funcionalidad avanzada, han surgido numerosas estrategias alternativas de diseño de aplicaciones web. Tales estrategias incluyen:

Degradación agraciada

La degradación elegante intenta proporcionar una funcionalidad igual o 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. Esto difiere de otras técnicas multiplataforma, que intentan proporcionar una funcionalidad equivalente, no solo una funcionalidad adecuada, en todas las plataformas.

Varias bases de código

Varias aplicaciones de base de código mantienen distintas bases de código para diferentes plataformas (hardware y sistema operativo), con una funcionalidad equivalente. Obviamente, esto requiere una duplicación de esfuerzos en el mantenimiento del 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 sistemas operativos del cliente, sin dejar de ofrecer 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 de forma condicional. [9]

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 API única y unificada.

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.

Estrategias de prueba [ editar ]

Un aspecto complicado del diseño de aplicaciones web multiplataforma es la necesidad de realizar pruebas de software . Además de las complicaciones mencionadas anteriormente, existe la restricción adicional de que algunos navegadores web prohíben la instalación de diferentes versiones del mismo navegador en el mismo sistema operativo. Aunque existen varios enfoques de desarrollo que las empresas utilizan para apuntar a múltiples plataformas, todos ellos dan como resultado software que requiere un esfuerzo manual sustancial para las pruebas y el mantenimiento en las plataformas compatibles. [10] A veces se utilizan técnicas como la virtualización completa como solución para este problema.

Con herramientas como el Modelo de objetos de página, las pruebas multiplataforma se pueden programar de tal manera que un caso de prueba se pueda utilizar para múltiples versiones de una aplicación. Siempre que las diferentes versiones tengan interfaces de usuario similares, ambas versiones se pueden probar a la vez, con un caso de prueba.

Aplicaciones tradicionales [ editar ]

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 [ editar ]

Tradicionalmente, en la informática moderna, el software de aplicación se ha distribuido a los usuarios finales como archivos binarios, especialmente archivos ejecutables . Los ejecutables solo son compatibles con el sistema operativo y la arquitectura de la computadora para la que fueron creados, lo que significa que hacer un solo ejecutable multiplataforma sería una tarea enorme, y generalmente se reemplaza ofreciendo una selección de ejecutables para las plataformas compatibles.

Para el software que se distribuye como un ejecutable binario, como el software escrito en C o C ++, el programador debe crear el software para cada sistema operativo y arquitectura de computadora diferentes, es decir, debe usar un conjunto de herramientas que traduzca, transcompila, una única base de código en varios archivos binarios. ejecutables. 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 independientes, aunque provienen del mismo código fuente .

El uso de diferentes conjuntos de herramientas para realizar diferentes compilaciones puede no ser suficiente para lograr una variedad de ejecutables que funcionen para diferentes plataformas. En este caso, el ingeniero de software debe portarlo , es decir, modificar el código para adecuarlo a una nueva arquitectura de computadora o sistema operativo. Por ejemplo, un programa 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 mediante compilación condicional (ver más arriba). Tenga en cuenta que, si bien la migración debe ir acompañada de una construcción multiplataforma, no ocurre lo contrario.

Como alternativa a la migración, la virtualización multiplataforma permite que las aplicaciones compiladas para una CPU y sistema operativo se ejecuten en un sistema con una CPU y / o sistema operativo diferente, 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 el sistema operativo Linux / Power.

Ejemplo de software binario multiplataforma:

  • La suite ofimática LibreOffice está diseñada para plataformas de software Windows , macOS , muchas distribuciones de Linux , FreeBSD , NetBSD , OpenBSD , Android , iOS , Chrome OS , Collabora Online basado en la web y muchas otras. [11] [12] Muchos de estos están disponibles y / o son compatibles con varias plataformas de hardware con arquitecturas de procesador que incluyen IA-32 , x86-64 y ARM . [13]

Escrituras e idiomas interpretados [ editar ]

Se puede considerar que un guión es multiplataforma si su intérprete está disponible en múltiples plataformas y el guión solo utiliza las facilidades que proporciona el idioma. Es decir, un script escrito 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; también hay más de una implementación de Python que ejecutará los mismos scripts (por ejemplo, IronPython para .NET Framework ). Lo mismo ocurre con muchos de los lenguajes de programación de código abierto que están disponibles y son lenguajes de scripting .

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 . Sin embargo, puede haber algunos problemas, como el tipo de carácter de nueva línea que se encuentra entre las líneas. Sin embargo, por lo general, es necesario realizar poco o ningún trabajo para que un script escrito para un sistema se ejecute en otro.

Algunos lenguajes interpretados o de secuencias de comandos multiplataforma bastante 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 : un lenguaje de secuencias de comandos lanzado por primera vez en 1987. Se utiliza para programación CGI WWW , pequeñas tareas de administración de sistemas y más.
  • PHP : un lenguaje de secuencias de comandos más utilizado para aplicaciones web.
  • Python : un lenguaje de secuencias de comandos moderno en el que la atención se centra en el desarrollo rápido de aplicaciones y la facilidad de escritura, en lugar de la eficiencia del tiempo de ejecución del programa.
  • Ruby : un lenguaje de secuencias de comandos cuyo propósito es estar orientado a objetos y 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.

Videojuegos [ editar ]

Multiplataforma o multiplataforma es un término que también se puede aplicar a los videojuegos lanzados en una variedad de consolas de videojuegos , computadoras especializadas dedicadas a la tarea de jugar. Ejemplos de videojuegos 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 (PC) y dispositivos móviles .

Las características de un sistema en particular pueden alargar el tiempo necesario para implementar un videojuego en múltiples plataformas. Por lo tanto, un videojuego puede lanzarse inicialmente en algunas plataformas y luego lanzarse en las plataformas restantes. Por lo general, esta situación ocurre cuando se lanza un nuevo sistema de juegos, porque los desarrolladores de videojuegos necesitan familiarizarse con el hardware y el software asociados con la nueva consola.

Es posible que algunos juegos no se vuelvan multiplataforma debido a acuerdos de licencia entre desarrolladores y fabricantes de consolas de videojuegos que limitan el desarrollo de un juego 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, a cambio se le puede solicitar a Disney que lance el juego únicamente en la consola de Sony por un tiempo corto o indefinido, prohibiendo efectivamente un lanzamiento multiplataforma mientras dure.

Juego multiplataforma [ editar ]

Varios desarrolladores han implementado medios para 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 . [14]

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 multiplataforma [ editar ]

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

Enfoques de la programación multiplataforma [ editar ]

Hay diferentes formas de abordar el problema de escribir un programa de aplicación multiplataforma. Uno de estos enfoques consiste simplemente en crear varias versiones del mismo programa en diferentes árboles de origen; en otras palabras, la versión de Microsoft Windows de un programa puede tener un conjunto de archivos de código fuente y la versión de Macintosh puede tener otro, mientras que un FOSS * nixel sistema puede tener otro. Si bien este es un enfoque sencillo del problema, tiene el potencial de ser considerablemente más costoso en costos de desarrollo, tiempo de desarrollo o ambos, especialmente para entidades corporativas. La idea detrás de esto es crear más de dos programas diferentes que tengan la capacidad de comportarse de manera similar entre sí. También es posible que este medio de desarrollar una aplicación multiplataforma resulte en más problemas con el seguimiento y la corrección de errores, porque los dos árboles de origen diferentes tendrían programadores diferentes y, por lo tanto, defectos diferentes en cada versión.

Otro enfoque que se utiliza es depender de software preexistente que oculta las diferencias entre las plataformas, lo que se denomina abstracción de la plataforma, de modo que el programa en sí desconoce la plataforma en la que se está ejecutando. Se podría decir que estos programas son independientes de la plataforma . Los programas que se ejecutan en la máquina virtual Java (JVM) se crean de esta manera.

Algunas aplicaciones combinan varios métodos de programación multiplataforma para crear la aplicación final. Un ejemplo de esto es el navegador web Firefox, que utiliza la abstracción para construir algunos de los componentes de nivel inferior, 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 scripting para ayudar a facilitar facilidad de portabilidad . 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 también está escrito en XUL, CSS y JavaScript.

Conjuntos de herramientas y entornos de programación multiplataforma [ editar ]

Hay una serie de herramientas [15] [16] que están disponibles para ayudar a facilitar el proceso de programación multiplataforma:

  • 8º: Un lenguaje de desarrollo multiplataforma, que utiliza Juce como capa GUI. Las plataformas que soporta actualmente son: 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, que también admite el rendimiento de AppWallet y Native dentro de 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 multiplataforma para varias plataformas 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 de escritura única y ejecutado en cualquier lugar (WORA) de código abierto para desarrolladores de Java y Kotlin.
  • Delphi : un IDE multiplataforma, que utiliza el lenguaje Pascal para el desarrollo. Actualmente es compatible con Android, iOS, Windows, macOS, Linux.
  • Ecere SDK: una interfaz gráfica de usuario multiplataforma 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 . Actualmente es compatible con Linux, FreeBSD, Windows, Android, macOS y la Web a través de Emscripten o Binaryen (WebAssembly)
  • Eclipse : un entorno de desarrollo multiplataforma 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 : Otro conjunto de herramientas multiplataforma 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 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 rápido de software 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 multiplataforma que utiliza Godot Engine.
  • GTK + : un kit de herramientas de widgets de código abierto para sistemas similares a Unix con X11 y Microsoft Windows.
  • Haxe : un lenguaje multiplataforma 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. [17]
  • 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 controlador de vista de modelo de código abierto donde el modelo y el controlador se comparten entre plataformas, pero la vista es específica de la plataforma. [18]
  • 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 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 multiplataforma.
  • 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 patentado multiplataforma 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 aplicación y un conjunto de herramientas de widgets para sistemas similares a Unix con X11 , Microsoft Windows, macOS y otros sistemas, disponible tanto con licencias de código abierto como de propiedad.
  • Biblioteca multimedia simple y rápida: una API C ++ multimedia que proporciona acceso de bajo y alto nivel a gráficos, entrada, audio, etc.
  • Capa de DirectMedia simple : una biblioteca multimedia multiplataforma 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 muchos sistemas operativos, incluidos Linux, Windows y macOS, y está destinado a juegos y aplicaciones multimedia.
  • Smartface : una herramienta de desarrollo de aplicaciones nativas multiplataforma 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 multiplataforma de 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. El U ++ compite con lenguajes de scripting populares al tiempo que conserva las características de tiempo de ejecución de C / C ++. Tiene su propio entorno de desarrollo integrado, TheIDE, que cuenta con tecnología BLITZ-build para acelerar las reconstrucciones de C ++ hasta 4 veces.
  • 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 multiplataforma de código bajo para crear aplicaciones web receptivas y aplicaciones móviles híbridas (Android e iOS).
  • WinDev: Entorno de desarrollo integrado para Windows, Linux, .Net y Java (también con soporte para Internet e Intranet ). Software de desarrollo optimizado para la creación de aplicaciones profesionales tipo gestión empresarial, contabilidad, aplicaciones industriales, gestión de planificación, software de caja registradora, software de facturación. Ventaja principal: velocidad de desarrollo debido a la integración de módulos prefabricados (edición, gestión de códigos de barras, entrada de datos, planificación, etc. ...) que reducen enormemente el número de líneas de código. Windev wlanguage es un lenguaje de programación procedimental que permite la programación imperativa y la programación orientada a objetos.
  • wxWidgets : un kit de herramientas de widgets de código abierto que también es un marco de aplicación . [19] Se ejecuta en sistemas similares a Unix con X11 , Microsoft Windows y macOS. Permite que las aplicaciones escritas para usarlo se ejecuten en todos los sistemas que admite, si la aplicación no usa ninguna programación específica del sistema operativo además de ella.
  • Xojo : un IDE de RAD desarrollado por Xojo, Inc. 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.
  • Cosmopolitan / APE : Cosmopolitan libc es un tiempo de ejecución de C para la CPU x64 para crear los llamados "αcτµαlly pδrταblε εxεcµταblε" , escribiendo software en Linux 2.6+ usando un subconjunto Linux ABI con GCC y haciendo que los programas funcionen en Windows 8+, macOS y BSD.

Desafíos para el desarrollo multiplataforma [ editar ]

Hay ciertos problemas asociados con el desarrollo multiplataforma. Algunos de estos incluyen:

  • 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 adecuadamente 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 el usuario desea guardar o descartar los cambios en un archivo.
  • Los lenguajes de script y las máquinas virtuales deben traducirse a código ejecutable nativo cada vez que se ejecuta la aplicación, lo que impone una penalización en el rendimiento. Esta penalización se puede aliviar utilizando técnicas avanzadas como la compilación justo a tiempo ; pero incluso usando tales técnicas, 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. [20]

Ver también [ editar ]

  • Binario gordo
  • Juego multiplataforma
  • Independiente del hardware
  • Lista de videojuegos que admiten el juego multiplataforma
  • Lista de kits de herramientas de widgets
  • Virtualización de plataforma
  • Java (plataforma de software)
  • Enlace de idioma
  • Transcompilador
  • Compatibilidad de código binario
  • Xamarin
  • Comparación de las características del usuario de las plataformas de mensajería.

Referencias [ editar ]

  1. ^ "Directrices de diseño: glosario" . java.sun.com . Consultado el 19 de octubre de 2011 .
  2. ^ "Blog de tecnología SDD: Definición de plataforma cruzada" . Tecnología SDD . Consultado el 18 de octubre de 2020 .
  3. Lee P Richardson (16 de febrero de 2016). "Xamarin vs Ionic: A likhit likhit 161616161 Mobile, Cross Platform, Shootout" .
  4. ^ a b "Definición de plataforma" . El proyecto de información de Linux . Consultado el 27 de marzo de 2014 .
  5. ^ En el sitio web de Net Marketshare , Windows (todas las variantes) tiene una participación de mercado de ~ 89% en marzo de 2011
  6. ^ "Acerca de Mono" . mono-project.com . Consultado el 17 de diciembre de 2015 .
  7. ^ "Apple anuncia la transición de Mac al silicio de Apple" . Sala de prensa de Apple . Consultado el 8 de diciembre de 2020 .
  8. ^ Migración a x86-64 (AMD64, EM64T) - Apache OpenOffice Wiki . Wiki.services.openoffice.org (22 de junio de 2012). Consultado el 17 de julio de 2013.
  9. ^ Corti, Sascha P. (octubre de 2011). "Detección de funciones y navegador" . Revista MSDN . Consultado el 28 de enero de 2014 .
  10. ^ Choudhary, SR (2014). "Pruebas multiplataforma y mantenimiento de aplicaciones web y móviles". Actas complementarias de la 36ª Conferencia Internacional sobre Ingeniería de Software - ICSE Companion 2014 : 642–645. doi : 10.1145 / 2591062.2591097 . ISBN 9781450327688. S2CID  1903037 .
  11. Mehrotra, Pranob (1 de diciembre de 2020). "La suite Collabora Office obtiene un nuevo diseño para tabletas Android y Chromebooks" . Desarrolladores XDA . Consultado el 15 de enero de 2021 . Collabora Office es una alternativa de código abierto popular a la suite de Microsoft Office. Está basado en LibreOffice y está disponible en una variedad de plataformas, incluidas Windows, Linux, iOS y Android. Este año en julio, una actualización importante para la suite ofimática trajo soporte para dispositivos Chrome OS.
  12. ^ "¡Collabora Office en iOS y Android acaba de mejorar!" . Adfinis . 2020-12-15 . Consultado el 15 de enero de 2021 . ... interfaces táctiles optimizadas: una para tabletas y otra para pantallas de teléfonos. ... (iOS, iPadOS, Chromebooks, Android).
  13. ^ "Nextcloud Ubuntu Appliance agrega Collabora Online a la imagen de Raspberry Pi" . MuyLinux . 2021-03-26 . Consultado el 30 de marzo de 2021 . la primera solución de oficina web autohospedada viable para la popular plataforma Raspberry Pi 4
  14. ^ Cribba. Quake III Arena , Giant Bombcast , 15 de febrero de 2013.
  15. ^ El kit de herramientas de la GUI, página del marco
  16. ^ "Preguntas frecuentes independientes de la plataforma" . Archivado desde el original el 16 de agosto de 2008 . Consultado el 25 de abril de 2009 .
  17. ^ "Bibliotecas SDK multiplataforma para reconocimiento, documentos, médicos, imágenes y multimedia" . www.leadtools.com . Consultado el 3 de marzo de 2021 .
  18. ^ "12 beneficios del desarrollo de aplicaciones multiplataforma Xamarin" . HeadWorks . El 15 de marzo de 2019.
  19. ^ Descripción de WxWidgets
  20. 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 .