stringtranslate.com

Software multiplataforma

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

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

Plataformas

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

Hardware

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

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

Software

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

Menor, histórico

Java

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

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

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

Implementación

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

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

Aplicaciones web

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

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

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

Diseño

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

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

Degradación elegante

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

Varias bases de código

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

Base de código única

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

Bibliotecas de terceros

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

Diseño web responsivo

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

Pruebas

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

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

Aplicaciones tradicionales

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

Software binario

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

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

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

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

Ejemplo de software binario multiplataforma:

Scripts y lenguajes interpretados

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

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

Algunos lenguajes de programación multiplataforma populares son:

Juegos de vídeo

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

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

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

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

Juego multiplataforma

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

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

Programación

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

Aproches

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

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

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

Kits de herramientas y entornos

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

Desafíos

Existen muchos desafíos al desarrollar software multiplataforma.

Véase también

Referencias

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