stringtranslate.com

Software multiplataforma

En informática , el software multiplataforma (también llamado software multiplataforma , software independiente de la plataforma o software independiente de la plataforma ) es un software informático 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 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 se utilizan los intérpretes o paquetes de tiempo de ejecución. 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 , Flutter , NativeScript , Xamarin , Apache Cordova , Ionic y React Native . [3]

Plataformas

Plataforma puede referirse al tipo de procesador (CPU) u otro hardware en el que se ejecuta un sistema operativo (SO) o aplicación , el tipo de sistema operativo o una combinación de ambos. [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 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 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: ARM o la arquitectura x86. Estas máquinas pueden ejecutar diferentes sistemas operativos.

Los teléfonos inteligentes y las 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 (SO) o un entorno de programación , aunque lo más común es que sea una combinación de ambos. Una excepción es Java , que utiliza una máquina virtual (VM) independiente del sistema operativo para ejecutar el código de bytes de Java . Algunas plataformas de software son:

Menor, histórico

Java

El lenguaje Java normalmente se compila 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 sistema operativo, como entrada/salida de disco (E/S) 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 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 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, se utilizan complementos de navegador 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 u sistema operativo. Desarrollar dicho software puede ser una tarea que requiere mucho tiempo porque los diferentes sistemas operativos tienen diferentes 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 admite el sistema operativo. 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 admitan ese lenguaje, o incluso en diferentes versiones del mismo sistema operativo.

aplicaciones web

Las aplicaciones web suelen describirse como multiplataforma porque, idealmente, son accesibles desde cualquier navegador web : el navegador es la plataforma. 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 disponer 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 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 para 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, siguen siendo relativamente comunes, especialmente cuando la compatibilidad y la simplicidad entre plataformas se consideran más críticas que la funcionalidad avanzada.

Ejemplos destacados de aplicaciones web avanzadas incluyen la interfaz web de Gmail y Google Maps . Estas aplicaciones dependen habitualmente de funciones adicionales que sólo 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 .

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 agraciada

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 denominador mínimo común 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 funcionalidad reducida pero aún útil.

Múltiples bases de código

Parte del software se mantiene en bases de código distintas para diferentes plataformas (hardware y sistema operativo), 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 pueda compilarse en múltiples formatos específicos de la plataforma. Una técnica es la compilación condicional . Con esta técnica no se repite código común a todas las plataformas. Los bloques de código que sólo son relevantes para determinadas plataformas se vuelven condicionales, de modo que sólo se interpretan o compilan cuando es necesario. Otra técnica es la separación de funciones, que desactiva las funciones que no son compatibles con los navegadores o los sistemas operativos, 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 programación) puede consultar la plataforma en la que se está ejecutando 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 de la dependencia del proveedor .

Diseño web adaptable

El diseño web responsivo (RWD) es un enfoque de diseño web destinado a diseñar 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 y desplazamiento) en una amplia gama de dispositivos, desde dispositivos móviles. teléfonos 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 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 a este problema.

Herramientas como el modelo de objetos de página permiten programar 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 son cada vez más populares, pero muchos usuarios de ordenadores todavía utilizan software de aplicación tradicional que no depende de una arquitectura cliente/servidor web. La distinción entre aplicaciones tradicionales y web no siempre es clara. Las características, los métodos de instalación y las arquitecturas de las aplicaciones web y tradicionales se superponen y 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 único ejecutable multiplataforma podría estar muy repleto de código que nunca se ejecuta en una plataforma en particular. En cambio, generalmente hay una selección de ejecutables, cada uno de ellos creado para una plataforma.

Para el 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 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 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 único archivo ejecutable llamado binario gordo .

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 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 reconstruir para ejecutarse en Linux en la familia x86 (y potencialmente en otras arquitecturas) también. Las múltiples versiones del código pueden almacenarse como bases de código separadas o fusionarse en una sola base de código.

Una alternativa a la portabilidad es la virtualización multiplataforma , donde las aplicaciones compiladas para una plataforma pueden ejecutarse en otra sin modificación del código fuente o los archivos binarios. Como ejemplo, Rosetta de Apple , que está integrada 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:

Guiones y lenguajes interpretados

Se puede considerar que un script es multiplataforma si su intérprete está disponible en múltiples plataformas y el script solo utiliza las funciones integradas en el idioma. 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, existen 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, 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 plano 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 scripting multiplataforma populares son:

Juegos de vídeo

Multiplataforma o multiplataforma es un término que también puede aplicarse 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 .

Algunas plataformas son más difíciles de escribir que otras, lo que requiere 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. Normalmente, esto sucede cuando se lanza un nuevo sistema de juego, 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 . En caso de que Disney obtenga la licencia del juego con Sony primero, es posible que deba lanzar el juego únicamente en la consola de Sony por un período breve o indefinido .

Juego multiplataforma

Varios desarrolladores han implementado formas de jugar juegos en línea utilizando 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 a los consumidores la decisión de qué plataforma usar. El primer juego que permitió este nivel de interactividad entre juegos de PC y consola fue Quake 3 . [11]

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

Enfoques

Hay diferentes formas de escribir una aplicación multiplataforma. Un enfoque es crear múltiples 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 un sistema FOSS *nix puede tener un conjunto de archivos de código fuente. tercero. Si bien esto es sencillo, en comparación con desarrollar 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 dar lugar a que se rastreen y corrijan más errores.

Otro enfoque es 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 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 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 los complementos clásicos del navegador estilo Netscape . Gran parte del navegador está escrito en XUL, CSS y JavaScript.

Kits de herramientas y entornos

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

Desafíos

Existen muchos desafíos al desarrollar software multiplataforma.

Ver 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 tecnología SDD: Definición de multiplataforma". Tecnología SDD . Consultado el 18 de octubre de 2020 .
  3. ^ Lee P. Richardson (16 de febrero de 2016). "Xamarin vs Ionic: un tiroteo móvil multiplataforma".
  4. ^ ab "Definición de plataforma". El proyecto de información de Linux . 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). "Navegador y detección de funciones". 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-Desarrolladores . Consultado el 15 de enero de 2021 . Collabora Office es una alternativa popular de código abierto al paquete Microsoft Office. Está basado en LibreOffice y está disponible en una variedad de plataformas, incluidas Windows, Linux, iOS y Android. En julio de este año, una actualización importante para la suite ofimática brindó soporte para dispositivos Chrome OS.
  9. ^ "¡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).
  10. ^ "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 viable de oficina web autohospedada para la popular plataforma Raspberry Pi 4
  11. ^ Criba. Quake III Arena, Giant Bombcast , 15 de febrero de 2013.
  12. ^ El kit de herramientas GUI, página del marco
  13. ^ "Preguntas frecuentes sobre plataformas independientes". Archivado desde el original el 16 de agosto de 2008 . Consultado el 25 de abril de 2009 .
  14. ^ "Bibliotecas SDK multiplataforma para reconocimiento, documentos, medicina, imágenes y multimedia". www.leadtools.com . Consultado el 3 de marzo de 2021 .
  15. ^ "12 beneficios del desarrollo de aplicaciones multiplataforma de Xamarin". Trabajos de cabeza . 15 de marzo de 2019.
  16. ^ Descripción de WxWidgets
  17. ^ Warren, Tom (14 de enero de 2020). "Microsoft se despide de Windows 7 y de los millones de PC que todavía lo ejecutan". El borde . Consultado el 6 de febrero de 2020 .