Desarrollo De Aplicaciones Web Abiertas Para La Plataforma FXOS - UPM

Transcription

Universidad Politécnica de MadridEscuela Técnica Superior de Ingenieros de TelecomunicaciónDESARROLLO DE APLICACIONES WEB ABIERTASPARA LA PLATAFORMA FIREFOX OSTRABAJO FIN DE MÁSTEROmar Alejandro Sotelo Torres2013

Universidad Politécnica de MadridEscuela Técnica Superior de Ingenieros de TelecomunicaciónMáster Universitario enIngeniería de Redes y Servicios TelemáticosTRABAJO FIN DE MÁSTERDESARROLLO DE APLICACIONES WEB ABIERTASPARA LA PLATAFORMA FIREFOX OSAutorOmar Alejandro Sotelo TorresDirectorSantiago Pavón GómezDepartamento de Ingeniería de Sistemas Telemáticos2013

ResumenSmartphones cada vez más potentes, con mejores funcionalidades y a un menor costo,hacen que el número de aplicaciones para estos dispositivos crezca de formaexponencial, tanto para uso personal como corporativo. Actualmente, el mercado de latelefonía móvil se encuentra dominado por los sistemas operativos Android de Googlee iOS de Apple. Estos sistemas operativos han destacado entre los otros debido a surendimiento, prestaciones y demás características que incentivan a los usuarios a suuso.Al igual que para la mayoría de los sistemas operativos móviles que existen hoy endía, para estos sistemas el desarrollo de las aplicaciones se hace generalmente de formanativa, es deciraplicaciones programadas específicamente para cada sistemaoperativo, haciendo uso de APIs, librerías, kit de desarrollo y lenguajes deprogramación definidos por las compañías propietarias.EL surgimiento de HTML5 y la búsqueda de la estandarización de las aplicacionespara dispositivos móviles han impulsado el surgimiento de propuestas de desarrollohibridas o puramente web, promoviendo por parte de Mozilla la idea de llevar lastecnologías web abiertas a los terminales móviles a través de un sistema operativoconstruido exclusivamente haciendo uso de estas, dando originen a Firefox OS.En este trabajo se presenta un estudio de las principales características del sistemaoperativo Firefox OS, así como de los recursos, herramientas y APIs ofrecidas para eldesarrollo de aplicaciones web abiertas para esta plataforma. Presentado a forma detutorial con el fin de que sirva como una guía para un usuario con conocimientosbásicos de las tecnologías web y móviles, que desee desarrollar aplicaciones para estesistema operativo.i

AbstractSmartphones becoming more powerful, with better functionality at a lower cost, makethe number of applications for these devices grow exponentially for both personal andcorporate use. Currently, the mobile phone market is dominated by Google's Androidand Apple's iOS. These operating systems have been prominent among the others dueof its performance, services, and other features that encourage users to use.As well as for others mobile operating systems that exist today, for these two systemsapplication development is usually done natively, i.e. applications written specificallyfor each operating system, using APIs, libraries, development kits and programminglanguages defined by the owner companies.The emergence of HTML5 and the search for the standardization of applications formobile devices through hybrid proposals or purely web, promoted by part ofMozilla the idea to bring the open web technologies to mobile terminals through anoperating system built exclusively by making use of these, giving originate in this wayto Firefox OS.This paper presents a study of the main features of Firefox OS as well as the resources,tools and APIs offered for the development of open web applications for this platform.Structured as a tutorial in order to serve as a guide for a user with basic knowledge ofthe web and mobile technologies that want to develop applications to this operatingsystem.iii

