Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 1 Ingeniería en Desarrollo de Software 8º Semestre Programa de la asignatura: Programación móvil Unidad 1: Tecnologías para mis aplicaciones móviles Ciudad de México, agosto de 2023 Clave: 15144845 Universidad Abierta y a Distancia de México Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 2 Índice Unidad 1. Tecnologías para mis aplicaciones móviles .............................................................. 3 Presentación de la Unidad ......................................................................................................... 3 Logros…………………………………………………………………………………………………..4 Competencia específica ............................................................................................................. 4 1.1. Evolución de los dispositivos móviles ................................................................................. 4 1.2. Tecnologías aplicadas a la programación móvil ................................................................. 6 1.3. Estructura de una aplicación para tecnología móvil ......................................................... 14 1.3.1. J2ME ............................................................................................................................... 15 1.3.2. Android ........................................................................................................................... 18 1.3.3. Midlets ............................................................................................................................ 22 1. 4. Herramientas de desarrollo .............................................................................................. 25 1.4.1. Plataformas: Eclipse, Netbeans, J2ME ......................................................................... 26 1.4.2. Emuladores .................................................................................................................... 30 1.4.3. Importancia y creación de archivos JAR y JAD ............................................................. 35 Cierre de la Unidad ................................................................................................................... 38 Para saber más ........................................................................................................................ 38 Fuentes de consulta ................................................................................................................. 39 Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 3 Unidad 1. Tecnologías para mis aplicaciones móviles Presentación de la Unidad Bienvenido a la Unidad 1. Tecnologías para mis aplicaciones móviles de la asignatura Programación móvil. En esta etapa de la carrera Desarrollo de software ya cuentas con conocimientos avanzados de programación de sistemas de software, programación orientada a objetos, y sistemas operativos; sin embargo, te has preguntado, ¿cómo es posible que un sistema operativo pueda administrar los recursos de un dispositivo móvil tal como un teléfono? O, ¿cómo es posible que haya aplicaciones para distintos dispositivos? Ahora bien, seguramente tienes conocimientos de lo que es un dispositivo móvil y has estado en contacto con ellos, como puede ser un teléfono, una cámara fotográfica con conexión a internet, una tableta electrónica, con la cual es posible comunicarse, accesar a plataformas de estudio, tener acceso a diversas formas de entretenimiento desde música, videos, películas. Seguramente también has observado una serie de aplicaciones que son muy útiles en la vida diaria, desde el procesador de texto, la hoja de cálculo o la aplicación para hacer presentaciones, hasta aquellas que permiten organizar las actividades diarias, tales como, el reloj, la agenda, el GPS, entre otras. Todas esas aplicaciones fueron programadas utilizando el paradigma de programación orientados a objetos, para determinadas plataformas mediante el uso de herramientas de desarrollo enfocadas en dispositivos específicos, por lo que es importante que, como futuro desarrollador de software, estudies esta alternativa para tu vida profesional. Es por eso que esta primera unidad tiene la intención de que conozcas las tecnologías para el desarrollo de aplicaciones híbridas para dispositivos móviles de transmisión de datos mediante la estructura de una aplicación. Esto como parte fundamental para el logro de la competencia de la materia, la cual es el desarrollo de aplicaciones híbridas para dispositivos móviles de transmisión de datos dirigidos al diseño e implementación de soluciones de acceso y gestión de información en un entorno organizacional mediante las tecnologías Android y J2ME. Estos dispositivos, sin la programación de las diferentes aplicaciones que salen dia con dia, serían únicamente una maquinaria sin sentido. Ante ello, lo que nos ocupa conocer y desarrollar en esta asignatura es, precisamente, las diversas tecnologías de programación de estas aplicaciones para dispositivos móviles que hacen dan vida a la maquinaria diversa que existe para comunicación y los diversos ámbitos de la vida. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 4 Logros Al finalizar esta unidad lograrás: • Identificar las tecnologías para el desarrollo de dispositivos móviles. • Identificar las herramientas de desarrollo y estructuras de desarrollo de dispositivos móviles. • Relacionar las estructuras de los dispositivos móviles con las herramientas de desarrollo. Competencia específica • Identifica las tecnologías para el desarrollo de aplicaciones híbridas para dispositivos móviles de transmisión de datos mediante la estructura de una aplicación. 1.1. Evolución de los dispositivos móviles Un dispositivo móvil es, en palabras de Tardáguila (2009), “aquel microordenador que es lo suficientemente ligero como para ser transportado por una persona, y que dispone de la capacidad de batería suficiente como para poder funcionar de forma autónoma”. Bien, ahora, ¿cuantos años tienes hoy? La pregunta va orientada a que mires atrás y visualices cómo era tu vida antes de la época de los teléfonos inteligentes. Si eres más joven seguramente no conociste los primeros teléfonos, y si eres mayor, has vivido la evolución de los mismos. Revisando la historia de la evolución de los dispositivos móviles, en un artículo de la BBC Mundo (portal virtual) se muestra la entrevista que se le hizo a Martin Cooper, el creador del primer celular en 1973, en el programa de tecnología Click. Martin Cooper con el Motorola DynaTAC. Fuente: http://www.bbc.co.uk/staticarchive/08f23c3d0804a62ebed6f1a5b27deb736f5b647a.jpg Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 5 El dispositivo pesaba mas de un kilo y costaba unos 3,995 dólares aproximadamente. A partir de este punto la tecnología y las herramientas de desarrollo han evolucionado exponencialmente, buscando siempre mejorar el desempeño, el tamaño, la comodidad, la utilidad del mismo y hasta el precio. Evolución del tamaño de los celulares. Fuente: https://encrypted- tbn0.gstatic.com/images?q=tbn:ANd9GcSJLBLLGoBVR64uwWRwNJPo029u8unHItWwX0UNqJURaWG__RTH Los dispositivos móviles más importantes en la actualidad son: • Teléfono inteligente: Es un dispositivo que permite hacer llamadastelefónicas, con características como correo electrónico, reproductor de música, radio, televisión, juegos, redes sociales, cámara fotográfica/video, hojas de cálculo, editor de textos, etc. • Videoconsola portátil: Es una consola de videojuegos ligera con una pantalla incorporada, controles y altavoces, que permite a los jugadores llevarla consigo y jugar en cualquier momento y en cualquier lugar. • Reproductor de audio portátil: Es un dispositivo móvil personal que permite al usuario escuchar audio grabado de forma móvil. • Tableta electrónica que sustituye a la PDA (Personal Digital Assistant): Es una computadora personal inalámbrica portátil, con una interfaz de pantalla táctil. El tamaño es mas pequeño que una PC portátil pero mas grande que un teléfono inteligente. Por su parte, la PDA fue un asistente personal digital que combinaba funciones computacionales con telefonía e internet. • Cámara de video y fotografía: Es un dispositivo electrónico portátil capaz de grabar video y tomar fotografías que pueden compartirse al instante vía internet a través de redes sociales. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 6 • Mensáfono: Es es un dispositivo de telecomunicaciones sencillo que recibe mensajes de texto corto. • Computadora portátil: Es una computadora que está diseñada para ser transportada de un lugar a otro. Los teléfonos celulares han recorrido un largo camino en estos últimos tiempos. Hoy es impactante observar el tamaño de los mismos, pues algunos caben en la palma de la mano; sin embargo, por las múltiples necesidades generadas y la idea de que ya no es sólo un celular, es un dispositivo móvil inteligente que sirve para comunicar, entretener y como herramienta de trabajo, entre otros usos que pueda tener. La reducción del tamaño, dependiendo de los fines, puede ya no ser funcional, ya que la pantalla ha aumentado en algunos teléfonos, priorizando la ventaja visual que puede tener una pantalla grande. Lo que se proyecta en el futuro es que el dispositivo se pueda doblar o incluso quizás ni sea necesario tocarlo, pues se proyecta que pueda estar implantado en el cuerpo. 1.2. Tecnologías aplicadas a la programación móvil Para explicar el desarrollo de la tecnología aplicada a la programación móvil es necesario comprender el concepto de computación ubicua, ya que es la base del desarrollo de la tecnología móvil e inteligente. El concepto de computación ubicua fue postulado por Mark Weiser en 1991 (Paredes 2012), quien establece que la computación ubicua “es un mecanismo por el cual se facilita el uso de computadoras, haciendo que en nuestro entorno existan múltiples sistemas de computación, pero siendo éstos <<imperceptibles>> para el usuario, de esta forma, el entorno se transforma en un entorno <<inteligente>> capaz de responder a nuestros requerimientos”. Lo anterior lo observamos hoy en día en el uso de los dipositivos móviles donde hay diversas aplicaciones que se conectan a múltiples sistemas de computación, ya sea en servidores físicos o en la nube, de los cuales el usuario común no tiene conocimiento (y no es necesario que lo tenga), para intercambiar información en un entorno transparente e inteligente. Y es cuando “el usuario puede concentrarse en la tarea que desea realizar y no en la interacción con los sistemas informáticos" (Barro y Bugarín, 2002, p. 377). Según Paredes (2012), la computación ubicua se fundamenta en cuatro paradigmas, mismos que se exponen a continuación: La descentralización: Es la etapa siguiente a la centralización del procesamiento en las computadoras centrales llamadas mainframes. En la era de la computadora personal, comúnmente llamada PC, se establece la arquitectura cliente-servidor, y es en esta era donde se detecta la necesidad de la sincronización para mantener los datos actualizados. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 7 La diversificación: Es el paradigma que consiste en ofrecer el mismo servicio, pero adaptado a diferentes dispositivos, sin depender del entorno y dispositivos con funcinalidades particulares. La conectividad: Para el logro de este paradigma, el cual consiste en darle a un dispositivo la capacidad de conectarse de forma autónoma, fue necesaria la definición de estándares y protocolos que permitieran una conectividad sin límites, en la que cualquier tipo de software se pudiera ejecutar sobre cualquier plataforma y red. Ejemplos de estos estándares y protocolos son: • WAP (por sus siglas en inglés, Wireless Access Protocol, Protocolo de Acceso Inalámbrico). • UMTS (por sus siglas en inglés, Universal Mobile Telecommunications System, Sistema Universal de Comunicaciones Móviles). • BlueTooth (protocolo de comunicación para redes inalámbricas mediante radiofrecuencia). La simplicidad: Este paradigma se caracteriza por proporcionar al usuario interfaces intuitivas, sencillas y funcionales, aunado a la rapidez en el acceso a los datos a través de diseños vanguardistas que combinan el software y el hardware. De acuerdo con lo anterior y con la evolución de los dispositivos móviles, lo que se espera en el futuro es conectividad en tiempo real 24 horas 7 días a la semana, el establecimiento de precios y planes de datos asequibles, mejora en la infraestructura de las comunicaciones e internet, acceso a todo tipo de sitios e información desde la plataforma de la nube y, por supuesto, que lo anterior detone en el desarrollo de aplicaciones para dispositivos móviles. La tecnología a considerar en este curso es J2ME y Android, puesto que según las tendencias del mercado son las más populares, accesibles e intuitivas en el desarrollo de aplicaciones para dispositivos móviles. J2ME Java es un lenguaje orientado a objetos que surge en 1995 (Oracle, 2014b), que poco a poco se ha ganado el lugar que tiene hoy en día en el desarrollo de software. Comenzó con los applets (pequeños programas que se descargan y se ejecutan a demanda), los cuales funcionaban en un entorno de internet lento y con un modelo de seguridad ambivalente todo/nada restrictivo. Después surgieron los servlets, derivados de la clase Servlet, que son programas que amplían las capacidades de un servidor. Debido a que el lenguaje se expande del lado del servidor, el lenguaje Java se adjudica el nombre de Java 2 Platform Enterprise Edition (J2EE ), lo cual se conoce como la primera revolución del lenguaje. La segunda revolución es la explosión de la programación para dispositivos móviles. Para esto se estableció la plataforma Java 2 Plataform Micro Edition (J2ME), que se ha cambiado a Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 8 JME. Por cuestiones prácticas, en la presente unidad y en las subsiguientes se hará referencia a esta plataforma mediante el término J2ME. J2ME tiene dos ventajas competitivas: • El código se puede ejecutar en diversos modelos de dispositivos móviles, sin cambios. • Tiene características de seguridad importantes para el código descargable. Como explica Li y Kudsen (2005), J2ME se divide en configuraciones, perfiles y APIs (por sus siglas en inglés, Application Programming Interface, que es el conjunto de subrutinas, funciones, procedimientos y métodos, en la programación orientada a objetos), que proporcionan información acerca de las diferentes familias de dispositivos. Configuraciones. Una configuración está diseñada para un tipo específico de dispositivo basado en las limitaciones de potencia del procesador y la memoria, la configuración especifica una máquina virtual, JVM ( porsus siglas en inglés, Java Virtual Machine), una API de J2SE, y APIs que puedan ser necesarias. Los fabricantes de los dispositivos se encargan de incluir una configuración específica para sus dispositivos. Perfiles. Los perfiles son más específicos que las configuraciones. Un perfil se basa en una configuración y proporciona APIs adicionales tales como la interfaz de usuario, el almacenamiento persistente y todo lo que es necesario para desarrollar aplicaciones para el dispositivo. Revisa los perfiles y configuraciones de J2ME en la siguiente tabla. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 9 Perfiles y configuraciones de J2ME (Li y Kudsen, 2005; p. 218) APIs. Las APIs opcionales definen funcionalidad adicional específica que puede ser incluida en una configuración especial (o perfil). La colección en su totalidad (la configuración, el perfil y las APIs) se implementa en el dispositivo. En 1999 la versión del JDK 1.1 fue sustituida por la plataforma Java 2, y también surgió la J2ME para reemplazar las plataformas reducidas basadas en el JDK 1.1 y crear una sola solución basada en Java 2 (Oracle, 2014b). En el año 2000 nació la primera versión de una configuración, el Connected Limited Device Configuration (J2ME CLDC 1.0). Durante ese mismo año se creó la primera implementación de un perfil, el Mobile Information Device Profile (MIDP), el cual fue aceptado por la comunidad de desarrolladores de aplicaciones para dispositivos móviles. Actualmente la versión de J2SE es 8u31, misma que puedes descargar del sitio de Oracle (2023a). La siguiente tecnología es mas reciente pero no menos poderosa. A diferencia de J2ME, Android divide sus aplicaciones en componentes básicos, permitiendo la modularidad. También maneja Intents para el llamado de aplicaciones externas, usa interfaces en código http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 10 fuente y XML1, tiene facilidad para el acceso de los recursos del dispositivo con la API del SDK y la capacidad de declarar y usar recursos externos. Es por ello que se hace necesario revisar este entorno de desarrollo como alternativa al desarrollo de aplicaciones para dispositivos móviles. Android Android es un un producto de Google y nace como un sistema operativo y entorno de desarrollo para dispositivos móviles. Por su parte, Google surgió como un proyecto universitario de Page y Brin, según la historia (Google Empresa, s/f), entre 1995 y 1996 en la Universidad de Stanford. El nombre del proyecto –un motor de búsqueda- fue BackRub, y en 1997 se cambió por Google. Un año después se pone en línea este famoso buscador. Integrando diversos elementos, Google evoluciona, y en el año 2000 se presenta Adwords – un sistema de publicidad en línea y la barra Google, abarcando nuevos mercados entre 2004 y 2007: Google maps es un servicio gratuito de aplicaciones de mapas en la web; Gmail es un servicio gratuito de correo electrónico para POP3 e IMAP. Search Appliance a nivel empresarial es un sistema de búsqueda universal que permite a las organizaciones incorporar información procedente de una variedad de fuentes externas e internas. Y SMS es un servicio de mensajería instantánea a a través de la aplicación de calendario. Con la enorme influencia de Google en la web de sus aplicaciones, el paso lógico era aprovechar la infraestructura e incursionar en el lanzamiento de un dispositivo móvil, el cual fue el HTC Dream y/o Google Phone a finales del 2007, con Android incluido, como una plataforma de código abierto diseñado para dispositivos móviles, que consiste en un paquete de software compuesto por: • Sistema operativo Linux, sistema operativo de libre distribucion. • Capa de librerías de bajo nivel en C y C++, para programación específica del dispositivo. • Framework de desarrollo de aplicaciones; es decir, un entorno para el desarrollo de las aplicaciones. • Suite de aplicaciones iniciales, reloj, calendario, correo, etcétera. Tambien se creó la Open Handset Alliance, compuesto por las siguientes empresas: Google, Motorola, HTC, LG, Samsung, Tmobile, China mobile, Intel, Nvidia, entre muchas más, con el objetivo de acelerar la innovación en los consumidores móviles y ofrecer una experiencia móvil más completa con menos costo. Android revoluciona el mercado al ser una plataforma verdaderamente abierta que separa el hardware del software que se ejecuta en él, permitiendo un mayor número de dispositivos 1 XML es un subconjunto de SGML(Standar Generalised Mark-up Language), simplificado y adaptado a Internet Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 11 para ejecutar las mismas aplicaciones y crear un ecosistema mucho más rico para los desarrolladores y consumidores. El SDK (por su siglas en inglés, Software Development Kit) de Android es un conjunto de herramientas de desarrollo de software para el desarrollo de aplicaciones, las cuales se divividen en: Herramientas de dispositivo virtual El manejador AVD (por sus siglas en inglés, Android Virtual Device) proporciona una interfaz gráfica de usuario en la que pueden crear y gestionar dispositivos virtuales Android que se ejecutan en el emulador. Emulador Android, basado en QUEMU2, que se usa para depurar y probar las aplicaciones en tiempo de ejecución. Mksdcard, ayuda a crear una imagen de disco que se usa con el emulador para simular la presencia de un manejador de la tarjeta de almacenamiento externo (como una tarjeta SD). Herramientas de Desarrollo Android. Permite el manejo de los dispositivos virtuales, proyectos y demás componentes del SDK. Vista de jerarquías. Proporciona una representación visual del diseño y una vista ampliada de la pantalla . Lint. Es una herramienta de análisis de código estático que verifica que los archivos fuentes del proyecto Android no tengan errores para permitir mejoras de optimización. SDK Manager. Permite manejar los paquetes de SDK, tales como las plataformas y los sistemas. Sqlite3. Permite accesar a los archivos de SQlite3 creados y usados por las aplicaciones Android. Herramientas de depuración adb (por sus siglas en inglés, Android Debug Bridge) es un conector de depuración que permite comunicarse con una instancia del emulador o con el dispositivo Android. ddms (por sus siglas en inglés, Dalvik Debug Monitor Server) permite depurar las aplicaciones. Traceview proporciona una vista gráfica de la ejecución de los logs guardados por la aplicación. 2 Es un emulador de máquina de origen genérico, abierto y virtualizador 3 Es un sistema de gestión de bases de datos relacional relativamente pequeño Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 12 Herramientas de construcción JOBB permite encriptar y desencriptar archivos APK en OBB (por sus siglas en inglés, Opaque Binary Blob). Archivos APK ProGuard empaqueta y optimiza el código mediante la eliminación de código no usuado. Zipaling optimiza los archivos .apk. Herramientas de imagen Draw 9-patch permite crear un gráfico NinePatch4 usando un editor WYSIWYG5. Etc1tool, utilidad de línea de comando que codifica imágenes .pgn a la norma de comprensión etc1 y decodificar de forma inversa. Tracer de OpenGL ES, permite capturar comandos OpenGL ES6 y da seguimiento cuadro por cuadro de los gráficos. Y como herramientas de la plataforma se tiene a: • adb (vista en herramientasde depuración). • aid (por sus siglas en inglés, Android Interface Definition, definición de la interface Android). • aapt (por sus siglas en inglés, Android Asset Packaging Tool), lista y remueve archivos APK. • dexdump es un desemblador de aplicaciones. • dx son archivos ejecutables de la aplicación. Las anteriores herramientas son llamadas por las herramientas de construcción o el ADT (por sus siglas en inglés, Android Development Tools, herramientas de desarrollo de Android), no se accesan directamente por el programador. Se incluyen unas herramientas de intérpretes de comandos que pueden ser accesados a través de adb: • bmgr, para interactuar con el manejador de respaldos. • logcat, proporciona un mecanismo para colectar y visualizar las salidas de la depuración. Como observarás que todas ellas son necesarias para empezar a desarrollar para Android, a partir del año 2013 aparece el Android Studio, un entorno de desarrollo integrado, conocido como IDE (por sus siglas en inglés, Integrated Development Environment), en donde se pueden encontrar todas la herramientas. 4 La clase Nine Patch permite dibujar un bitmap en 9 o más secciones. 5 Acrónimo de What You See Is What You Get, ‘lo que ves es lo que obtienes’. 6 Es una variante simplificada de la API gráfica OpenGL diseñada para dispositivos integrados. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 13 Las diversas versiones de Android que han surgido desde que fue desarrollado son las siguientes: Versiones Características Android Beta Etapa de producción en proceso por la empresa Android Inc. Android 1.0 Apple Pie Navegador Web, soporte para mensajes de texto SMS y MMS, discador para llamadas, wifi y bluetooth. Android 1.1 Banana Bread Soporte para diseños de sistemas, guardado de archivos adjuntos en los mensajes, y reseñas de negocios en los mapas. Android 1.5 Cupcake Teclado virtual en la pantalla y la inserción de widgets7. Android 1.6 Donut Cuadro de búsqueda mejorado, cámara y aplicación de galería, y renovada Android Market. Android 2.0/2.1 Eclair Aplicaciones organizadas y los widgets en varias pantallas y dentro de carpetas, fondos de pantalla animados responden al tacto. Android 2.2.x Froyo Dictado por voz que permite ingresar texto y las acciones de voz que controlan el teléfono. Android 2.3.x Gingerbread Nuevos sensores para juegos, para tocar, presionar, inclinar. Android 3.x Honeycomb Optimizado para tablets. Android 4.0.x Ice Cream Sandwich Nuevo, refinado, sencillo, e inteligente diseño. Android 4.1 Jelly Bean. Gráficos mas definidos y con Google Now, se consigue la información que se necesita en el momento justo. Android 4.2 Jelly Bean (Gummy Bear) Soporte para múltiples usuarios, mejora de la barra de notificiaciones con Quick Settings. Android 4.3 Jelly Bean Perfiles restringidos para tabletas, completado automático, 7 Pequeña aplicación o programa Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 14 compatibilidad idiomas hebreo y árabe. Android 4.4 KitKat Portadas de álbum o película a pantalla completa, modo envolvente, mayor rendimiento del sistema, Quickoffice. Android 5.0 Lollipop Notificaciones en la pantalla de bloqueo, API nueva para la cámara, OpenGL ES 3.1, nuevo diseño de interfaz, versión lanzada en noviembre del 2014. Android (2014) Las dos tecnologías más importantes para el desarrollo de aplicaciones móviles son Android y J2ME. El recorrido por su historia permite analizar la evolución de estas tecnologías. Como expertos en el desarrollo de software, es posible ampliar el panorama en relación con los desarrollos de aplicaciones móviles. En el siguiente tema se abordará la estructura de las aplicaciones móviles mediante las tecnologías mencionadas. 1.3. Estructura de una aplicación para tecnología móvil La estructura de una aplicación móvil es la arquitectura de un entorno de desarrollo, y se refiere a los elementos que la conforman (Gálvez y Ortega, p. 5); es en sí, cómo está conformado el proyecto de la aplicación según el entorno de desarrollo que se utilice. En la asignatura Fundamentos de programación identificaste cómo está conformado un programa. Ahora bien, una aplicación es finalmente también un programa, el cual vamos a identificar cómo está conformado en J2ME y en Android, y cuáles son las estructuras que se generan en sus respectivos proyectos según el entorno de desarrollo. Para consultar algunas nociones sobre la plataforma J2ME y Android, revisa el documento U1. Nociones de J2ME y Android respectivamente, en la carpeta Materiales para el desarrollo de la Unidad 1. Con base en lo anterior, en los siguientes temas se revisará la conformación de una aplicación y la estructura generada de una aplicación para J2ME y en Android. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 15 1.3.1. J2ME Las aplicaciones que se programan en el perfil J2ME y la configuracion CLDC se llaman midlets, por remembranza de los applets. La aplicación está conformada con los siguientes elementos descritos en la tabla. // Incluye la superclase de MIDlet import javax.microedition.midlet.*; // Incluye las librerías de interfaz de usuario de MIDP import javax.microedition.lcdui.*; /* * 1. Todos los MIDlets deben extender la clase MIDlet. * 2. CommandListener es el interfaz de gestión de envento del API de alto nivel de MIDP. */ public class HelloWorld extends MIDlet implements CommandListener{ // Componentes de UI8 del MIDlet private Display display; private TextBox mainScreen = null; private Command exit = new Command("exit", Command.EXIT, 2); // Constructor sin parámetros public HelloWorld() { display = Display.getDisplay(this); mainScreen = new TextBox("Text Box", "Hello World CR", 512,0); mainScreen.addCommand(exit); mainScreen.setCommandListener(this); } // Implementación del método startApp() public void startApp() { display.setCurrent(mainScreen); } // Implementación del método pauseApp() public void pauseApp() { } 8 UI Interfaz del usuario Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 16 // Implementación del método destroyApp() public void destroyApp(boolean unconditional) { } /* * Implementa del método correspondiente del interfaz CommandListener */ public void commandAction(Command c, Displayable s) { if (c == exit) { destroyApp(false); notifyDestroyed(); } } } Estructura de una aplicación en J2ME Como se puede observar, se manejan los conceptos de clases, objetos y constructores tal como un programa Java; recuerda los conceptos revisados en las asignaturas Programación orientada a objetos I, II y III. Los nuevos métodos de la tecnología J2ME a conocer están documentados en: http://docs.oracle.com/javame/config/cldc/ref- impl/midp2.0/jsr118/javax/microedition/midlet/MIDlet.html, a continuación se revisará su uso: startApp(): protected abstract void startApp () Es un método abstracto de la clase MIDlet, y por esa razón tiene que ser implementado en el Midlet. El hecho de que sea un método protegido (protected) indica que sólo puede ser utilizado en el paquete javax.microedition.midlet.MIDlet. Y puede ser redefinido como público (public) para que pueda ser llamado desde otro sitio. Si no hay ningún error (excepción), comenzará la ejecucióndel MIDlet. pauseApp(): pauseApp()protected abstract void pauseApp () Debido a que es una clase abstracta, se puede redefinir, y la implementación depende de la aplicación en sÍ, y lo que normalmente se hace es guardar el estado actual y liberar cualquier recurso que estuviera usando; la aplicación pasa a un estado seguro, a partir del cual se puede reanudar la ejecución. http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/javax/microedition/midlet/MIDlet.html http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/javax/microedition/midlet/MIDlet.html Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 17 destroyApp(): protected abstract void destroyApp (boolean unconditional); Cuando la aplicación ya cumplió con lo solicitado, o simplemente se desea cerrarla, el método le dice al MIDlet que termine la aplicación para entrar en el estado de Destruido; y en respuesta a esto la aplicación tiene que liberar todos los recursos usados y guardar los datos persistentes tales como las preferencicias o estados. Los métodos se usan para notificar que el Midlet ha pasado al estado pausado, destruido o activo, respectivamente. public void notiyPaused (), public void notiyDestroyed (), public void resumeRequest (): La estructura que se genera al crear el proyecto de la aplicación en J2ME Wireless Toolkit se puede observar en la imagen siguiente : Estructura de una aplicación en en J2ME Wireless Toolkit (Gálvez, 2010; p.10) El directorio apps es el directorio principal que contiene el directorio del proyecto; a su vez, contiene una serie de subdirectorios tales como: • src, contiene los archivos fuentes java. • res, contiene los recursos del Midlet. • lib, contiene librerías adicionales en formato JAR o ZIP • bin, contiene los archivos JAD y JAR • clases, contiene las clases del proyecto • tmplib, contiene las librerías temporales • tmpclasses, contiene las clases temporales Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 18 Para consultar algunas nociones sobre J2ME, revisa el documento U1. Nociones básicas de J2ME, que se ubica en la carpeta Materiales de desarrollo de la Unidad 1. Las acciones que se hacen con el MIDlet se explicarán en el tema 1.3.3. Midlets. Pero, ¿cuál es la estructura del entorno de desarrollo de Android? A continuación se expondrá este tema. 1.3.2. Android A continuación se revisa la estructura de una aplicación en Android. package com.example.helloworld; Paquete de helloworld import android.os.Bundle; Importación de las librerías Bundle, Activity y Menu. import android.app.Activity; import android.view.Menu; public class HelloWorldActivity extends Activity Clase principal helloWorldActivity que se extiende de la clase Activity. { @Override protected void onCreate(Bundle savedInstanceState) Método onCreate() cuyo parámetro contiene el estado anterior de la actividad. {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) Método onCreateOptions() recibe como parámetro un objeto de tipo menú. { // crea el menú; esto agrega elementos a la barra de acción si está presente getMenuInflater().inflate(R.menu.main, menu); return true; } Estructura de aplicación en Android (Mkyong, 2011) Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 19 Como es posible observar, la programación es orientada a objetos, con nuevas clases por conocer y aplicar. Ahora bien, la estructuctura que se genera automáticamente para un proyecto de Android, en la aplicación Netbeans, es la siguiente (Gargenta, 2011): Estructura del proyecto Android en NetBeans (Gargenta, 2011) El directorio /src/ contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares, etcétera. Inicialmente, Eclipse crea el código básico de la pantalla (Activity) principal de la aplicación, que normalmente se llama MainActivity, y siempre bajo la estructura del paquete java definido, tal como se observa en la imagen siguiente. Directorio src y MainActivity obtenido de http://www.sgoliver.net/blog/estructura-de-un-proyecto-android/ Directorio res obtenido de http://www.sgoliver.net/blog/estructura-de-un-proyecto-android/ http://www.sgoliver.net/blog/estructura-de-un-proyecto-android/ http://www.sgoliver.net/blog/wp-content/uploads/2010/08/carpeta-src.png Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 20 Contiene todos los archivos de recursos necesarios para el proyecto: imágenes, videos, cadenas de texto, etcétera. Los recursos se distribuyen entre las siguientes subcarpetas: Carpeta Descripción /res/drawable/ Contiene las imágenes y otros elementos gráficos usados en la aplicación. Puede contener subcarpetas para definir diferentes recursos, dependiendo de la resolución y densidad de la pantalla del dispositivo: • /drawable-ldpi (densidad baja) • /drawable-mdpi (densidad media) • /drawable-hdpi (densidad alta) • /drawable-xhdpi (densidad muy alta) /res/layout/ Contiene los archivos de definición XML de las diferentes pantallas de la interfaz gráfica. De acuerdo a la orientación del dispositivo, se definen distintos layouts en dos subcarpetas: • /layout (vertical) • /layout-land (horizontal) /res/anim//res/animator/ Contiene la definición de las animaciones utilizadas por la aplicación. /res/color/ Contiene archivos XML de definición de colores según estado. /res/menu/ Contiene la definición XML de los menús de la aplicación. /res/xml/ Contiene otros archivos XML de datos utilizados por la aplicación. /res/raw/ Contiene recursos adicionales, normalmente en formato distinto a XML. /res/values/ Contiene otros archivos XML de recursos de la aplicación, tales como cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), arrays de valores (arrays.xml), etc. Directorio res (Sgoliver, 2014) Directorio /gen/ Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 21 Contiene elementos de código generados automáticamente al compilar el proyecto. Estos elementos no deben modificarse manualmente. Incluso la cabecera de estos elementos incluye una leyenda al respecto: /* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */ Directorio gen (Sgoliver, 2010) Directorio /assets/ Contiene los archivos auxiliares necesarios para la aplicación, tales como las texturas, configuración y los datos del juego (que se incluyen en el paquete). Directorio /bin/ Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 22 Contiene los elementos compilados de la aplicación y otros archivos auxiliares. El archivo con extensión .apk es el ejecutable de la aplicación que se instala en el dispositivo, el cual es el archivo Android-hola-usuario.apk, como se observa en la imagen siguiente: Directorio bin (Sgoliver, 2010) http://www.sgoliver.net/blog/?attachment_id=3392 Directorio /libs/ Contiene las librerías auxiliares, normalmente en formato .jar, que se utilizan en la aplicación Android. Tal como se observa en la imagen, el archivoen el directorio libs, Android-support-v4.jar. Directorio libs (Sgoliver, 2010) http://www.sgoliver.net/blog/?attachment_id=3394 Archivo AndroidManifest.xml Contiene la definición en XML de los aspectos principales de la aplicación, como por ejemplo, su identificación (nombre, versión, icono, …), sus componentes (pantallas, mensajes, …), las librerías auxiliares utilizadas o los permisos necesarios para su ejecución. Ya se explicó la estructura de una aplicación y de un proyecto en Android, donde se observa que el tipo de programación es orientada a objetos, en donde se trabaja con clases, objetos y se realizan las actividades normales de instanciación, redefinición de métodos y la estructura del proyecto con la serie de directorios y el contenido que se debe observar. Conociendo ya la estructura de una aplicación en J2ME y en Android, se tiene que es posible que una aplicación de J2ME (MIDlets) pueda usarse en un ambiente Android, mediante el uso del plugin de Android en el entorno de desarrollo de J2ME, por lo que es necesario conocer los estados y las acciones que se pueden hacer con un MIDlet, considerando que la estructura se abordó en el tema 3.1. 1.3.3. Midlets http://www.sgoliver.net/blog/?attachment_id=3392 http://www.sgoliver.net/blog/?attachment_id=3394 Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 23 “Los MIDlets son aplicaciones creadas usando la especificación MIDP (Mobile Information Device Profile). Están diseñados para ser ejecutados, como ya sabemos, en dispositivos con poca capacidad gráfica, de cómputo y de memoria” (Gálvez y Ortega, 2003, p.31). En estos dispositivos se dispone de líneas de comandos para poder ejecutar las aplicaciones que se deseen. Los MIDlets contienen un software que los ejecuta y gestiona los recursos que éstos utilizan. El software que utilizan los MIDlets se llama gestor de aplicaciones o AMS (Application Management System), y su función es gestionar los MIDlets. El gestor de aplicaciones se encuentra en el dispositivo, lo cual posibilita la ejecución, pausa o destrucción de las aplicaciones J2ME. El AMS tiene las siguientes funciones: • Gestionar el ciclo de vida de los MIDlets. • Controlar los estados por los que pasa el MIDlet mientras está en ejecución. La estructura del programa ya se revisó en el subtema 3.1. J2ME, y en el presente subtema se expondrán las acciones que se pueden realizar mediante un MIDlet. Un Midlet tiene un comportamiento que se traduce en los diferentes estados en los que puede estar durante su ciclo de vida; estos estados se exponen en la imagen a continuación: Ciclo de vida del MIDlet (Gargenta, 2011, p. 29) Estado cargado: Para que una aplicación pueda ser usada, debe estar cargada en el dispositivo móvil. Estado activo: Sucede después de inciarse el MIDlet con el método New() que genera una instancia del mismo. Es posible que en cualquier momento pueda pasar a un estado pausado, por ejemplo, debido que se recibe una llamada al dispositivo y éste decide que necesita los recursos (pantalla y teclado) para tratar esa llamada entrante. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 24 Cuando el estado es pausado, es posible regresar al estado activo llamando a la función startApp(); por supuesto que se reanuda en el estado que se quedó antes de la pausa, por lo que resulta necesario hacer la diferenciación entre la llamada de primera vez del método y el llamado después de la pausa. El método destroyApp() puede ser llamado desde el estado activo, pausado o cargado. Puede suceder que el MIDlet pida que no quiere entrar en el estado destruido, por lo que lanza una excepción MIDletStateChangeException. La excepción es válida si el parámetro del método (boolean unconditional) es falso; si es verdadero, el Midlet terminará su ejecución y su destrucción es inevitable. Al principio del subtema se mencionaron las funciones del AMS. A continuación se revisarán a detalle estas funciones desde la posición del usuario del dispositivo móvil; todo comienza cuando el usuario requiere de un Midlet, ya sea como entretenimiento o para actividades profesionales, entonces busca en cualquiera de los portales, como Play Store o Galaxy App, la aplicación deseada. Encontrando la aplicación requerida, el AMS del dispositivo móvil realiza lo siguiente (Gálvez y Ortega, 2003; p.32): La instalación 1. Si el AMS descarga primero el JAD, el MIDlet debe tener exactamente la misma URL especificada en el descriptor del archivo JAD. 2. Si el servidor responde a la petición del MIDlet con un código 401 (Unauthorized) o un 407 (Proxy Authentication Required), el dispositivo debe enviar al servidor las correspondientes credenciales. 3. El MIDlet y las cabeceras recibidas deben ser validadas para verificar que el MIDlet descargado puede ser instalado en el dispositivo. El usuario debe ser notificado de los siguientes problemas durante la instalación: • Si no existe suficiente memoria para almacenar el MIDlet, el dispositivo debe retornar el código de estado (Status Code) 901. • Si el JAR no está disponible en la URL del JAD, el dispositivo debe retornar el Código 907. • Si el JAR recibido no coincide con el descrito por el JAD, el dispositivo debe retornar el código 904. • Si el archivo manifesto no puede ser extraído del JAR, o existe algún error al extraerlo, el dispositivo debe retornar el código 907. • Si los atributos MIDlet-Name, MIDlet-Version y MIDlet Vendor del archivo JAD no coinciden con los extraidos del archivo manifest del JAR, el dispositivo debe retornar el código 905. • Si la aplicación falla en la autenticación, el dispositivo debe retornar el código 909. • Si falla por otro motivo distinto del anterior, debe retornar el código 911. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 25 • Si los servicios de conexión se pierden durante la instalación, se debe retornar el código 903 si es posible. La instalación se da por completa cuando el MIDlet esté disponible en el dispositivo, y no haya ocurrido un error irrecuperable. Actualización de MIDlets El MIDlet ya está cargado en el dispositivo, y después de un tiempo de uso, resulta que hay una nueva versión del MIDlet. El dispositivo debe ser capaz de informar al usuario de la actualización y permitir que el usuario decida si desea actualizar o no el MIDlet; si accede a la actualización, si es afirmativo, considerar que un MIDlet sin firma no debe reemplazar a otro que sí la tenga. Ejecución de MIDlets Cuando el usuario hace uso de la aplicación, ejecuta el MIDlet que, a su vez, invoca a las clases CLDC y MIDP requeridas por la especificación MIDP. La interfaz del usuario debe permitir al usuario ejecutar el MIDlet seleccionado. Eliminación de MIDlets Suele suceder que el usuario instala a diestra y siniestra MIDlets, y muchos, por supuesto, consumen recursos, y es cuando el dispositivo debe permitir al usuario eliminar MIDlets no necesarios. Antes de eliminar una aplicación, el usuario debe de confirmar la orden. El dispositivo debe de notificar alguna circunstancia durante la eliminación que requiera atención, como que el MIDlet a borrar podría contener a otros MIDlets que afectarían el funcionamiento del dispositivo. Como te habrás dado cuenta, hemos abordado dos estructuras básicas, la del Android y la de J2ME, así como las acciones que son posibles realizar desde la posición del usuario y el AMS con los MIDlets. Veamos ahora con qué herramientas se cuenta para el desarrollo de las aplicaciones en el siguientetema. 1. 4. Herramientas de desarrollo En el vertiginoso mundo de la programación, herramientas más herramientas menos, es posible encontrar un sinnúmero en el mercado; sin embargo, depende de la facilidad de su uso o accesibilidad el que sobrevivan en la jungla digital, dependiendo de la compatibilidad con el sistema operativo. Las herramientas de desarrollo son aquellas que permiten programar, compilar y ejecutar las aplicaciones para los dispositivos móviles, proporcionando un entorno de desarrollo y características propias para ciertos dispositivos. Por ejemplo, existen las siguientes para la plataforma Java : • Java 2 SDK Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 26 • Java 2 Micro Edition. • Netbeans Mismas que se abordarán a continuación. 1.4.1. Plataformas: Eclipse, Netbeans, J2ME Las plataformas de desarrollo proporcionan un entorno para el desarrollo de aplicaciones para los dispositivos móviles. La selección de cualquiera de ellos dependerá del programador y lo cómodo que se sienta con la selección, así como el objetivo de las aplicaciones móviles que se desarrollarán, las especificaciones del proyecto, perfil de usuarios, etcétera. A continuación se explicará cada uno de los entornos de desarrollo: Eclipse. Es un entorno de desarrollo para Java y tiene un plugin para Android para la programación de las aplicaciones. El IDE no necesita instalación, se baja del sitio oficial de Eclipse y se descomprime. Es necesario también descargar el SDK de Android, que se encuentra en el sitio de desarrolladores de Android; descomprime una vez descargado, teniendo presente la ruta. Se requiere el plugin de Android para Eclipse; en el menú Ayuda/Help, en Actualización de software/Software updates, se encuentra el plugin según la versión del IDE. El entorno de desarrollo de Eclipse se muestra a continuación: Entorno de desarrollo de Eclipse en Android El entorno de desarrollo es sencillo y tiene los siguientes elementos: http://www.eclipse.org/downloads/ https://developer.android.com/sdk/installing/index.html?pkg=tools. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 27 1.-Barras de menú 2.-Barra de iconos o accesos rápidos 3.-Ventana de despliegue de directorios 4.-Ventana de edición de programas 5.-Ventana de salida Este ambiente de desarrollo permite desarrollar aplicaciones tanto en J2ME y en Android, utilizando sus respectivos plugin9. Veamos en la imagen siguiente la integración del plugin de J2ME con Eclipse. Entorno de desarrollo Eclipse con J2ME Como se observa, el desarrollo de aplicaciones con Eclipse es muy versátil, con un ambiente amigable y totalmente gráfico. Netbeans. Es un entorno de desarrollo de aplicaciones JAVA con módulos para desarrollo de aplicaciones para dispositivos móviles. Es posible bajar el IDE en la siguiente dirección: htpp://www.netbeans.org; el IDE contiene el complemento para aplicaciones móviles Java 9 Complemento de una aplicación que se relaciona con otra para aportarle una función nueva y generalmente muy específica Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 28 ME, durante la instalación es posible selecionarlo o no, tal como se muestra en la imagen siguiente. Ventana de de instalación con el componente Java ME incluido La ventana del entono de desarrollo de Netbeans es la siguiente: Entorno de desarrollo Netbeans con J2ME 1.-Barra de menú Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 29 2.-Barra de iconos 3.-Ventana de estructura del proyecto 4.-Ventana de trabajo, muestra el código del programa 5.-Ventana de miembros del programa, muestra los métodos de la clase También es posible programar aplicaciones para Android con su correspondiente plugin, el cual puedes encontrar en la siguiente liga: http://plugins.netbeans.org/plugin/19545/nbandroid Entorno de desarrollo de Netbeans para Android Como se puede observar, Netbeans es un poderoso IDE que permite el desarrollo de aplicaciones para J2ME y Android. J2ME. Es un paquete completo de desarrollo en conjunto con la herramienta KToolbar y el perfil MIDP. Con la herramienta KToolbar se puede compilar código sin necesidad de interactuar directamente con CLDC, al mismo tiempo que se dispone de un emulador de terminal telefónico y es posible probar el funcionamiento de la aplicación sobre el dispositivo móvil. La dirección de descarga es http://java.sun.com/javame/downloads/index.jsp. La versión más reciente es la 2.5; en la imagen siguiente es posible observar el entorno de desarrollo. http://plugins.netbeans.org/plugin/19545/nbandroid http://java.sun.com/javame/downloads/index.jsp Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 30 Entorno de desarrollo Toolkit de J2ME, http://www.it.uc3m.es/~celeste/docencia/j2me/tutoriales/midp1_0//PracticaIntroJ2ME/imag/ktoolbar.bmp El J2ME Wireless Toolkit es un ambiente de desarrollo exclusivo para J2ME, a diferencia de Eclipse y Netbeans, que pueden ser un entorno de desarrollo tanto para J2ME como para Android y programas JAVA. Considerando que los tres entornos de programación utilizan el perfil MIDP, se recuerda que las aplicaciones desarrolladas con este perfil son para dispositivos móviles tales como teléfonos y tabletas. Se ha revisado ya cuál es la estructura de las aplicaciones y las herramientas de desarrollo con las que se cuentan. Es importante que, al desarrollar las aplicaciones, se trabaje con emuladores; es decir, con programas mediante los cuales sea posible comprobar que la aplicación desarrollada funcione adecuadamente antes de ponerla a disposición de los usuarios. En el siguiente subtema se explicará el uso de los emuladores. 1.4.2. Emuladores Según la Real Academia Española (2014), ‘emular’ significa imitar las acciones de otro, procurando igualarlas e incluso excederlas. Aplicado el término en programación móvil, es posible afirmar que los emuladores son programas que imitan la función del equipo móvil, permitiendo aceptar los mismos datos, ejecutar los mismos programas y conseguir los mismos resultados que en un dispositivo móvil. Generalmente en los ambientes de desarrollo se integran emuladores para probar la aplicación, mientras que hay otros emuladores que se pueden usar de acuerdo a la preferencia del programador. Normalmente los requerimientos técnicos de estos emuladores ajenos al entorno de desarrollo varían, pero, en promedio, se puede decir que los requisitos técnicos mínimos son los siguientes: • 1 Gb de RAM http://www.it.uc3m.es/~celeste/docencia/j2me/tutoriales/midp1_0/PracticaIntroJ2ME/imag/ktoolbar.bmp Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 31 • 20 Gb libres en el disco duro • 1.2 Ghz en el procesador Como ejemplos de emuladores tanto para Android y J2ME se presentan los siguientes: BlueStacks Este emulador reproduce aplicaciones y juegos Android en pantallas completas, permite usar las que tiene instaladas en el dispositivo a través de Bluestacks Cloud Conect, y dispone de 10 aplicaciones ya instaladas. Su uso es medianamente fácil, por lo que es recomendable para interesados en este tipo de programas cuyo fin fundamental sea probar juegos populares de teléfonos inteligentes (smartphones). La imagen siguiente representa el entorno del emulador.Entorno de emulador BlueStacks http://www.programasgratisfull.com/wp-content/uploads/2014/11/bluestack1.jpg Youwave Este emulador se puede ejecutar en Windows XP, Vista 7 y 8. Envía y recibe imágenes desde las unidades usuales de memoria y posee simuladores de tarjetas SD. El inconveniente podría ser que no hay versiones gratuitas. La imagen siguiente muestra el entorno del emulador. http://www.programasgratisfull.com/wp-content/uploads/2014/11/bluestack1.jpg Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 32 Entorno del emulador YouWave http://www.poderpda.com/wp-content/uploads/2011/10/YouWave-Android.png Android SDK Este emulador fue lanzado por Google, y su ventaja es que emula el sistema operativo de un smartphone con un poco más de precisión. Dispone de gran cantidad de configuraciones, permite probarlas previamente y comprobar su funcionamiento, además de incluir un SDK Manager para la descarga de paquetes modulares. En la figura siguiente se puede observar el emulador. Emulador Android SDK. http://oi38.tinypic.com/20i8j1z.jpg http://www.poderpda.com/wp-content/uploads/2011/10/YouWave-Android.png Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 33 Para conocer el proceso de instalacion del Android JDK, revisar el video Instalación del Android SDK, en la carpeta Materiales para el desarrollo de la Unidad 1. Android para PC Éste es un excelente sistema operativo de código abierto, una excelente opción para instalar en netbooks en resolución nativa, pues soporta la aceleración del hardware OpenGl, para AMD Radeon y chipsets de Intel. Android para PC es el mejor emulador de Android; no obstante, una desventaja pudiera ser la instalación un poco complicada en la configuración, pero nada imposible. El contexto del emulador se presenta en la siguiente imagen. Emulador Android para PC. https://www.youtube.com/watch?v=r-mRYye_4qg minuto.4:49 Para que observes el uso del emulador de Android, revisa el documento U1. Emulador de Android, en los Materiales de desarrollo de la Unidad 1. Los emuladores para J2ME, son: 1. Wireless Toolkit incluye el emulador de dispositivos móviles; la imagen es la siguiente: https://www.youtube.com/watch?v=r-mRYye_4qg Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 34 Emulador del Wireless Toolkit 2. MidpX es una herramienta de integración que permite a los usuarios a administrar el J2ME. En la figura siguiente se puede observar el emulador. Emulador Android SDK http://www.f1cd.ru/soft/screens/windows/mobile/emulator/m_midpx_102_3.jpg http://www.google.com.mx/url?sa=i&rct=j&q=&esrc=s&frm=1&source=images&cd=&cad=rja&uact=8&ved=0CAcQjRw&url=http://www.f1cd.ru/soft/windows/mobile/emulator/midpx_102_15/&ei=bf3dVMKyMZCZyQT0joL4Dg&bvm=bv.85970519,d.aWw&psig=AFQjCNE8m3J7mACGQfwCoxEclNxlPnproA&ust=1423920799929121 Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 35 3. KEmulator lite es un emulador completo que permite ejecutar aplicaciones en formato JAR con una interfaz de una larga lista de móviles de todas las marcas. Es la mejor vía para probar aplicaciones sin necesidad de abandonar la computadora y con la ventaja de poder solucionar cualquier error en cuestión de segundos. Emulador Kemulator http://i970.photobucket.com/albums/ae185/jlg390/kemulator.jpg 1.4.3. Importancia y creación de archivos JAR y JAD Es importante recalcar la importancia de los archivos JAR y JAD porque son los que contienen los archivos ejecutables y la descripción de tales archivos, respectivamente, y son éstos los que precisamente se instalan en el dispositivo móvil. Pero antes de abordarlos, hay un archivo manifiesto que describe el contenido del archivo JAR, el cual puede ser creado en cualquier editor de texto con la siguiente estructura: MIDlet-1: Inicio, inicio.png, Inicio: • MIDlet-Name: Inicio • MIDlet-Vendor: • MIDlet-Version: 1.2 • Microedition-Configuration: CLDC-1.0 • Microedition-Profile: MIDP-1.0 La creación del archivo manifiesto es opcional. http://www.google.com.mx/url?sa=i&rct=j&q=&esrc=s&frm=1&source=images&cd=&cad=rja&uact=8&ved=0CAcQjRw&url=http://www.identi.li/?topic%3D42156&ei=Jf7dVPPHMcOSyATv6YDgCQ&bvm=bv.85970519,d.aWw&psig=AFQjCNGC6361vLVu5kIkz2DQgasyuuTBlQ&ust=1423921050274891 Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 36 Ahora bien, ¿qué son los archivos JAR y JAD? Un archivo JAR (por sus siglas en inglés, Java ARchive) es aquel archivo que permite ejecutar aplicaciones escritas en el lenguaje Java (Gálvez y Ortega, 2003). El archivo JAD (por sus siglas en inglés, Java Application Descriptor) es aquel archivo que contiene la descripción del programa, tal como la contenida en el archivo manifiesto y otra información de complemento, tales como (Gálvez y Ortega, 2003): • MIDlet-Name • MIDlet-Vendor • MIDlet-Version • MIDlet-Description • MIDlet-Icon • MIDlet-Info-URL • MIDlet-Data-Size • MIDlet-Jar-Size • MIDlet-Jar-URL Los atributos ofrecen información sobre los MIDlets incluidos en el conjunto de programas (suite). Por ejemplo, se desarrolla una suite denominada Glucómetro, que permite al usuario registrar el nivel de glucosa y la presión arterial desde un dispositivo móvil. La suite contiene dos MIDlets: uno para registrar la información, y otro para consultar la información. Para desarrollar la clase se han usado métodos de utilidad, pertenecientes a la clase utilidades. En definitiva, las clases involucradas serían las siguientes (teniendo en cuenta que forman parte del paquete desarrollo.moviles): desarrollo.moviles.RegistraGlucosa desarrollo.moviles.ConsultaGlucosa desarrollo.moviles.Utilidades El manifiesto para esta suite sería el siguiente: MIDlet-Name: Glucometro MIDlet-Vendor: Programas Maria MIDlet-Version: 1.2.0 MIDlet-Description: Conjunto de midlets de Glucometro MIDlet-Icon: /desarrollo/moviles/iconos/gota.png MIDlet-Info-URL: http://www.programasmaria.com/glucometro/info.html MIDlet-Data-Size: 516 MicroEdition-Profile: MIDP-1.0 MicroEdition-Configuration: CLDC MIDlet-1: Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 37 Registra,/desarrollo/moviles/iconos/registra.png,desarrollo.moviles. RegistraGlucosa MIDlet-2: Consulta,/desarrollo/moviles/iconos/consulta.png,desarrollo.moviles. ConsultaGlucosa En el archivo JAR correspondiente, el archivo de manifiesto aparecería como: META.INF/MANIFEST.mf. El archivo JAR también contendría los siguientes archivos: /desarrollo/moviles/RegistraGlucosa.class /desarrollo/moviles/ConsultaGlucosa.class /desarrollo/moviles/Utilidades.class /desarrollo/moviles/iconos/glucosa.png /desarrollo/moviles/iconos/registrapng /desarrollo/moviles/icones/consulta.png El archivo JAR contiene las clases correspodientes a ambos MIDlets; note que la clase de utilidades se incluye pero no hay ninguna referencia a ella en el archivo manifiesto. •El atributo MIDlet-Icon contiene la ruta absoluta del archivo que contiene el icono de la suite. •Asociado a cada MIDlet hay un atributo que describe su nombre y le asocia un identificador. El valor del atributo incluye nombre, icono y clase asociada. El archivo JAD asociado a este MIDlet contendrá la siguiente información: MIDlet-Name: Glucometro MIDlet-Vendor:Programas Maria MIDlet-Version: 1.2.0 MIDlet-Description: Conjunto de midlets para registrar la glucosa y la presión arterial MIDlet-Info-URL: http://www.programasmaria.com/glucometro/info.html MIDlet-Data-Size: 516 MicroEdition-Jar-Size: 10132 MIDlet-Jar-URL: http://www.programasmaria.com/glucometro/Glucometro.jar Esta información se mostrará al usuario en la pantalla del dispositivo, así como la URL del archivo JAR. En este caso, los atributos comunes tienen el mismo valor tanto en el archivo de manifiesto como en el archivo JAD. Para que la suite sea portable, es preciso que el archivo JAR esté codificado usando la codificación ISO-8859-1 (es el estándar de carácteres predeterminado en HTML 4.01.), y se requiere que todas las implementaciones de MIDP soporten esta codificación. Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 38 En tiempo de ejecución, los MIDlets pueden acceder a los archivos del JAR asociado a la suite y obtener información sobre los valores de los atributos, por lo que la importancia de estos dos archivos radica en que deben estar en el dispositivo móvil para la ejecución de la aplicación. Cierre de la Unidad ¿Qué te ha parecido la unidad? Interesante, ¿verdad?, ya que se ha expuesto cómo han ido evolucionando los dispositivos móviles a través del tiempo y así podemos entender el porqué de las características de los dispositivos actuales y visualizar cómo serán en un futuro cercano. Asimismo, conociste dos de las tecnologías mas populares del momento por su sencillez y portabilidad, J2ME y Android; por supuesto que fue menester conocer las respectivas estructuras de las aplicaciones para poder identificarlas y aplicarlas en futuras programaciones con el uso de las herramientas de desarrollo disponibles y de libre distribución como Eclipse, Netbeans y J2ME. Ahora bien, se resaltó la importancia del SDK en la programación de las aplicaciones, y teniendo éstas, ¿cómo las probamos?. Se explicó la importancia del uso de los emuladores para distintos dispositivos y probar si las aplicaciones son funcionales o no, para hacer las correcciones debidas antes de ponerlas a la venta, por ejemplo, o usarlas. Superada la etapa de las pruebas de la aplicación, se identificó en qué momento se crean los archivos JAR y JAD, considerando la importancia de ambos en la portabilidad de la aplicación a un dispositivo móvil. La unidad sienta un precedente para el desarrollo de las unidades subsecuentes, Aplicaciones J2ME y Aplicaciones en plataforma Android, respectivamente. Para saber más Si los temas desarrollados en la presente unidad te han generado curiosidad por saber más al respecto, se te comparten los siguientes recursos para ampliar tu conocimiento: • Investiga en internet la historia de los dispositivos móviles de diversas empresas de telefonía móvil. • La historia de Google, entre lo que se encuentra la aparición de Android en el mercado de los dispositivos móviles, puedes consultarla en el siguiente sitio: https://www.google.com/about/company/history/?hl=es https://www.google.com/about/company/history/?hl=es Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 39 • Las variantes de la norma ISO-8859 http://www.w3schools.com/charsets/ref_html_8859.asp • En el siguiente sitio podrás consultar una reseña histórica de la evolución de la programación de dispositivos móviles http://www.poderpda.com/editorial/programacion-para-dispositivos-moviles-una- resena-historica/ • Investiga en internet diversos videos, donde es posible observar el emulador para aplicaciones y juegos java (Sun Java Wireless Toolkit 2.5.1 + JADMaker). Fuentes de consulta • Android (2014). La historia de Android. Disponible en https://www.android.com/what- is-android/ • Barro Ameneiro, S., y Bugarín Diz, A.J. (2002). Fronteras de la computación. Madrid: Díaz de Santos. • Business Angels IAE (2014). Modelo de resumen ejecutivo ampliado. Buenos Aires, Argentina: Business School, Universidad Austral. • Gálvez, S, y Ortega L. (2003). Java a tope: J2ME (Java 2 Micro Edition). Malaga: Departamento de lenguajes y ciencias de la computación, Universidad de Malaga. • Gargenta, M. (2011). Learning Android. Estados Unidos: O’Reilly Media, Inc.California. • Google Empresa (2014). Nuestra historia en profundidad. Disponible en https://www.google.com/about/company/history/?hl=es • Li, S. y Knudsen, J. (2005). Beginning J2ME: From Novice to Professional. 3rd. Edition. Estados Unidos: Apress. • Mkyong (3 de noviembre 2011). Android Hello World Example. Disponible en http://www.mkyong.com/android/android-hello-world-example/ • Oracle. (2023a). Java SE Development Kit 8 Downloads. Disponible en http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- 2133151.html http://www.w3schools.com/charsets/ref_html_8859.asp http://www.poderpda.com/editorial/programacion-para-dispositivos-moviles-una-resena-historica/ http://www.poderpda.com/editorial/programacion-para-dispositivos-moviles-una-resena-historica/ https://www.android.com/what-is-android/ https://www.android.com/what-is-android/ https://www.google.com/about/company/history/?hl=es http://it-ebooks.info/author/2028/ http://it-ebooks.info/author/2029/ http://www.mkyong.com/android/android-hello-world-example/ http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Programación móvil Unidad 1. Tecnologías para mis aplicaciones móviles Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 40 • Oracle (2023b). The History of Java Technology. Disponible en http://www.oracle.com/technetwork/java/javase/overview/javahistory-index- 198355.html • Paredes Velasco, M., Santacruz Valencia, L.P., Domínguez Mateos, F.(2012). Programación multimedia y dispositivos móviles. Guía didáctica del profesor. Madrid: RA-MA. • Poder PDA. (5 de septiembre 2014). Programación para dispositivos móviles: una reseña histórica. Disponible en https://www.pasionmovil.com/editorial/programacion- para-dispositivos-moviles-una-resena-historica/ • RAE Real Academia Española (2014). Riesgo. [En línea] http://lema.rae.es/drae/?val=emular • Robledo Sacristán, C., y Robledo Fernández, D. (2011). Programación en Android. Madrid: Ministerio de cultura de España. • Sgoliver (28 de diciembre 2014). Estructura de un proyecto Android (Android Studio). Disponible en http://www.sgoliver.net/blog/estructura-de-un-proyecto-android-android- studio/ • Sgoliver (9 de agosto 2010). Estructura de un proyecto Android (Eclipse). Disponible en http://www.sgoliver.net/blog/estructura-de-un-proyecto-android/ • Tardáguila, C. (2009). Dispositivos móviles y multimedia, Repositorio Institucional: Universitat Oberta de Catalunya (UOC). Recuperada en Febrero 8, 2015, del sitio Web tema: Portal de Recursos Educativos Abiertos (REA) en https://www.researchgate.net/publication/267546668_Dispositivos_Moviles_y_Multim edia http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html https://www.pasionmovil.com/editorial/programacion-para-dispositivos-moviles-una-resena-historica/ https://www.pasionmovil.com/editorial/programacion-para-dispositivos-moviles-una-resena-historica/ http://lema.rae.es/drae/?val=emular http://www.sgoliver.net/blog/estructura-de-un-proyecto-android-android-studio/ http://www.sgoliver.net/blog/estructura-de-un-proyecto-android-android-studio/ http://www.sgoliver.net/blog/estructura-de-un-proyecto-android/https://www.researchgate.net/publication/267546668_Dispositivos_Moviles_y_Multimedia https://www.researchgate.net/publication/267546668_Dispositivos_Moviles_y_Multimedia Unidad 1. Tecnologías para mis aplicaciones móviles Presentación de la Unidad Logros Competencia específica 1.1. Evolución de los dispositivos móviles 1.2. Tecnologías aplicadas a la programación móvil 1.3. Estructura de una aplicación para tecnología móvil 1.3.1. J2ME 1.3.2. Android 1.3.3. Midlets 1. 4. Herramientas de desarrollo 1.4.1. Plataformas: Eclipse, Netbeans, J2ME 1.4.2. Emuladores 1.4.3. Importancia y creación de archivos JAR y JAD Cierre de la Unidad Para saber más Fuentes de consulta
Compartir