Desarrollo de aplicaciones
para dispositivos móviles (2)
Introducción (1)
Los Smartphones y otros dispositivos móviles basados en touch están de moda en estos días.
Su popularidad se debe a su habilidad para ejecutar apps.
Aunque los iPhone y iPads son líderes en el mercado con su creciente colección de aplicaciones basadas en Objective-C, los smartphones basados en Android con su colección de aplicaciones basadas en Java están siendo un fuerte competidor [1].
Introducción (2)
Según Tech websites (www.theregister.co.uk/), algunos desarrolladores Android están haciendo mucho dinero.
El pensamiento actual según el clima económico podría llevarnos a convertirnos en un desarrollador Android y ganar dinero.
Si tienes buenas ideas, perseverancia, y talento artístico (o conoces del talento de algunos individuos), te encuentras en el camino hacia alcanzar ese objetivo.
Nota: Una buena razón para considerar desarrollar aplicaciones para Android respecto a desarrollar aplicaciones para iPhone/iPad tiene que ver con los costos iniciales.
No es necesario comprar una Mac en la cual desarrollar aplicaciones Android, ya que la Mac es requerida para desarrollar aplicaciones para iPhone/iPad.
Introducción (3)
La parte más importante, es que se requiere tener una comprensión sólida del lenguaje de programación Java y de sus APIs antes de pasar a Android.
Iniciando con Java
Android es una pila de software de Google que incluye un sistema operativo y middleware.
¿Qué es java?
Java es un lenguaje y una plataforma desarrollada por Sun Microsystems.
Es un lenguaje en el que los desarrolladores expresan código fuente (programas en texto).
Es una sintaxis (reglas para combinar símbolos dentro de las características del lenguaje).
Surge después de C y C++ para reducir la curva de aprendizaje de los desarrolladores de C/C++.
Sun organizo a Java en tres ediciones principales:
Java SE
Java EE
Java es una plataforma (1)
Java es una plataforma para ejecutar programas.
En contraste con las plataformas que consisten en procesadores físicos (como el procesador Intel) y un sistema operativo (como Linux), la plataforma Java consiste en una máquina virtual y un entorno de
ejecución asociado.
La máquina virtual es un procesador basado en software que presenta su
propio conjunto de instrucciones.
El entorno de ejecución asociado consiste en un conjunto de librerías para programas de ejecución, e interactúa con el sistema operativo.
Incluye un amplio conjunto de librerías que realizan tareas comunes, como: operaciones matemáticas (trigonometría) y comunicaciones por red.
Java es una plataforma (2)
El Java compiler es un programa especial que traduce el código fuente a instrucciones (y a datos asociados) que serán ejecutadas por la máquina virtual.
Java SE, Java EE, Java ME y Android
(1)
Los desarrolladores usan diferentes ediciones de la plataforma Java para crear programas en Java que se ejecuten en computadoras de escritorio, web browsers, dispositivos móviles, y en dispositivos embebidos.
Java Platform, Standard Edition (Java SE):
Plataforma Java para desarrollar aplicaciones que se ejecutan en equipos de escritorio independientes (stand-alone programs).
También se utiliza para desarrollar applets, que son programas que se ejecutan en el context de un web browser.
Java Platform, Enterprise Edition (Java EE):
La plataforma de Java para desarrollo de aplicaciones y servlets orientados a la empresa, los cuales son programas para servidores que incluyen la API de Java EE llamada Servlet API.
Java SE, Java EE, Java ME y Android
(2)
Java Patform, Micro Edition (Java ME):
Plataforma Java para desarrollar MIDlets, que son programas que se ejecutan en dispositivos de información móviles, y Xlets, que son programas que corren en dispositivos embebidos.
Los desarrolladores usan una edición especial creada por Google para
crear aplicaciones Android que se ejecuten en dispositivos habilitados con Android.
A esta edición se le conoce como Android platform.
Instalar y Explorar el JDK (1)
Java Runtime Environment (JRE):
Implementa la plataforma Java SE y hace posible el ejecutar programas de Java.
JRE (público) puede descargarse desde la página web:
http://java.sun.com/javase/downloads/index.jsp.
JRE público no permite desarrollar programas Java, para ello, es necesario descargar e instalar el Java SE Development Kit (JDK), que contiene las herramientas de desarrollo (incluye el compilador de Java) y una versión privada de JRE.
Instalar y Explorar el JDK (2)
El instalador del JDK instala el JDK en un directorio, y es posible instalar el
JRE en otro directorio.
Es probable que después de instalar el JDK, sea necesario el agregar el directorio bin a la variable de entorno PATH de la computadora, lo cual permitirá ejecutar las herramientas JDK desde cualquier directorio en tu sistema de archivos.
Una vez instalado el JDK el directorio principal contendrá varios archivos: README.html, que proporciona información sobre el JDK.
src.zip, que proporciona las librerías de clases estándar (código fuente).
Directorio bin, que contiene varias herramientas JDK, incluyendo la herramienta del compilador de Java.
Directorio jre, que contiene la copia privada del JRE, tal que permite ejecutar programas Java sin tener instalado el JRE público.
Directorio lib, que contiene los archivos de biblioteca usados por la herramienta JDK.
Instalar y Explorar el JDK (3)
Algunas de las herramientas más usadas del directorio bin son:
javac, es el compilador de Java. Herramienta que inicia la máquina virtual. java, el que carga aplicaciones Java.
javadoc, generador de documentación Java.
jar, java archive creator, updater and extractor (crea, actualiza y extrae
archivos Java).
Instalación y exploración de dos IDEs
populares
Para proyectos pequeños puede funcionar el trabajar en línea de comandos usando la herramienta JDK, sin embargo, eso no resulta conveniente para proyectos grandes, ya que resulta complejo manejarlos sin la ayuda de un entorno integrado de desarrollo (IDE – Integrated
Development Environment).
Un IDE consiste de:
Un manejador de proyectos para llevar el control de los archivos del proyecto.
Un editor de texto para capturar y editar código fuente.
Un debugger para detectar errores.
Entre otras características.
IDEs populares:
NetBeans.
Eclipse.
IDE de NetBeans
IDE de NetBeans es de código abierto (open source), basado en Java para desarrollar programas en Java y en otros lenguajes (como PHP, Ruby, C++, Groovy y Scala).
Para descargar e instalar el IDE es necesario considerar lo siguiente:
Seleccionar el IDE apropiado en función del Lenguaje (Inglés).
Seleccionar la plataforma (Windows).
Introducción (1)
Los MIDlets se ejecutan en la máquina virtual de Java, abstraen el hardware y permiten a los desarrolladores el crear aplicaciones que se ejecutan en una amplia variedad de hardware que soporta Java.
Desafortunadamente, la conveniencia de usar los MIDlets genera como resultado una restricción en cuanto al acceso al hardware del dispositivo.
En el desarrollo móvil, se considera normal para aplicaciones desarrolladas por terceras partes el recibir accesos distintos al hardware y derechos de ejecución variables, comparado con aplicaciones nativas desarrolladas por los fabricantes de los móviles.
La introducción de los MIDlets de Java ha incrementado la cantidad de desarrolladores, pero la carencia en cuanto al acceso a bajo nivel sobre el hardware y sobre el espacio de ejecución ha hecho que la mayoría de las aplicaciones móviles sean programas de escritorio diseñados para ejecutarse en pequeñas pantallas, y no toman ventaja de la movilidad inherente de la plataforma portátil.
Introducción (2)
Android se ubica sobre una ola de sistemas operativos móviles diseñados para incrementar el potencial del hardware.
Windows Mobile y los iPhones de Apple proporcionan un entorno de desarrollo de aplicaciones simplificado y rico en características.
Se desarrollan en sistemas operativos propietarios que priorizan el uso de aplicaciones nativas sobre aquellas aplicaciones creadas por terceras partes, y restringen la comunicación entre aplicaciones y datos nativos del teléfono.
Android ofrece nuevas posibilidades para aplicaciones móviles, ofrece un entorno de desarrollo abierto para construir aplicaciones y está basado en un kernel libre de Linux.
El hardware es accesible para todas las aplicaciones a través de una serie de librerías (API’s) y aplicaciones de interacción.
En Android todas las aplicaciones tienen la misma jerarquía.
Los usuarios pueden eliminar o reemplazar cualquier aplicación nativa con una desarrollada por alternos.
Lo que es y no es Android
Las aplicaciones de Android están escritas usando Java, pero no se ejecutan dentro de la máquina virtual de Java ME, y las clases compiladas en Java y sus ejecutables no se ejecutan naturalmente en Android.
Android se ejecuta sobre un kernel de Linux.
Además, contiene la descripción completa del software del sistema operativo, librerías API, y las aplicaciones mismas.
Incluye las referencias de los fabricantes de los teléfonos móviles y ha sido diseñado para dar soporte a muchos dispositivos alternos.
Android es software libre producido y soportado por Open Handset Alliance y diseñado para trabajar en cualquier dispositivo móvil que cumpla con los requerimientos.
Android es una plataforma abierta para
desarrollo de aplicaciones móviles
Android se compone de varias partes necesarias y dependientes incluyendo:
Referencia del diseño del hardware, que describe las capacidades requeridas de un dispositivo móvil para dar soporte al software.
Sistema operativo Linux, que proporciona una interfaz de bajo nivel con el hardware, con el manejo de la memoria, y el control de procesos, todo optimizado para dispositivos móviles.
Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios.
Un run time empleado para ejecutar y hospedar aplicaciones Android, incluye la máquina virtual Dalvik y librerías que proporcionan una funcionalidad especifica a Android.
El run time es desarrollado para ser pequeño y eficiente para ser usado en dispositivos móviles.
Un framework usado para hospedar y cargar aplicaciones.
Un kit de desarrollo de software para crear aplicaciones, incluye herramientas, plug-ins, y documentación.
Aplicaciones nativas de Android
Algunas son:
Un cliente de e-mail compatible con Gmail.
Una aplicación para el manejo de SMS.
Un manejador de información personal, que incluye calendario y lista de contactos,
Google Maps (Street View, bussines finder, driving directions, satellite view y traffic conditions).
Un navegador web.
Un cliente para mensajes instantáneos.
Reproductor de música y visor de imágenes.
Android Marketplace.
Amazon MP3.
…
Características del SDK de Android (1)
No es necesaria una licencia o pago de cuotas por desarrollar aplicaciones. Acceso al hardware Wi-Fi.
Redes GSM, EDGE y 3G para telefonía o transferencia de datos, permiten el hacer y recibir llamadas o mensajes, o enviar y recibir datos entre redes móviles.
APIs para manejar servicios de localización como el GPS.
Control completo del hardware de multimedia (playback, grabar usando la cámara y el micrófono).
APIs para el acelerómetro y el compas. Tiendas de datos compartidos.
Características del SDK de Android (2)
Soporte completo para aplicaciones que integran control de Mapas como parte de sus interfaces.
Soporte P2P (Peer-to-peer) para Google Talk.
Hardware para optimizar gráficos integrado incluye la librería 2D y soporte para gráficos 3D usando OpenGL ES.
Librerías multimedia para reproducir y grabar audio y video.
Framework que permite reutilizar componentes de aplicaciones y reemplazar aplicaciones nativas.
El
acceso
al
hardware
incluye
Cámara, GPS y Acelerómetro
Android incluye librerías para simplificar el desarrollo de aplicaciones que involucra dispositivos del hardware.
Con estas librerías no es necesario hacer implementaciones específicas para cada dispositivo, de tal forma que las aplicaciones funcionen en cualquier hardware que soporte el software de Android.
El SDK de Android incluye APIs para manejar la localización (como el GPS), cámara, conexiones a internet, Wi-Fi, Bluetooth, acelerómetros, touch screen, y manejo de batería.
La maquina virtual Dalvik
Es uno de los elementos clave de Android.
Diseñada para asegurar que las múltiples instancias se ejecutan eficientemente en un solo dispositivo.
Dalvik VM usa el kernel de Linux para manejar la funcionalidad a bajo nivel incluyendo, seguridad, hilos, procesos y manejo de memoria.
Es posible escribir aplicaciones C/C++ que se ejecuten directamente en el sistema operativo.
Aún cuando se pueda hacer esto, en la mayoría de los casos no hay razón para hacerlo.
Referencias
[1] Jeff “JavaJeff” Friesen (2010). Learn Java for Android Development. Apress.