Índice generalResumen . iAbstract. iiiÍndice general. vÍndice de figuras . ixÍndice de Tablas . ixSiglas . xi12Introducción . 131.1Objetivos . 141.2Motivación . 141.3Estructura del Documento . 15Marco Conceptual . 162.12.1.1HTML (Hyper Text Markup Language) . 162.1.2CSS (Cascading Style Sheets) . 182.1.3JavaScript . 192.1.4JSON (JavaScript Object Notation) . 202.23Tecnologías Web . 16Open Web Apps . 20Introducción a Firefox OS . 223.1¿Qué es Firefox OS?. 223.2Surgimiento de Firefox OS . 223.3Firefox OS en el Mercado . 233.4Arquitectura de Firefox OS . 233.5Tipos de Aplicaciones en Firefox OS . 253.5.1Aplicaciones Alojadas (Hosted Apps) . 253.5.2Aplicaciones Empaquetadas (Packaged Apps) . 25v

3.645Iniciando a programar . 274.1Configurando el entorno de programación . 274.2Componentes básicos de una aplicación. 284.3Creación de un Proyecto . 30Herramientas y recursos para la creación de aplicaciones . 335.1Herramientas para la creación de Interfaces de Usuario . 335.1.1Building Firefox OS . 335.1.2FxOSstub . 355.1.3Mortar . 365.2Práctica 1: Agenda de Eventos . 385.2.1Enunciado práctica 1: Agenda de eventos . 385.2.2Solución practica 1. 385.3Frameworks y Librerías . 435.3.1Frameworks para el desarrollo multiplataforma . 435.3.2Librerías orientadas a móviles . 445.46Firefox MarketPlace . 26Práctica 2: Calculadora de IMC . 455.4.1Enunciado práctica 2: Calculadora de IMC . 455.4.2Solución practica 2. 45WebApis y WebActivities . 506.1Web APIs . 506.1.1APIs para la comunicación. 516.1.2APIs para el manejo de datos . 526.1.3APIs para el acceso al hardware . 526.1.4Otras APIs. 536.2Práctica 3: Battery Status . 546.2.1Enunciado Práctica 3: Battery Status . 546.2.2Solución Practica 3. 546.3Web Activities . 586.4Práctica 4: Funciones Básicas (Web Activities). 616.4.1Enunciado Práctica 4: Funciones Básicas . 61vi

6.4.278Solución Practica 4. 61Distribución y Publicación de las aplicaciones . 677.1Distribución a través de un servidor Web . 677.2Distribución a través del Marketplace. 677.3Publicación de aplicaciones en el Marketplace . 68Conclusiones . 71Bibliografía . 73vii

Índice de figurasFigura 1. Estructura básica de una página HTML. 17Figura 2. Sintaxis de CSS . 18Figura 3. Vinculo de una CSS a un documento HTML . 19Figura 4. Utilización de JavaScript en HTML . 20Figura 5. Sintaxis de JSON . 20Figura 6. Arquitectura de Firefox OS . 24Figura 7. Instalación del Simulador de Firefox OS . 27Figura 8. Estructura básica de un proyecto en Firefox OS . 30Figura 9. Icono de la Aplicación Hola Mundo . 31Figura 10. Aplicación Hola Mundo desplegada en el Simulador de Firefox OS . 32Figura 11. Ejemplos de iconos disponibles en Building Firefox OS . 35Figura 12. Plantillas FxOSstub. 36Figura 13. Estructura de carpetas y archivos de una plantilla de Mortar . 37Figura 14. Set de plantillas de Mortar . 37Figura 15. Vista Adaptable de la aplicación desplegada en el servidor Volo. 39Figura 16. Practica 1: Agenda de Eventos. 43Figura 17. Estructura de carpetas y archivos de la aplicación después de laintegración del Framework Lungo y la librería Quojs . 46Figura 18. Practica 2: Calculadora de IMC . 49Figura 19. Practica 3: Battery Status. 58Figura 20. Practica 4: funBasicas . 66Figura 21. Acuerdo para desarrolladores . 68Figura 22. Información de la aplicación . 69Figura 23. Detalles de la aplicación . 69Figura 24. Proceso de publicación finalizado . 70Figura 25. Aplicación disponible en el Marketplace . 70Índice de TablasTabla 1. Campos del Manifest.webapp . 29Tabla 2. Componentes definidos en la sección Building Blocks de BFFOS . 34Tabla 3. Micro librerías JavaScript para el desarrollo de aplicaciones . 44Tabla 4. Actividades de Firefox OS . 60ix

