desarrollo de aplicaciones para dispositivos móviles · librerías de código abierto para el...

28
Desarrollo de aplicaciones para dispositivos móviles (2) M.C. Ana Cristina Palacios García

Upload: phamdang

Post on 07-Jul-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

Desarrollo de aplicaciones

para dispositivos móviles (2)M.C. Ana Cristina Palacios García

Page 2: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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].

No solo los desarrolladores de iPhone/iPad están haciendo dinero con sus

aplicaciones, muchos desarrolladores Android también lo están haciendo

al vender aplicaciones similares.

Page 3: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

Introducción (2)

Según Tech websites (www.theregister.co.uk/), algunos desarrolladores Androidestán haciendo mucho dinero.

El pensamiento actual según el clima económico podría llevarnos aconvertirnos en un desarrollador Android y ganar dinero.

Si tienes buenas ideas, perseverancia, y talento artístico (o conoces del talento dealgunos individuos), te encuentras en el camino hacia alcanzar ese objetivo.

Nota: Una buena razón para considerar desarrollar aplicaciones para Androidrespecto a desarrollar aplicaciones para iPhone/iPad tiene que ver con loscostos iniciales.

No es necesario comprar una Mac en la cual desarrollar aplicaciones Android, yaque la Mac es requerida para desarrollar aplicaciones para iPhone/iPad.

La computadora con la que se puede trabajar puede tener instalado Windows, Linuxo Unix para desarrollar aplicaciones Android.

Page 4: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

Lo anterior se debe a que las aplicaciones Android se escriben en Java e

interactúan con muchos de los estándares de las APIs de Java (como APIs para

threading, input/output).

Page 5: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

Iniciando con Java

Android es una pila de software de Google que incluye un sistema

operativo y middleware.

Con la ayuda de Java, el sistema operativo ejecuta las aplicaciones

específicamente diseñadas, conocidas como Android apps.

Page 6: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

¿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 ME

Page 7: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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), laplataforma Java consiste en una máquina virtual y un entorno deejecución asociado.

La máquina virtual es un procesador basado en software que presenta supropio conjunto de instrucciones.

El entorno de ejecución asociado consiste en un conjunto de librerías paraprogramas 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.

A la librería se le conoce como estándar class library.

Page 8: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

A esas instrucciones se les conoce como bytecode.

Page 9: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

Java SE, Java EE, Java ME y Android

(1)

Los desarrolladores usan diferentes ediciones de la plataforma Java para crearprogramas en Java que se ejecuten en computadoras de escritorio, webbrowsers, dispositivos móviles, y en dispositivos embebidos.

Java Platform, Standard Edition (Java SE):

Plataforma Java para desarrollar aplicaciones que se ejecutan en equipos deescritorio independientes (stand-alone programs).

También se utiliza para desarrollar applets, que son programas que se ejecutan en elcontext de un web browser.

Java Platform, Enterprise Edition (Java EE):

La plataforma de Java para desarrollo de aplicaciones y servlets orientados a laempresa, los cuales son programas para servidores que incluyen la API de Java EEllamada Servlet API.

Se construyó sobre Java SE.

Page 10: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

La plataforma de Google para Android consiste en un conjunto amplio de

librerías de Java (basadas principalmente en Java SE) y de una máquina

virtual conocida como Dalvik.

Page 11: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

11

Page 12: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

12

Page 13: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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).

13

Page 14: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

14

Page 15: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

15

Page 16: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

Instalación y exploración de dos IDEs

populares

Para proyectos pequeños puede funcionar el trabajar en línea decomandos usando la herramienta JDK, sin embargo, eso no resultaconveniente para proyectos grandes, ya que resulta complejo manejarlossin la ayuda de un entorno integrado de desarrollo (IDE – IntegratedDevelopment 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.

16

Page 17: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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).

17

Page 18: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

18

Page 19: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

Introducción (1)

Los MIDlets se ejecutan en la máquina virtual de Java, abstraen el hardware ypermiten a los desarrolladores el crear aplicaciones que se ejecutan en unaamplia variedad de hardware que soporta Java.

Desafortunadamente, la conveniencia de usar los MIDlets genera como resultadouna restricción en cuanto al acceso al hardware del dispositivo.

En el desarrollo móvil, se considera normal para aplicaciones desarrolladas porterceras partes el recibir accesos distintos al hardware y derechos de ejecuciónvariables, comparado con aplicaciones nativas desarrolladas por losfabricantes de los móviles.

La introducción de los MIDlets de Java ha incrementado la cantidad dedesarrolladores, pero la carencia en cuanto al acceso a bajo nivel sobre elhardware y sobre el espacio de ejecución ha hecho que la mayoría de lasaplicaciones móviles sean programas de escritorio diseñados para ejecutarseen pequeñas pantallas, y no toman ventaja de la movilidad inherente de laplataforma portátil.

19

Page 20: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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 desarrollode aplicaciones simplificado y rico en características.

Se desarrollan en sistemas operativos propietarios que priorizan el uso de aplicacionesnativas sobre aquellas aplicaciones creadas por terceras partes, y restringen lacomunicación entre aplicaciones y datos nativos del teléfono.

Android ofrece nuevas posibilidades para aplicaciones móviles, ofrece unentorno de desarrollo abierto para construir aplicaciones y está basado en unkernel 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 unadesarrollada por alternos.

20

Page 21: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

21

Page 22: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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 undispositivo 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 paradispositivos 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 lamáquina virtual Dalvik y librerías que proporcionan una funcionalidad especifica aAndroid.

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.

22

Page 23: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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 trafficconditions).

Un navegador web.

Un cliente para mensajes instantáneos.

Reproductor de música y visor de imágenes.

Android Marketplace.

Amazon MP3.

23

Page 24: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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 elhacer y recibir llamadas o mensajes, o enviar y recibir datos entre redesmóviles.

APIs para manejar servicios de localización como el GPS.

Control completo del hardware de multimedia (playback, grabar usando lacámara y el micrófono).

APIs para el acelerómetro y el compas.

Tiendas de datos compartidos.

WebKit-based browser.

24

Page 25: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

25

Page 26: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

26

Page 27: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

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.

27

Page 28: Desarrollo de aplicaciones para dispositivos móviles · Librerías de código abierto para el desarrollo de aplicaciones incluyendo SQLite, WebKit, OpenGL, y un manejador de medios

Referencias

[1] Jeff “JavaJeff” Friesen (2010). Learn Java for Android Development.

Apress.

28