5.2 Total ionizing dose
5.2.2 Define the radiation specification/levels
En esta sección se describen algunas de las estrategias que puedes emplear para implementar tus aplicaciones en diferentes plataformas.
Soporte Directo
Puedes soportar varias plataformas si cuentas con un equipo especializado para cada plataforma objetivo. Si bien esto puede consumir muchos recursos, es muy probable que te dé mejor integración y experiencia de usuario en cada sistema. Una vía fácil de inicio es comenzar con una plataforma y luego pro- gresar hacia plataformas adicionales una vez que tu aplicación se ha defendido en el mundo real.
Las librerías de componentes pueden ayudarte a acelerar el desarrollo nativo, ejemplos populares se muestran en la siguiente tabla.
Librería de Componentes Plataformas Objetivo
cocoacontrols.com iOS
chupamobile.com Android, iOS
verious.com Android, iOS, HTML5, Windows
Phone
windowsphonegeek.com/Marketplace Windows Phone
Compartición de Recursos
Cuando mantienes varios equipos para diferentes plataformas puedes ahorrar mucho esfuerzo si compartes algunas estructu- ras de la aplicación:
Hacia Multiplataforma 118
— Concepto y recursos: Esto se hace habitualmente de forma automática: compartir las ideas y los conceptos de la aplicación, el flujo de interfaz de usuario, input y output y los recursos gráficos de la aplicación (pero debes ser consciente de la necesidad de dar soporte a las estructuras específicas de interfaz de usuario de cada plataforma).
— Estructuras de datos y algoritmos: Vé un paso más allá compartiendo estructuras de datos y algoritmos entre plataformas.
— Compartición de código del modelo de negocio: Utilizando compiladores de multiplataforma también puedes compartir el modelo de negocio entre las plata- formas. Alternativamente, puedes utilizar un intérprete o una máquina virtual y un lenguaje común en un grupo de plataformas.
— Abstracción completa: Algunas herramientas multiplata- forma te permiten abstraerte completamente del modelo de negocio, las vistas y el control de tu aplicación para diferentes plataformas.
Reproductores y Máquinas Virtuales
Los reproductores suelen proporcionar un conjunto común de APIs sobre distintas plataformas. Ejemplos famosos incluyen Flash, Java ME y Lua. Este enfoque hace que el desarrollo sea muy fácil. Te vuelves dependiente, sin embargo, del proveedor de la plataforma para incorporar nuevas características, por lo que el reto aquí se da cuando las funciones están disponibles en una única plataforma. A menudo los reproductores tienden
119
a utilizar una aproximación de “mínimo común denominador” respecto a las funciones ofertadas para mantener la unifor- midad entre las implementaciones para varias plataformas. Generadores de código como Applause3 llevan el concepto de
reproductor un paso más allá, a menudo son específicos del dominio y permiten generar aplicaciones a partir de datos. También suelen carecer de flexibilidad en comparación con las soluciones programables.
Compilación Cruzada
La compilación cruzada permite la programación en un lenguaje que es transformado en el lenguaje específico de una platafor- ma diferente. En términos de rendimiento a menudo es la mejor solución de multiplataforma, aunque puede haber diferencias en comparación con las aplicaciones nativas. Esto puede darse, por ejemplo, cuando ciertas construcciones de programación no pueden ser traducidas de manera óptima desde el código fuente al lenguaje de destino.
Hay tres enfoques habituales para la compilación cruzada: traducción directa del código fuente, de forma indirecta medi- ante la traducción del código fuente en un lenguaje intermedio abstracto, y recopilación directa en el formato binario de una plataforma. El enfoque indirecto típicamente produce código menos legible. Este es un problema potencial cuando se desea continuar con el desarrollo en la plataforma de destino usando el código fuente traducido como punto de partida.
Aplicaciones Web (Híbridas)
En la tabla siguiente se enumeran algunos de los frameworks de aplicaciones web disponibles. Con estos entornos se pueden crear aplicaciones web que se comportan casi como aplicacio- nes reales, incluyendo capacidades offline. Sin embargo, ten en cuenta que las tecnologías tienen limitaciones cuando se trata de aspectos como la integración en plataforma o rendimiento.
Hacia Multiplataforma 120
Lee el capítulo “Tecnologías Web” para aprender más acerca del desarrollo web móvil.
Solución Web App Licencia Plataformas de destino
Chrome Apps
developer.chrome.com/apps BSD Android, Mac, Windows
jQuery Mobile
www.jquerymobile.com
MIT y GPL Android, BlackBerry,
Firefox, iOS, Windows Phone
Sencha Touch
www.sencha.com/products/ touch
GPL Android, BlackBerry,
iOS, Windows Phone The M Project
the-m-project.org MIT y GPL Android, BlackBerry, Firefox, iOS, Windows
Normalmente no tienes acceso a las características de hard- ware y elementos nativos de interfaz de usuario, por lo que en nuestra opinión no cuentan como soluciones multiplataforma “reales”; estas soluciones, por lo tanto, no aparecen en la tabla al final de este capítulo.
El desarrollo web híbrido implica insertar una webview dentro de una aplicación nativa. Esta aproximación te permite acceder a las funciones nativas desde los componentes web de tus aplicaciones y también utilizar código nativo para mejorar el rendimiento o aspectos críticos de la experiencia de usuario de tu aplicación. Las aplicaciones híbridas permiten reutilizar elementos de desarrollo web en las plataformas que hayas elegido (un buen ejemplo de entorno híbrido es PhoneGap).
Hacia Multiplataforma 121
ANSI C
Mientras que el HTML y la programación web se crean a partir de un nivel de abstracción muy elevado, también puedes elegir el camino opuesto utilizando ANSI C. Puedes ejecutar código ANSI C en todas las plataformas importantes, como Android, BlackBerry 10, iOS y Windows 8/Windows Phone. El principal problema con esta opción es que no puedes acceder a las APIs específicas de plataforma ni los controles de interfaz de usuario desde dentro de ANSI C. Utilizar C es especialmente adecuado para algoritmos complejos, como los codificadores de audio. Las librerías correspondientes se pueden utilizar en todos los proyectos de aplicaciones para una plataforma.