x

SiglasAPI: Application Programming InterfaceApp: ApplicationB2G: Boot to GeckoBFFOS: Building Firefox OSCPU: Central Processing UnitCSP: Content Security PolicyCSS: Cascading Style SheetsFXOS: Firefox OSHAL: Hardware Abstraction LayerHTML: HyperText Markup LanguageICC: Integrated Circuit CardJS: JavaScriptJSON: JavaScript Object NotationMMS: Multimedia Messaging SystemSMS: Short Message SystemSVG: Scalable Vector GraphicsUI: User InterfaceURI: Uniform Resource IdentifierURL: Uniform Resource LocatorW3C: World Wide Web ConsortiumWHATWG: Web Hypertext Application Technology Working GroupWIFI: Wireless FidelityXML: eXtensible Markup Languagexi

xii

1 IntroducciónEl mercado de los dispositivos móviles adquiere cada día mayor relevancia a nivelmundial. La evolución tecnológica de los equipos terminales, el incremento de susfuncionalidades y la reducción de los costos, han favorecido su proliferación. Uncomponente importante y que marca tendencia a la hora de adquirir un terminal porparte de un usuario es su sistema operativo, siendo Android de Google e iOS de Applelos que dominan actualmente el mercado.Al igual que para la mayoría de los sistemas operativos móviles que existen hoy endía, para estos el desarrollo de las aplicaciones se hace generalmente de forma nativa,es deciraplicaciones programadas específicamente para cada sistema operativo,haciendo uso de APIs, librerías, kits de desarrollo y lenguajes de programacióndefinidos por las compañías propietarias. Desde la perspectiva de los desarrolladoresde aplicaciones móviles, esta amplia variedad de terminales y la heterogeneidad de suscaracterísticas, de la mano con el desarrollo de forma nativa implican un amplio yprofundo conocimiento de cada uno de los lenguajes y los sistemas operativos en losque se desee desplegar una aplicación, así como la necesidad de desarrollar comomínimo una versión de la aplicación para cada plataforma.En contra parte a este modelo, gracias al surgimiento y la rápida evolución detecnologías web como HTML5, así como la necesidad de estandarizar las aplicacionesmóviles para permitir su funcionamiento en múltiples plataformas, nacen modelos dedesarrollo de aplicaciones móviles web (basados en HTML5) o híbridos (nativo web),basados en Frameworks y librerías que permiten la creación y el funcionamiento de unamisma aplicación en varias plataformas y terminales.Partiendo de la idea de llevar las tecnologías web abiertas a los terminales móviles,Mozilla respaldada por fabricantes de dispositivos y empresas del sector de lastelecomunicaciones, siendo la más relevante Telefónica, ha desarrollado un sistemaoperativo construido exclusivamente haciendo uso de estas tecnologías, denominadoFirefox OS.El presente trabajo es el fruto de una investigación de tipo exploratorio acerca delsistema operativo Firefox OS, llevada a cabo con el fin de comprender sufuncionamiento y aprender a desarrollar aplicaciones para esta plataforma.13

1.1 ObjetivosEl objetivo general de este trabajo es orientar a un usuario en el desarrollo deaplicaciones para el sistema operativo Firefox OS.Como objetivos específicos se proponen: Determinar el estado de madurez del sistema operativo Firefox OS. Mostrar una serie de recursos y herramientas que simplifican el proceso dedesarrollo de aplicaciones. Explorar el funcionamiento de las Web APIs ofrecidas por el sistemaoperativo a través del desarrollo de aplicaciones básicas. Crear una guía para el desarrollo de aplicaciones en Firefox OS.1.2 MotivaciónLa creciente demanda de aplicaciones móviles por parte de los usuarios ha llevado aplantearse diferentes modelos de desarrollo, destacándose principalmente tres modeloso tipos de aplicaciones móviles: nativas, web e híbridas, las cuales poseen susfortalezas y debilidades, por lo que según los requerimientos del cliente y propios de laaplicación es conveniente hacer uso de alguno en particular.Estudios recientes de investigadores, puestas en producción de popularesaplicaciones como Linkdin (hibrida para iOS y nativa para Android), Instagram (hibrida),Facebook (versiones nativa y web) entre otras, han demostrado que la incorporación delas tecnologías web al ecosistema móvil es inminente, como se afirma en un informe dela consultora Gartner que indica que para el año 2016 el 50% de las aplicaciones móvilescorresponderán a aplicaciones hibridas (1).De esta manera la apuesta de Mozilla de crear un sistema operativo exclusivamentebasado en tecnologías web abiertas se convierte en una alternativa bastante atractivapara los desarrolladores de aplicaciones, ya que se da paso a un nuevo modelo dedesarrollo dondese hace uso del ecosistema web abierto para el desarrollo deaplicaciones “nativas” para la plataforma Firefox OS, razón por la cual es de interés larealización de este trabajo.14

1.3 Estructura del DocumentoEl presente trabajo se encuentra estructurado a modo de tutorial con el fin deservir de guía a un usuario con conocimientos básicos en tecnologías web y móviles,que desee desarrollar aplicaciones para el sistema operativo Firefox OS. El documentoha sido dividido de la siguiente forma: El capítulo I presenta la introducción, los objetivos, la motivación y laestructura general del desarrollo del trabajo. En el capítulo II se presenta el marco conceptual, donde se abordanconceptos relacionados a las tecnologías web que utiliza el sistemaoperativo, necesarios para el entendimiento y desarrollo de las aplicaciones. En el capítulo III se presentan los aspectos más importantes del sistemaoperativo Firefox OS. En el capítulo IV se explican los componentes básicos de una aplicación, laconfiguración del entorno de desarrollo y se crea un primer proyecto, el“Hola Mundo”. Los capítulos V y VI, se centran en el desarrollo de aplicaciones. Explican endetalle las herramientas y librerías más utilizadas para la creación deaplicaciones en Firefox OS, así como el funcionamiento de las Web APIs. En el capítulo VII se abordan los procesos de distribución y publicación delas aplicaciones en el Marketplace la tienda de Firefox. Finalmente, se presentan una serie de conclusiones obtenidas como fruto deldesarrollo de este trabajo.15

2 Marco ConceptualEn esta sección del trabajo se recopilan una serie de conceptos importantes paracomprender el funcionamiento de las aplicaciones en Firefox OS. En primer lugar sepresentan las tecnologías web base del sistema operativo; a continuación se introduceel concepto de Open Web Apps termino que hace referencia a las aplicacionesdesarrolladas con las tecnologías web abiertas, las cuales son soportadas por laplataforma Firefox OS.2.1 Tecnologías WebEl posicionamiento de la web como plataforma universal para el intercambio deinformación, ha motivado el desarrollo de nuevas tecnologías y la evolución de las yaexistentes con el fin de brindar nuevas funcionalidades y mejores servicios a losusuarios.La incorporación de los dispositivos móviles como actores principales de esteecosistema, ha generado nuevos requerimientos por parte de los usuarios por lo quelas aplicaciones deben de rediseñarse para adaptarse a lo que algunos autoresdenominan “la cuarta pantalla” (2), en esta medida iniciativas como One Web1 yResponsive Web Design2, junto con tecnologías web como HTML5, CSS3 y JavaScript hanpermitido la construcción de sitios web y aplicaciones altamente funcionales yeficientes, que responden a la necesidad de los usuarios de acceder a la información ylos servicios desde diferentes dispositivos, independientemente del tipo de pantalla,sistema operativo y demás características del equipo terminal.En este trabajo son de especial interés las tecnologías Web HTML5, CSS3, JavaScripty JSON, ya que son el núcleo para el desarrollo de aplicaciones para el sistemaoperativo Firefox OS.2.1.1HTML (Hyper Text Markup Language)HTML es un lenguaje de marcado estandarizado por el World Wide Web Consortium(W3C) y el Web Hypertext Application Technology Working Group (WHATWG), utilizadopara escribir y estructurar el contenido de un documento web, de forma que sea legiblepor el navegador. HTML separa el contenido de la presentación haciendo uso de una1 Hace referencia a la idea de construir una Web para todos (Web for All) y accesible desde cualquiertipo de dispositivo (Web on Everything).2 Técnica de diseño y desarrollo web que permite adaptar la aplicación al dispositivo.16

serie de elementos predefinidos, los cuales se conforman por tags o etiquetas,encargadas de describir el contenido del documento.Una etiqueta está conformada por una palabra clave y los símbolos menor que (“ ”)y mayor que (“ ”), generalmente usados en pares para indicar el inicio y el fin de unelemento, y entre las cuales se encuentra ubicado el contenido. La etiqueta inicialpuede contener información adicional denominada atributos, los cuales se especifican através de una pareja nombre/valor y son utilizados para definir las propiedades. LaFig. 1 muestra un modelo básico de la estructura de una página HTML.Figura 1. Estructura básica de una página HTMLLa especificación más reciente de este lenguaje se conoce como HTML5, la cual adiferencia de sus antecesores no describe el estilo y formato del contenido, solo selimita a definir el propio contenido y su significado, la parte restante (estilo y formato)es definida y controlada haciendo uso de hojas de estilo o Cascading Style Sheets (CSS).El hecho de separar el contenido de la presentación incrementa la eficiencia del código,facilita el mantenimiento y la accesibilidad de los sitios web, así como la adaptabilidady compatibilidad en diferentes dispositivos.Entre las principales características de la especificación se encuentran el soportepara el almacenamiento local, soporte SVG (Scalable Vector Graphics), nuevos tipos dedatos, y la incorporación de los elementos Canvas, Audio y Video que permiten dibujar yañadir elementos multimedia directamente en la página, reduciendo la necesidad dehacer uso de plugins externos.17

2.1.2CSS (Cascading Style Sheets)Las hojas de estilo en cascada son un mecanismo utilizado para definir como semuestran los elementos HTML. Los estilos se definen en archivos con extensión CSS, elhecho de tener el estilo independiente del contenido, permite su reúso en diferentesarchivos HTML, así como la modificación del aspecto visual de una o varias páginasweb solo con modificar este archivo, ofreciendo a los desarrolladores control totalsobre el estilo y el formato de los documentos.Los estilos fueron añadidos en la versión 4 de HTML con el fin de simplificar yreducir el tamaño de los documentos, ya que en versiones anteriores como HTML 3.2el uso de atributos en las etiquetas para definir propiedades como color, tamaño y tipode letra debían ser añadidos en cada una de las paginas, convirtiéndose en un procesolargo y costoso para los diseñadores. La versión actual de las hojas de estilo se conocecomo CSS3, la cual viene definida por una serie de módulos, que añadenfuncionalidades a las existentes en su antecesora CSS2 manteniendo de esta manera lacompatibilidad entre las versiones.Las hojas de estilo se componen por un conjunto de reglas que definen el estilo deuno o más elementos de un documento. Una regla se compone por dos partes: unselector y una declaración; El selector funciona como enlace entre el documento y elestilo, definiendo los elementos en los cuales se aplica la declaración. Esta última,establece el efecto a causar a través de la definición de una propiedad y el valor que sele asigne. La Fig. 2 muestra un ejemplo de la sintaxis utilizada.Figura 2. Sintaxis de CSS adaptado de (3)A pesar de que los estilos pueden ser añadidos directamente sobre el documentoHTML haciendo uso del elemento “ style /style ”, no se recomienda pues comose mencionó anteriormente la idea es separa el contenido de la presentación. Paravincular una hoja de estilo externa a un documento se hace uso del elemento“ link ”, el cual debe ir situado en la sección head como se observa en la Fig. 3.18

Figura 3. Vinculo de una CSS a un documento HTML2.1.3JavaScriptJavaScript (JS) es un lenguaje de script orientado a objetos, enfocado principalmentea la web por lo que puede ser embebido dentro de las páginas HTML. Es un lenguajesencillo, ligero y con tipos flexibles de datos (loosely typed), lo que significa que lasvariables no requieren ser definidas como un tipo específico de dato. Sintácticamentees un lenguaje similar a C, C y JAVA con operadores, estructuras de control,sentencias y soporte de tipos de datos de la misma naturaleza.JavaScript puede ser utilizado tanto en aplicaciones cliente como en el servidor; enel lado cliente ha sido utilizado principalmente en los browser, donde su propósitogeneral es proveer dinamismo y extender las funcionalidades de lenguajes comoHTML a través de scripts, permitiendo de esta manera una mejor interacción delusuario con las páginas. En otras palabras, mientras que HTML se utiliza paraalmacenar y dar formato a una página web, CSS para dar el estilo de presentación,JavaScript es usado para crear aplicaciones web enriquecidas.En un documento HTML, es posible hacer uso de JavaScript insertando el códigodirectamente en el documento, o desde un archivo externo con extensión JS el cualcontiene el código a utilizar. En el primer caso el código debe ser insertado entre lasetiquetas “ script script ”, siendo posible utilizarlo en la sección head y/o body . Para vincular un script externo se debe hacer uso del atributo src de la mismaetiqueta indicando como valor la ubicación y el nombre del archivo. Es aconsejableubicar estas funciones en la sección head o al final de la página con el fin desepararlas del contenido. La Fig. 4 muestra un ejemplo de la utilización de JavaScripten un documento HTML.19

Figura 4. Utilización de JavaScript en HTML2.1.4JSON (JavaScript Object Notation)JSON es un formato para el intercambio de datos, similar a XML, independiente dellenguaje y la plataforma. Su sintaxis es un subconjunto de la sintaxis de notación deobjetos de JavaScript.Los objetos en JSON, se definen con un par de llaves de apertura y cierre (“{ }”),dentro de las cuales se especifican un conjunto de pares nombre/valor. Cada nombrees seguido por dos puntos (“:”) y a continuación el valor correspondiente. Las parejasnombre/valor se separan a través de comas (“,”). La Fig. 5 presenta un ejemplo de estasintaxis.Figura 5. Sintaxis de JSON2.2 Open Web AppsUna Web App es una versión de la web optimizada para su funcionamiento yvisualización en dispositivos móviles, desarrollada con tecnologías web abiertas(HTML5, CSS3, JavaScript ), que se puede ejecutar en cualquier equipo terminal quecuente con un navegador, sin importar el sistema operativo del que este disponga.Una Web App pura presenta una serie de limitaciones, como el hecho de ser unaaplicación accesible exclusivamente a través de la web, por lo que el usuario deberácontar con una conexión a internet siempre que desee hacer uso de esta, además al noser una aplicación nativa algunas de las funcionalidades propias del dispositivo noestarán disponibles. Otro factor en contra, es el hecho de que este tipo de aplicaciones20

no cuentan con una tienda de aplicaciones para su distribución, siendo más difícilllegar a los usuarios finales.Bajo la sentencia “la web es la plataforma”, Mozilla promueve el desarrollo de untipo de aplicaciones basadas en la web, denominadas Open Web Apps, las cuales sonaplicaciones similares a las Web Apps, pero a diferencia de estas, pueden ser instaladasen los dispositivos, permitiéndoles funcionar sin necesidad de una conexión a internety hacer uso del almacenamiento local, además del acceso a las caracterís

e iOS de Apple. Estos sistemas operativos han destacado entre los otros debido a su rendimiento, prestaciones y demás características que incentivan a los usuarios a su uso. Al igual que para la mayoría de los sistemas operativos móviles que existen hoy en día, para estos sistemas el desarrollo de las aplicaciones se hace generalmente de forma