Módulo 2 Android

Embed Size (px)

Citation preview

  • 7/23/2019 Mdulo 2 Android

    1/396

    MDULO 2. El kit de desarrollo de software para SO AndroidIntroduccin del Mdulo ................................................................................. 2Unidad 2.1. El Android SDK (Software development Kit o Kit de

    desarrollo de software) ......................................................................................3Unidad 2.2. Uso de Eclipse, IDE para programar Android ..............................46

    Unidad 2.3. Android Development Tools (ADT) y recursos para

    desarrolladores ..............................................................................................102Sntesis del mdulo ........................................................................................131Bibliografa.......................................................................................................135Glosario ............................................................................................................136

    Actividades del mdulo ..................................................................................139

    Autor: Felipe Caldern1

  • 7/23/2019 Mdulo 2 Android

    2/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    3/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidMdulo 2.

    AndroidEl kit de desarrollo de software para SOIntroduccin del MduloUna vez conocemos el Entorno de SO Android , en este mdulo nos

    adentraremos en los lenguajes de programacin y en la utilizacin de las

    mismas dentro de los recursos que nos ofrece Android para poder desarrollar

    nuestras propias aplicaciones. En este mdulo explicaremos por un lado uno

    de los IDES de desarrollo y aprenderemos a instalarlo correctamente en

    nuestro equipo. Adems instalaremos un emulador de Android emulando

    diferentes plataformas: Tablet Samsung Galaxy, HTCTambin incluimos en el material de soporte una referencia a Java, si bien no

    es el objetivo de este curso aprender Java, necesitaramos un monogrfico

    entero, si debe haber una referencia al modelo y estructura de la programacin

    orientada a objetos. He puesto referencias, links para que profundicis.

    Abordaremos tambin un nuevo entorno de desarrollo en la nube, elaborado

    por Google llamado App Inventor, a diferencia de Eclipse ste no necesita de

    un PC con su sistema operativo, una instalacin, continas actualizaciones,

    etc., con esta herramienta dispondremos de nuestro entorno en un navegador y

    adems con conocimientos mnimos de programacin podremos desarrollar

    aplicaciones. Si bien el curso ir enfocado al IDE Eclipse creo relevante por su

    sencillez de implantacin, instalacin y potencial dar peso a esta nueva

    herramienta de Google, como vimos en el mdulo anterior, creador del sistemaoperativo Android.Objetivos de aprendizaje Conocer Xml, Java, SDK, Eclipse, App Inventor, ADT en el desarrollo de

    aplicaciones, basadas en la plataforma Android.

    Repasar la programacin orientada a objetos, sintaxis y recursos java.

    Conocer el IDE Eclipse, de dnde descargarlo, como instalarlo y como

    mantenerlo actualizado.

    Conocer alternativas de desarrollo a Eclipse.

    Clasificar los recursos de la comunidad Android para el desarrollo de

  • 7/23/2019 Mdulo 2 Android

    4/396

    aplicaciones.2

  • 7/23/2019 Mdulo 2 Android

    5/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    6/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidUnidad 2.1. El Android SDK (Software development Kit

    o Kit de desarrollo de software)IntroduccinLa principal tarea de un programador al enfrentarse a una nueva plataforma es

    comprender el SDK y sus distintos componentes. En primer lugar analizaremos

    los componentes bsicos del SDK de Android, para despus pasar a las

    herramientas incluidas para crear y depurar una aplicacin.El SDK de Android proporciona un amplio conjunto de funciones que permiten

    a los programadores crear multitud de aplicaciones. Examinaremos las

    principales partes del SDK.Objetivos de aprendizaje Utilizar y conocer el SDK (Software Development Kit O Kit De

    Desarrollo De Software)

    Conocer el entorno de desarrollo de SDK, y sus paquetes bsicos,

    como los requerimientos del Hardware.

    Conocer los conceptos de programacin lgica.

    Conocer y utilizar JAVA, lenguaje de programacin de Android.La principal tarea de un programador al enfrentarse a una nueva plataforma es

    comprender el SDK y sus distintos componentes. En primer lugar analizaremos

    los componentes bsicos del SDK de Android, para despus pasar a las

    herramientas incluidas para crear y depurar una aplicacin.El SDK de Android proporciona un amplio conjunto de funciones que permiten

    a los programadores crear multitud de aplicaciones. Examinaremos lasprincipales partes del SDK3

  • 7/23/2019 Mdulo 2 Android

    7/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    8/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidEl SDK de Android se puede descargar de forma gratuita desde la Web de

    Android. Lo primero que debe hacer antes de continuar es comprobar si

    dispone del SDK instalado, junto con Eclipse y el complemento Android para

    este, tambin denominado ADT (Android Development Tools). El SDK se

    necesita para crear aplicaciones de Android y Eclipse es el entorno de

    desarrollo expuesto en este mdulo. Puede descargar el SDK de Android en la

    direccin. http://developer.android.com/sdk/ndex.htmlComo sucede en cualquier entorno de desarrollo, resulta muy til familiarizarse

    con las estructuras de clases. El SDK de Android contiene documentacin

    HTML, pginas con formato Javadoc que describen los paquetes y clases

    disponibles. La documentacin del SDK se encuentra en el directorio /doc de la

    instalacin.Pasos de la instalacin del SDK Android

    Antes de empezar con el SDK de Android, es necesario repasar las

    necesidades de su sistema.En las secciones siguientes se describen los requisitos del sistema y de

    software para desarrollar aplicaciones para Android con el SDK de Android.Sistemas operativos compatibles Windows XP (32 bits), Vista (32 - o 64-bit) o Windows 7 (32 - o 64-bit).

    Mac OS X 10.5.8 o posterior (slo x86).

    Linux (probado en Ubuntu Linux, Lucid Lynx).

    -Biblioteca GNU C (glibc) 2.7 o posterior.

    -En Ubuntu Linux, versin 8.04 o posterior.-64-bit distribucin debe ser capaz de ejecutar aplicaciones de 32

    bits. Para obtener ms informacin acerca de cmo agregar

    soporte para aplicaciones de 32 bitsEntornos de Desarrollo Eclipse IDE

    Eclipse 3.5 (Galileo) o mayor

    NotaEclipse 3.4 (Ganmedes) ya no es compatible con la ltima versin de

    ADT.

  • 7/23/2019 Mdulo 2 Android

    9/396

    Eclipse JDT plugin (incluido en la mayora de paquetes de Eclipse IDE)4

  • 7/23/2019 Mdulo 2 Android

    10/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    11/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Android Si tiene que instalar o actualizar Eclipse, puede descargarlo desde

    http://www.eclipse.org/downloads/Existen varios tipos de paquetes de Eclipse, estn disponibles para cada

    plataforma. Para el desarrollo de aplicaciones de Android, le recomendamos

    que instale uno de estos paquetes:Eclipse IDE para desarrolladores de Java.

    Eclipse Classic (versiones 3.5.1 y superiores)

    Eclipse IDE para Java EE Desarrolladores. JDK 5 o JDK 6 (JRE por s sola no es suficiente).

    Herramientas de desarrollo de Android plugin (recomendado).

    No es compatible con GNU Compiler for Java (GCJ).Otros entornos de desarrollo o IDE JDK 5 o JDK 6 (JRE por s sola no es suficiente).

    Apache Ant 1.8 o posterior.

    No es compatible con GNU Compiler for Java (GCJ).Nota

    Si JDK ya est instalado en el equipo de desarrollo, por favor tome un

    momento para asegurarse de que cumple los requisitos de la versin

    antes mencionados. En particular, tenga en cuenta que algunas

    distribuciones de Linux pueden incluir el JDK 1.4 o GNU Compiler for

    Java, los cuales no son compatibles con el desarrollo de Android.Los requisitos de hardware

    El SDK de Android requiere almacenamiento en disco para todos los

    componentes que desea instalar. La siguiente tabla proporciona una idea

    aproximada de las necesidades de espacio de disco a esperar, sobre la base

    de los componentes que va a utilizar.5

  • 7/23/2019 Mdulo 2 Android

    12/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    13/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidCOMPONENT TYPESDK ToolsSDK Platform-tools

    Android platform (each)SDK Add-on (each)USB Driver for WindowsSamples (per platform)Offline documentation

    APPROXIMATE SIZE

    35 MB6 MB150 MB100 MB10 MB10M

    250 MBCOMMENTSRequired.Required.

    At least one platform is

    required.Optional.Optional. For Windows only.Optional.Optional.Hay que tener en cuenta que los requisitos de espacio en disco anteriores son

    adicionales a los del IDE de Eclipse, JDK, u otras herramientas de requisito

    previo que puede que tenga que instalar en el equipo de desarrollo.

    Si va a desarrollar en Eclipse con las herramientas de desarrollo Android (ADT)

    Plugin (el mtodo recomendado si eres nuevo en Android) asegrese de que

    tiene una versin de Eclipse instalado en su computadora como se describe en

  • 7/23/2019 Mdulo 2 Android

    14/396

    el documento de Requisitos del sistema. Si es necesario instalar Eclipse, se

    puede descargar desde esta ubicacin:Navega y descubrehttp://www.eclipse.org/downloads/

    El "Eclipse Classic" es la versin recomendada. De lo contrario, una

    versin de Java o RCP de Eclipse.El SDK starter package no es un completo development environment slo

    incluye las herramientas bsicas de SDK, que se puede utilizar para descargar

    el resto de los componentes SDK (por ejemplo, la ltima plataforma de

    Android).Si ha descargado un zip. o paquete tgz (en lugar de la instalacin de SDK),

    descomprmalo en una ubicacin segura en el equipo. De manerapredeterminada, los archivos SDK se desempaqueta en un directorio llamado

    android-sdk-.Si ha descargado el instalador de Windows (. Exe), ejectelo y comprobar si el

    propio Java SE Development Kit (JDK) est instalado, a continuacin, instalar6

  • 7/23/2019 Mdulo 2 Android

    15/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    16/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Androidlas herramientas de SDK en una ubicacin predeterminada (que se puede

    modificar).Tome nota del nombre y la ubicacin del directorio del SDK en el sistema,

    tendr que consultar el directorio del SDK ms tarde, cuando la configuracin

    del plugin de ADT y al utilizar las herramientas del SDK de la lnea de

    comandos.Instalar el plugin de ADT para Eclipse

    Android ofrece un plug-in personalizado para el IDE Eclipse, llamado

    Development Tools (ADT), que est diseado para darle un ambiente

    potente, integrado en el que la creacin de aplicaciones para Android. Se

    extiende a los lderes slidos de Eclipse para que pueda configurar

    rpidamente nuevos proyectos de Android, crear una interfaz de usuario de la

    aplicacin, depurar sus aplicaciones utilizando las herramientas de SDK de

    Android, e incluso exportar APKs firmado (o sin firmar) con el fin de distribuir la

    aplicacin. En general, en desarrollo de Eclipse con ADT es un enfoque muy

    recomendable y es la forma ms rpida de empezar a trabajar con Android.Si prefieres trabajar en un IDE diferente, no es necesario instalar Eclipse o

    ADT. En su lugar, puede utilizar directamente las herramientas SDK para crear

    y depurar la aplicacin.

    ADD de plataformas y otros componentes.El ltimo paso en la configuracin de su SDK es utilizar el SDK de Android y

    AVD Manager (una herramienta incluida en el paquete SDK starter package)

    para descargar los componentes esenciales del SDK en su entorno dedesarrollo.El SDK utiliza una estructura modular que separa a las partes principales de las

    versiones de la plataforma Android SDK, complementos, herramientas,

    muestras, y en la documentacin, un conjunto de componentes puede instalar

    por separado. El SDK starter package, que ya has descargado, incluye slo un

    nico componente: la ltima versin de las herramientas de SDK. Para

    desarrollar una aplicacin para Android, tambin es necesario para descargar

    al menos una plataforma Android y la plataforma de herramientas asociadas.

    Puedes agregar otros componentes y plataformas, as que es muy

  • 7/23/2019 Mdulo 2 Android

    17/396

    recomendable.Si se utiliza el instalador de Windows, cuando se completa el asistente de

    instalacin, se pondr en marcha el SDK de Android y AVD Manager con un

    conjunto predeterminado de plataformas y otros componentes seleccionados

    para la instalacin. Simplemente haga clic en Instalar para aceptar el conjunto

    recomendado de componentes e instalarlos.7

  • 7/23/2019 Mdulo 2 Android

    18/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    19/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidPuedes lanzar el SDK de Android y AVD Manager en una de las siguientes

    maneras: Desde el interior de Eclipse, seleccione Ventana SDK> Android y AVD

    Manager. En Windows, haga doble clic en el archivo SDK Manager.exe en la raz

    del directorio del SDK de Android. En Mac o Linux, abre un terminal y vaya a las herramientas / directorio

    en el SDK de Android, ejecutar a continuacin:android

    Componentes disponiblesDe manera predeterminada, hay dos centros de almacenamiento de los

    componentes de su SDK: Repositorio de Android y de terceros Add-ons.El Repositorio de Android ofrece este tipo de componentes:8

  • 7/23/2019 Mdulo 2 Android

    20/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    21/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Android SDK Tools - Contiene herramientas para depurar y probar su aplicacin

    y otras herramientas de utilidad. Estas herramientas se instalan con el

    paquete SDK de Android arranque y recibir actualizaciones peridicas.

    Puede acceder a estas herramientas en el / tools / de su SDK.

    Para aprender ms sobre ellos, ver las herramientas SDK en la gua

    para desarrolladores. SDK Platform-tools- Contiene dependientes de la plataforma de

    herramientas para desarrollar y depurar la aplicacin. Estos

    instrumentos de apoyo a las ltimas caractersticas de la plataforma

    Android y se actualizan slo cuando una nueva plataforma est

    disponible. Puede acceder a estas herramientas en el / plataform-

    tools / directorio. Android platforms- Una plataforma SDK est disponible para todas las

    plataformas de produccin de despliegue para Android con Android.

    Cada componente de la plataforma SDK incluye una biblioteca Android

    totalmente compatible, la imagen del sistema, cdigo de muestra, y las

    pieles emulador. USB Driver for Windows (Windows only) - Contiene los archivos de

    controladores que puede instalar en su ordenador con Windows, para

    que pueda ejecutar y depurar aplicaciones en un dispositivo real. No es

    necesario el driver USB a menos que el plan para depurar la aplicacin

    en un verdadero dispositivo con Android. Si se desarrolla en Mac OS X o

    Linux, no es necesario un controlador especial para depurar la aplicacin

    en un dispositivo con Android. Samples - Contiene el cdigo de ejemplo y aplicaciones disponibles

    para cada plataforma de desarrollo de Android. Si se acaba de empezar

    con el desarrollo de Android, asegrese de descargar los ejemplos de su

    SDK. Documentacin - Contiene una copia local de la documentacin ms

    reciente multiversin para la API de Android marco.El tercer complemento proporciona componentes que le permiten crear un

    entorno de desarrollo con un Android especfico de bibliotecas externas (tales

  • 7/23/2019 Mdulo 2 Android

    22/396

    como la biblioteca de Google Maps) o personalizada (pero totalmente

    compatible) segn la imagen del sistema.

    Android.Recommended ComponentsEl repositorio SDK contiene una serie de componentes que se pueden

    descargar. Utilice la siguiente tabla para determinar los componentes que

    necesita, en funcin de si desea crear un ambiente bsico, el desarrollo

    recomendado, o completo:9

  • 7/23/2019 Mdulo 2 Android

    23/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    24/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidEnvironmentBasicSDK ComponentSDK ToolsCommentsSi usted acaba de instalar el SDK

    starter package, entonces ya tiene la

    ltima versin de este componente. El

    componente SDK Tools es necesario

    para desarrollar una aplicacin paraAndroid. Asegrese de que mantener

    esta situacin hasta la fecha.Esto incluye ms herramientas que se

    requieren para el desarrollo de

    aplicaciones. Estas herramientas son

    dependientes de la plataforma y por lo

    general de actualizacin cuando una

    nueva plataforma SDK est disponible,

    afindeapoyarlasnuevas

    caractersticas de la plataforma. Estas

    herramientas son siempre compatibles

    con las plataformas anteriores, pero hay

    que estar seguro de que usted tiene laltima versin de estas herramientas al

    instalar una nueva plataforma SDK.Es necesario descargar al menos una

    plataforma en su entorno, de modo que

    usted ser capaz de compilar la

    aplicacin y el ajuste del dispositivo

    Android Virtual (AVD) para ejecutarlo en

    (en el emulador). Para empezar, slo

    tiene que descargar la ltima versin de

  • 7/23/2019 Mdulo 2 Android

    25/396

    la plataforma. Ms tarde, si va a

    publicar la aplicacin, tendr que

    descargar otras plataformas, para que

    pueda probar la aplicacin en toda la

    gama de versiones de la plataforma

    Android que admita la aplicacin.SDK

    toolsPlatform-SDK platform+

    Recommended(plus Basic)DocumentationEl componente de la documentacin es

    til porque te permite trabajar en lnea y

    buscar informacin de referencia de la

    API de dentro de Eclipse.

    Los componentes de las muestras que

    dan el cdigo fuente que puede utilizar

    para aprender acerca de Android, la

    carga como un proyecto y de ejecucin,

    o la reutilizacin en su propia

    aplicacin. Tenga en cuenta que los

    Samples10

  • 7/23/2019 Mdulo 2 Android

    26/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    27/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Androidcomponentes de mltiples muestras

    estn disponibles - uno para cada

    versin de la plataforma Android.

    Cuando usted est eligiendo un

    componente de las muestras para

    descargar, seleccione la API, cuyo nivel

    coincide con el nivel de la API de

    Android platform que usted quiera

    utilizar.Usb Driver

    El componente de controlador USB slo

    esnecesariosiustedest

    desarrollando en Windows y tiene un

    dispositivo con Android en el que desea

    instalar la aplicacin para la depuracin

    y pruebas. Para Mac OS X y Linux, no

    es necesaria.+Full

    (plus

    Recommended)Google APIs

    El API de Google add-on le da a suacceso a las aplicaciones a la biblioteca

    de informacin de fuentes externas, lo

    que hace que sea fcil de visualizar y

    manipular los datos de mapas en su

    aplicacin.SDK

    Si va a publicar la aplicacin, tendr

    que descargar plataformas adicionales

    correspondientes a las versiones de la

  • 7/23/2019 Mdulo 2 Android

    28/396

    plataforma Android en el que desea que

    la aplicacin funcione. El enfoque

    recomendado es compilar la aplicacin

    en la versin ms baja que quieren

    apoyar, pero la prueba de que contra el

    aumento de las versiones que tiene la

    intencin de la aplicacin que se

    ejecuta. Usted puede probar sus

    aplicaciones en diferentes plataformas

    mediante la ejecucin de un dispositivo

    Android Virtual (AVD) en el emulador de

    Android.

    Additional

    PlatformsUna vez que haya instalado al menos la configuracin bsica de los

    componentes del SDK, ya ests listo para comenzar a desarrollar aplicaciones

    de Android. En la siguiente seccin se describe el contenido del SDK de

    Android para que se familiarice con los componentes que acaba de instalar.Una vez que haya instalado el SDK y las plataformas de descarga,

    documentacin, y los complementos que se necesitan, le sugerimos que abra

    el directorio SDK y eche un vistazo a lo que hay dentro.11

  • 7/23/2019 Mdulo 2 Android

    29/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    30/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidLa siguiente tabla describe el contenido completo del directorio SDK, con los

    componentes instalados:NAMEadd-ons/DESCRIPTIONContiene complementos para el Android SDK development

    environment, que le permiten desarrollarse en contra de

    bibliotecas externas que estn disponibles en algunos

    dispositivos.

    Un conjunto completo de documentacin en formato HTML,incluyendo la Gua del desarrollador, la API de referencia y

    otra informacin. Para leer la documentacin, la carga de la

    offline.html archivo en un navegador web.Contiene el dependiente de la plataforma de herramientas de

    desarrollo que pueden ser actualizados con cada nueva

    versin de la plataforma. Las herramientas de la plataforma

    incluyen la depuracin Android Bridge (adb), as como otras

    herramientas que no suelen utilizar directamente. Estas

    herramientas son independientes de las herramientas de

    desarrollo en el directorio tolos porque estas herramientas

    pueden ser actualizadas a fin de apoyar las nuevas

    caractersticas de la ltima plataforma Android.

    Contiene un conjunto de versiones de la plataforma Androidque se pueden desarrollar aplicaciones en contra, cada uno

    en un directorio independiente.Directorio de la plataforma de versin, por ejemplo, "androide-

    11". Todos los directorios versin de la plataforma contienen

    un conjunto similar de archivos y estructura de subdirectorios.

    Cada directorio de la plataforma tambin incluye la biblioteca

    de Android (android.jar) que se utiliza para compilar

    aplicaciones en contra de la versin de la plataforma.El cdigo de ejemplo y aplicaciones que son especficas de la

  • 7/23/2019 Mdulo 2 Android

    31/396

    versin de la plataformaContiene el conjunto de herramientas de desarrollo y creacin

    de perfiles que son independientes de la plataforma, como por

    ejemplo el emulador, el SDK de Android y AVD Manager,

    DDMS, hierarchyviewer y mucho ms. Las herramientas en

    este directorio pueden ser actualizadas en cualquier momento

    utilizando el SDK de Android y AVD Manager y son

    independientes de la plataforma de lanzamientos.Un archivo en el que se explica cmo realizar la configuracin

    inicial de su SDK, incluyendo la manera de lanzar el SDK de

    Android y AVD Manager tool en todas las plataformas

    SDK de Windows solamente. Un atajo que lanza el SDK deAndroid y AVD Manager tool, que se utiliza para agregar

    componentes a su SDK.docs/platform-tools/platforms//

    samples/tools/SDK Readme.txtSDK

    Manager.exe12

  • 7/23/2019 Mdulo 2 Android

    32/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    33/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidDebido a la naturaleza cambiante de esta plataforma, debe estar al tanto de las

    novedades del SDK.Navega y descubreEn la direccin: http://developer.android.com/reference/packages.html

    encontrar la informacin ms actualizada sobre el SDK de Android.El entorno de Java de Android se puede dividir en diferentes secciones. Una

    vez comprenda cada una de ellas, los materiales de referencia incluidos con el

    SDK son una herramienta esencial. Recordar que Android no es un entorno

    de software estrictamente J2ME; no obstante, existen semejanzas entre

    Android y otras plataformas Java.En los siguientes apartados veremos algunos de los paquetes Java del SDK de

    Android y cundo se utilizan.Paquetes bsicos de AndroidSi ha programado antes en Java, reconocer muchos de estos paquetes

    bsicos, como los enumerados a continuacin:

    java.lang: Clases bsicas del lenguaje Java.

    java. io: Funciones de entrada/salida.

    java. net: Conexiones de red.

    java.text: Utilidades de procesamiento de texto.

    java.math: Clases matemticas y de manipulacin de nmeros.

    javax.net: Clases de red.

    javax.security: Clases relacionadas con la seguridad.

  • 7/23/2019 Mdulo 2 Android

    34/396

    javax.xml: Clases XML basadas en DOM.

    org.apache: Clases relacionadas con HTTP.

    org.xml: Clases XML basadas en SAX.Existen clases de Java adicionales. Por lo general, en el mdulo apenas nos

    centraremos en los paquetes bsicos ya que nuestro inters principal es el

    desarrollo de Android. Dicho esto, veamos las funciones especficas de ste

    incluidas en el SDK.Los paquetes especficos de Android son fciles de identificar ya que el

    nombre del paquete comienza por android. Algunos de los ms importantes

    son los siguientes: Android. app: Acceso al modelo de aplicaciones de Android.

    Android. bluetooth: Acceso a la conectividad Bluetooth.

    Android.content: Acceso y publicacin de datos en Android.13

  • 7/23/2019 Mdulo 2 Android

    35/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    36/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Android Android.net: Contiene la clase Uri, utilizada para acceder a diferentes

    contenidos.

    Android. gesture: Creacin, reconocimiento, carga y almacenamiento

    de gestos.

    Android.Graphics: Primitivas grficas.

    Android.location: Servicios de ubicacin geogrfica (GPS).

    Android.opengl: Clases OpenGL.

    Android.os: Acceso de nivel de sistema al entorno de Android.

    Android.provider: Clases relacionadas con Content Provider.

    Android.telephony: Acceso a funciones de telefona; que incluyen

    soporte tanto para la tecnologa CDMA (Code Divisin Multiple Access)

    como para GSM (Global System for Mobile communications).

    Android.text: Diseo de texto.

    Android.util: Coleccin de utilidades para manipulacin de texto,

    incluido XML.

    Android.view: Elementos de la interfaz de usuario.

    Android.webkit: Funciones de navegador.

    Android.widget: Elementos adicionales de la interfaz de usuario.

    Algunos de estos paquetes son fundamentales para el desarrollo de

    aplicaciones Android, como android.app, android.viewy, android.content. Otros

    se utilizan en funcin del tipo de aplicacin creada.No todos los dispositivos Android tendrn el mismo hardware ni las mismas

    prestaciones de conectividad mvil, de modo que algunos elementos del SDK

    son opcionales. Algunos dispositivos admitirn estas funciones y otros no. Es

    importante que una aplicacin se degrade con elegancia si una funcin no est

    disponible en un determinado modelo. Los paquetes de Java que tener en

    cuenta son los que dependen de hardware y caractersticas de red concretos,

    como los servicios basados en ubicacin que incluyen GPS y tecnologas

    inalmbricas como Bluetooth, IrDA y Wi-Fi (802.11).Esta es una rpida introduccin a las interfaces de programacin del SDK de

    Android. En apartados posteriores detallaremos las bibliotecas de clases, de

    modo que nos centraremos en las herramientas necesarias para crear

  • 7/23/2019 Mdulo 2 Android

    37/396

    aplicaciones de Android.

    Antes de crear una de estas aplicaciones, veremos el SDK y sus componentes

    en el marco del entorno Eclipse.Tras instalar el SDK de Android junto al complemento ADT para Eclipse, ya

    podemos explorar el entorno de desarrollo. Aunque no sea una herramienta

    indispensable para el desarrollo de Android, Eclipse desempea una

    importante funcin no slo por proporcionar un entorno avanzado de

    compilacin y depuracin Java, sino tambin porque con los ADT en Eclipse

    podemos gestionar y controlar prcticamente todos los aspectos de nuestras

    aplicaciones Android directamente desde el IDE de Eclipse.14

  • 7/23/2019 Mdulo 2 Android

    38/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    39/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidLas principales caractersticas del entorno Eclipse relacionadas con el

    desarrollo de Android son las siguientes: Un entorno avanzado de desarrollo Java que incluye compilacin de

    cdigo fuente Java, autocompletar clases e integracin de Javadoc.

    Depuracin de nivel de cdigo fuente.

    Administracin e inicio de perfiles de emulador de Android.

    Servicio de Monitorizacin de Depuracin Dalvik (DDMS):

    Vistas de subprocesos y pilas.

    Administracin de sistemas de archivos del emulador.

    Control de redes de datos y voz.

    Control del emulador.

    Registro de sistema y aplicaciones.Eclipse incorpora el paradigma de "perspectivas", en las que el diseo de la

    pantalla presenta un conjunto coherente de ventanas y herramientas

    relacionadas. Las ventanas y herramientas incluidas en la perspectiva Eclipse

    se denominan "vistas". Al desarrollar aplicaciones Android, hay dos

    perspectivas de Eclipse especialmente relevantes: la perspectiva Java y la

    perspectiva DDMS. Adems de estas, est disponible la perspectiva de

    depuracin Debug, muy til para depurar aplicaciones de Android. Para

    cambiar entre las perspectivas disponibles, utilice el men Open Perspective,

    situado bajo el men Window en el IDE de Eclipse. A continuacin veremos las

    caractersticas de las perspectivas Java y DDMS, y cmo adecuarlas al

    desarrollo de Android.

    Perspectiva JavaEn la perspectiva Java se desarrollan las aplicaciones de Android. Incluye

    numerosas vistas para asistir en el proceso de desarrollo. La vista Package

    Explorer nos permite ver los proyectos de Java en el espacio de trabajo.En la perspectiva Java es donde se edita el cdigo fuente de Java. Cada vez

    que guarda el archivo de cdigo fuente, se compila automticamente de fondo

    por JDT de Eclipse. No es necesario preocuparse por los detalles del JDT; lo

    importante es saber que funciona de fondo para que la experiencia con Java

    sea integral. Si el cdigo fuente tiene un error, los detalles se muestran en la

  • 7/23/2019 Mdulo 2 Android

    40/396

    vista Problems de la perspectiva.Una de las principales caractersticas de la perspectiva Java de Eclipse es la

    integracin entre el cdigo fuente y la vista Javadoc. Esta vista se actualiza

    automticamente para proporcionar la documentacin disponible sobre una

    clase o mtodo de Java seleccionado

    15

  • 7/23/2019 Mdulo 2 Android

    41/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    42/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidNotaEl entorno de Eclipse lo veremos ms detalladamente en este mismo

    mdulo con posterioridad.

    Adems de JDT, que compila archivos Java de cdigo fuente, los ADT

    compilan automticamente archivos especficos de Android como los de diseo

    y recursos. En un apartado posterior encontrar ms informacin sobre las

    herramientas subyacentes pero ahora nos centraremos en la perspectiva

    DDMS de Android.La perspectiva DDMS proporciona una especie de panel de control de un

    dispositivo Android en ejecucin o, en nuestro caso, un emulador en ejecucin.

    Analizaremos todos los detalles de la aplicacin, incluido cmo crearla y cmo

    ejecutarla en el emulador de Android pero primero veremos el DDMS para

    continuar el anlisis de las herramientas disponibles para el desarrollo de

    Android. La vista Devices muestra una sesin de emulador, con el ttulo

    emulator - tcp-5555. Esto significa que hay una conexin al emulador de

    Android en el puerto TCP/IP 5555. En dicha sesin, se ejecutan cinco

    procesos. El que nos interesa es com.manning. unlockingandroid, con el ID

    616.Nota

    A menos que pruebe una aplicacin P2P, por lo general slo tendr

    una sesin de emulador en ejecucin. Se pueden tener varias

    instancias del emulador en ejecucin en un mismo equipo de desarrollo,

    as como un dispositivo fsico Android conectado a nuestro equipo dedesarrollo.El registro es una herramienta esencial en el desarrollo de software, lo que nos

    lleva a la vista LogCat de la perspectiva DDMS. Esta vista muestra el registro

    del sistema y la aplicacin en el emulador. El uso de filtros en LogCat es muy

    aconsejable ya que permiten reducir el ruido de todas las entradas de registro y

    nos permiten centrarnos en las de nuestra aplicacin. En este caso, la lista

    incluye cuatro entradas que coinciden con los criterios del filtro. En breve

    analizaremos el cdigo fuente para saber cmo aadir mensajes al registro.

    Estas entradas de registro cuentan con una columna que muestra el ID de

  • 7/23/2019 Mdulo 2 Android

    43/396

    proceso, o PID, de la aplicacin. Como esperbamos, el PID de nuestras

    entradas es 616, lo que coincide con la instancia de la aplicacin ejecutada en

    el emulador.La vista File Explorer se muestra en la esquina superior derecha. Las

    aplicaciones de usuario, es decir, las que creamos, se implementan con la

    extensin. APK y se almacenan en el directorio /data/app del dispositivo16

  • 7/23/2019 Mdulo 2 Android

    44/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    45/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Android

    Android. Esta vista tambin permite operaciones de sistema de archivos como

    copiar y eliminar archivos.Evidentemente, la posibi lidad de examinar el sistema de archivos de nuestro

    telfono mvil es una gran comodidad. Es una agradable funcin de desarrollo

    de mviles, en el que solemos depender de crpticos mensajes emergentes

    para sortear los procesos de desarrollo y depuracin de aplicaciones. Con el

    acceso al sistema de archivos, podemos trabajar con stos y copiarlos a y

    desde nuestra plataforma de desarrollo con toda facilidad.

    Adems de explorar las aplicaciones en ejecucin, la perspectiva DDMS

    proporciona herramientas para controlar el entorno emulado. Por ejemplo, la

    vista Emulator Control permite probar distintas caractersticas de conectividad

    de redes de voz y datos, como por ejemplo simular una llamada o recibir un

    SMS.DDMS tambin proporciona visibilidad y control sobre el emulador de Android y

    es una herramienta muy til para evaluar nuestras aplicaciones. Antes de pasar

    a la creacin y prueba de aplicaciones Android, debe comprender qu sucede

    entre bastidores y habilitar la funcionalidad de DDMS.Herramientas de lnea de comandosEl SDK de Android incorpora diversas herramientas de lnea de comandos

    localizadas en el subdirectorio de herramientas de la instalacin. Mientras que

    Eclipse y los ADT proporcionan un gran control sobre nuestro entorno de

    desarrollo de Android, en ocasiones necesitamos mayor control, en especial si

    tenemos en cuenta las prestaciones y comodidad de la creacin de secuenciasde comandos en una plataforma de desarrollo. Analizaremos dos de las

    herramientas de lnea de comandos del SDK de Android.ConsejoEs aconsejable aadir el directorio tools a la ruta de bsqueda. Por

    ejemplo, si ha instalado el SDK en c: \sof tware\google\androidsdk puede

    aadirlo a la ruta mediante la siguiente operacin en una ventana de

    lnea de comandos (Windows):- Set path=%path%;c:\software\google\androidsdk\tools;O utilizar el siguiente comando para Mac OS X y Linux:

  • 7/23/2019 Mdulo 2 Android

    46/396

    - export PATH=$PATH:/ruta_al_directorio_de_Android_SDK/tools17

  • 7/23/2019 Mdulo 2 Android

    47/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    48/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidHerramienta de compresin de activos de AndroidSeguramente se pregunte cmo se procesa el archivo main. xml y de dnde

    proviene el archivo R. j ava, y quin comprime el archivo de aplicacin en el

    archivo apk. Se trata de la herramienta de compresin de activos de Android,

    tambin denominada aapt (Android Asset Packaging Tool) en la lnea de

    comandos. Es una herramienta verstil que combina la funcionalidad de pkzip o

    jar junto con un compilador de recursos especfico de Android. En funcin de

    las opciones de lnea de comandos proporcionadas, aapt adopta diversas

    formas y nos ayuda en las tareas de diseo. Para comprobar su funcionalidad,

    basta con ejecutar aapt desde la lnea de comandos sin argumentos. Se

    mostrar un detallado mensaje de uso.Mientras que aapt colabora con las tareas de diseo, otra herramienta, Debug

    Bridge, nos permite interactuar con el emulador en tiempo de ejecucin.Debug BridgeLa utilidad ADB (Android Debug Bridge), situada en el directorio platform-tools

    del SDK de Android, nos permite interactuar con el emulador de Android

    directamente desde la lnea de comandos. Seguramente en alguna ocasin

    habr deseado desplazarse por el sistema de archivos de su telfono

    inteligente. Ahora es posible hacerlo con ADB. Funciona como aplicacin

    cliente/servidor basada en TCP.

    Aunque existen un par de procesos de fondo que se ejecutan en el equipo de

    desarrollo y en el emulador para habilitar la funcionalidad, lo importante es que

    al ejecutar adb, tenemos acceso a una instancia en ejecucin del emulador deAndroid. A continuacin le mostramos ejemplos de uso de adb. En primer

    lugar, veamos si existen sesiones del emulador en ejecucin:adb devicesEste comando devuelve una lista de emuladores disponibles. Nos conectamos

    a la primera sesin para ver si nuestra aplicacin est instalada. Para

    conectarnos, se utiliza la sintaxis adb Shell. Es como nos conectaramos si

    tuviramos una nica sesin activa del emulador pero al haber dos en

    ejecucin, debemos especificar el nmero de serie o identificador, para

    conectarnos a la sesin adecuada:

  • 7/23/2019 Mdulo 2 Android

    49/396

    adb s numerodeserie shellEsta funcin resulta de lo ms prctica a la hora de eliminar un archivo

    concreto del sistema de archivos del emulador, terminar un proceso o

    interactuar con el entorno operativo del emulador.18

  • 7/23/2019 Mdulo 2 Android

    50/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    51/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidSi descargas una aplicacin de Internet, por ejemplo, puedes usar el comando

    adb para su instalacin:adb (-s numerodeserie) Shell install unaaplicacin.apkInstala la aplicacin una aplicacin en el emulador de Android. El archivo se

    copia en el directorio /data/app y se puede acceder al mismo desde Android.

    Del mismo modo, para eliminar una aplicacin, puede ejecutar adb para

    hacerlo desde el emulador. Por ejemplo, para eliminar la aplicacin Chapter2 .

    apk del sistema de archivos de un emulador en ejecucin, puede ejecutar el

    siguiente comando desde un terminal o la ventana de comandos de Windows:adb shell rm /data/app/Chapter2.apkEl dominio de las herramientas de lnea de comandos del SDK de Android no

    es un requisito para el desarrollo de aplicaciones pero conviene saber qu

    herramientas estn disponibles y sus prestaciones. Si necesita ayuda con el

    comando aapt o adb, basta con introducirlo en el terminal para acceder a una

    pgina de ayuda o de uso. En la documentacin del SDK encontrar

    informacin adicional sobre estas herramientas.

    NotaEl sistema de archivos de Android no es otro que el de Linux. Aunque el

    comando adb shell no proporcione un entorno de programacin

    demasiado completo, lejos de los propios de Linux y Mac OS X, s estn

    disponibles comandos tan bsicos como 1 s, p s, ki ll o rm. No obstante,

    los recin llegados a Linux deberan aprender algunos de los comandos

    ms elementales.TelnetOtra herramienta con la que debemos familiarizarnos es telnet. sta nos

    permite conectarnos a un sistema remoto mediante una interfaz de usuario

    basada en caracteres. En este caso, el sistema remoto es la consola del

    emulador, al que conectamos mediante:telnet localhost 5554

    En este caso, localhost representa el equipo local de desarrollo, donde se haya

    iniciado el emulador, ya que depende de la direccin IP 127.0.0.1 del equipo.

    Se preguntar por qu el puerto 5554. Si recuerda, al utilizar adb para buscar

  • 7/23/2019 Mdulo 2 Android

    52/396

    instancias del emulador en ejecucin, el resultado inclua un nombre con un

    nmero. El primer emulador se suele encontrar en el puerto IP 5554.19

  • 7/23/2019 Mdulo 2 Android

    53/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    54/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Android

    AtencinEn las primeras versiones del SDK de Android, el puerto del emulador

    era el 5555, mientras que el puerto de la consola Android, donde se

    realiza la conexin va Telnet, era el 5554, o bien un nmero inferior en

    una unidad al mostrado por DDMS . Si aparecen dificultades a la hora de

    identificar el puerto por el que realizar la conexin, ejecutaremos

    netstat en nuestro equipo de desarrollo para encontrarlo. Es importante

    recordar que el puerto de escucha de un dispositivo fsico Android es el

    5037.

    Al utilizar una conexin telnet al emulador contamos con una ventana de lnea

    de comandos para configurarlo en tiempo de ejecucin y probar as funciones

    telefnicas como llamadas y mensajes de texto.Conceptos de programacin lgicaNavega y descubrehttp://books.google.es/books?id=uGaTdiXKOrAC&printsec=frontcover&hl

    =es#v=onepage&q&f=false

    Se recomienda ir al siguiente link para complementar con conocimientos de

    JAVA.Navega y descubrehttp://tutorialjava7.wordpress.com/Es requisito indispensable para el desarrollo de aplicaciones sobre dispositivos

    Android adems de tener clara la programacin orientada a objetos. El

    cometido del curso no es aprender el lenguaje Java (dara para un solo

    monogrfico) pero s que al ser un curso abierto y accesible a cualquier

    alumno he considerado hacer una breve resea. Para ello me he nutrido de un

    monogrfico pblico y accesible desde Internet que, para quien desee

    prosperar en la materia, recomiendo su lectura por la facilidad de compresin.

    Bsicamente he seleccionado los apartados ms relevantes, puedes leerlos a

    continuacin.

    20

  • 7/23/2019 Mdulo 2 Android

    55/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    56/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidIntroduccin a JavaNotaJava surgi en 1991 cuando un grupo de ingenieros de Sun

    Microsystems trataron de disear un nuevo lenguaje de programacin

    destinado a electrodomsticos. La reducida potencia de clculo y

    memoria de los electrodomsticos llev a desarrollar un lenguaje sencillo

    capaz de generar cdigo de tamao muy reducido.Debido a la existencia de distintos tipos de CPU y a los continuos

    cambios, era importante conseguir una herramienta independiente del

    tipo de CPU utilizada. Desarrollaron un cdigo neutro que no dependa

    del tipo de electrodomstico, el cual se ejecutaba sobre una mquina

    hipottica o virtual denominada Java Virtual Machine (JVM). Era la JVM

    quien interpretaba el cdigo neutro convirtindolo a cdigo particular de

    la CPU utilizada. Esto permita lo que luego se ha convertido en el

    principal lema del lenguaje: Write Once, Run Everywhere. A pesar de

    los esfuerzos realizados por sus creadores, ninguna empresa de

    electrodomsticos se interes por el nuevo lenguaje.Como lenguaje de programacin para computadores, Java se introdujo a

    finales de 1995. La clave fue la incorporacin de un intrprete Java en la

    versin 2.0 del programa Netscape Navigator, produciendo una

    verdadera revolucin en Internet. Java 1.1 apareci a principios de 1997,

    mejorando sustancialmente la primera versin del lenguaje. Java 1.2,

    ms tarde rebautizado como Java 2, naci a finales de 1998.

    Al programar en Java no se parte de cero. Cualquier aplicacin que se

    desarrolle cuelga (o se apoya, segn como se quiera ver) en un gran nmero

    de clases preexistentes. Algunas de ellas las ha podido hacer el propio usuario,

    otras pueden ser comerciales, pero siempre hay un nmero muy importante de

    clases que forman parte del propio lenguaje (el API o Application

    Programming Interface de Java).

    Java incorpora en el propio lenguaje muchos aspectos que en cualquier otro

    lenguaje son extensiones propiedad de empresas de software o fabricantes de

    ordenadores (threads, ejecucin remota, componentes, seguridad, acceso a

  • 7/23/2019 Mdulo 2 Android

    57/396

    bases de datos, etc.).Por eso muchos expertos opinan que Java es el lenguaje ideal para aprender la

    informtica moderna, porque incorpora todos estos conceptos de un modo

    estndar, mucho ms sencillo y claro que con las citadas extensiones de otros

    lenguajes. Esto es consecuencia de haber sido diseado ms recientemente y

    por un nico equipo.21

  • 7/23/2019 Mdulo 2 Android

    58/396

  • 7/23/2019 Mdulo 2 Android

    59/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidEl principal objetivo del lenguaje Java es llegar a ser el nexo universal que

    conecte a los usuarios con la informacin, este est situado en el ordenador

    local, en un servidor de Web, en una base de datos o en cualquier otro lugar.

    Java es un lenguaje muy completo (de hecho se est convirtiendo en un

    macro-lenguaje: Java 1.0 tena 12 packages; Java 1.1 tena 23 y Java 1.2 tiene

    59).En cierta forma casi todo depende de casi todo. Por ello, conviene aprenderlo

    de modo interactivo: primero una visin muy general, que se va refinando en

    sucesivas interacciones. Una forma de hacerlo es, empezar con un ejemplo

    completo en el que ya aparecen algunas de las caractersticas ms

    importantes.DefinicinLa compaa Sun describe el lenguaje Java como simple, orientado a

    objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra,

    portable, de altas prestaciones, multitarea y dinmico. Adems de una

    serie de halagos por parte de Sun hacia su propia criatura, el hecho es

    que todo ello describe bastante bien el lenguaje Java, aunque en

    algunas de esas caractersticas el lenguaje sea todava bastante

    mejorable.Qu es Java 2?Java 2 (antes llamado Java 1.2 o JDK 1.2) es la tercera versin importante del

    lenguaje de programacin Java.

    No hay cambios conceptuales importantes respecto a Java 1.1 (en Java 1.1 slos hubo respecto a Java 1.0), sino extensiones y ampliaciones, lo cual hace

    que a muchos efectos -por ejemplo, para esta introduccin- sea casi lo mismo

    trabajar con Java 1.1 o con Java 1.2.Los programas desarrollados en Java presentan diversas ventajas frente a los

    desarrollados en otros lenguajes como C/C++. La ejecucin de programas en

    Java tiene muchas posibilidades:

  • 7/23/2019 Mdulo 2 Android

    60/396

    Ejecucin como aplicacin independiente (Stand-alone Application).

    Ejecucin como applet.

    Ejecucin como servlet, etc.22

  • 7/23/2019 Mdulo 2 Android

    61/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    62/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidDefinicinUn applet es una aplicacin especial que se ejecuta dentro de un

    navegador o browser (por ejemplo Netscape Navigator o Internet

    Explorer) al cargar una pgina HTML desde un servidor Web. El applet

    se descarga desde el servidor y no requiere instalacin en el ordenador

    donde se encuentra el browser. Un servlet es una aplicacin sin

    interface grfica que se ejecuta en un servidor de Internet. La ejecucin

    como aplicacin independiente es anloga a los programas

    desarrollados con otros lenguajes.

    Adems de incorporar la ejecucin como Applet, Java permite fcilmente el

    desarrollo tanto de arquitecturas cliente-servidor como de aplicaciones

    distribuidas, consistentes en crear aplicaciones capaces de conectarse a otros

    ordenadores y ejecutar tareas en varios ordenadores simultneamente,

    repartiendo por lo tanto el trabajo. Aunque tambin otros lenguajes de progra-

    macin permiten crear aplicaciones de este tipo, Java incorpora en su propio

    API estas funcionalidades.El entorno de desarrollo de JavaExisten distintos programas comerciales que permiten desarrollar cdigo Java.La compaa Sun, creadora de Java, distribuye gratuitamente el Java(tm)

    Development Kit (JDK).Java(tm) Development Kit (JDK).Se trata de un conjunto de programas y libreras que permiten

    desarrollar, compilar y ejecutar programas en Java. Incorpora adems laposibilidad de ejecutar parcialmente el programa, deteniendo la

    ejecucin en el punto deseado y estudiando en cada momento el valor

    de cada una de las variables (con el denominado Debugger).Cualquier programador con un mnimo de experiencia sabe que una parte muy

    importante (muchas veces la mayor parte) del tiempo destinado a la

    elaboracin de un programa se destina a la deteccin y correccin de errores.

    Existe tambin una versin reducida del JDK, denominada JRE (Java Runtime

    Environment) destinada nicamente a ejecutar cdigo Java (no permite

    compilar).

  • 7/23/2019 Mdulo 2 Android

    63/396

    Los IDE (Integrated Development Environment), tal y como su nombre

    indica, son entornos de desarrollo integrados. En un mismo programa es

    posible escribir el cdigo Java, compilarlo y ejecutarlo sin tener que cambiar de

    aplicacin. Algunos incluyen una herramienta para realizar Debug

    grficamente, frente a la versin que incorpora el JDK basada en la utilizacin

    de una consola (denominada habitualmente ventana de comandos de MS-23

  • 7/23/2019 Mdulo 2 Android

    64/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    65/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidDOS, en Windows NT/95/98) bastante difcil y pesada de utilizar. Estos

    entornos integrados permiten desarrollar las aplicaciones de forma mucho ms

    rpida, incorporando en muchos casos libreras con componentes ya

    desarrollados, los cuales se incorporan al proyecto o programa. Como

    inconvenientes se pueden sealar algunos fallos de compatibilidad entre

    plataformas y ficheros resultantes de mayor tamao que los basados en clases

    estndar.El compilador de JavaSe trata de una de las herramientas de desarrollo incluidas en el JDK. Realiza

    un anlisis de sintaxis del cdigo escrito en los ficheros fuente de Java (con

    extensin *.java). Si no encuentra errores en el cdigo genera los ficheros

    compilados (con extensin *.class). En otro caso muestra la lnea o lneas

    errneas. En el JDK de Sun dicho compilador se llama javac.exe. Tiene

    numerosas opciones, algunas de las cuales varan de una versin a otra. Se

    aconseja consultar la documentacin de la versin del JDK utilizada para

    obtener una informacin detallada de las distintas posibilidades.La Java Virtual MachineTal y como se ha comentado al comienzo del apartado, la existencia de

    distintos tipos de procesadores y ordenadores llev a los ingenieros de Sun a la

    conclusin de que era muy importante conseguir un software que no

    dependiera del tipo de procesador utilizado. Se plante la necesidad de

    conseguir un cdigo capaz de ejecutarse en cualquier tipo de mquina. Una

    vez compilado no debera ser necesaria ninguna modificacin por el hecho de

    cambiar de procesador o de ejecutarlo en otra mquina. La clave consisti en

    desarrollar un cdigo neutro el cual estuviera preparado para ser ejecutado

    sobre una mquina hipottica o virtual, denominada Java Virtual Machine

    (JVM). Es esta JVM quien interpreta este cdigo neutro convirtindolo a cdigo

    particular de la CPU utilizada. Se evita tener que realizar un programa diferente

    para cada CPU o plataforma.La JVM es el intrprete de Java. Ejecuta los bytecodes (ficheros compilados

    con extensin *.class) creados por el compilador de Java (javac.exe). Tiene

    numerosas opciones entre las que destaca la posibilidad de utilizar el

  • 7/23/2019 Mdulo 2 Android

    66/396

    denominado JIT (Just-In-Time Compiler), que puede mejorar entre 10 y 20

    veces la velocidad de ejecucin de un programa.24

  • 7/23/2019 Mdulo 2 Android

    67/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    68/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidLas variables PATH y CLASSPATHEl desarrollo y ejecucin de aplicaciones en Java exige que las herramientas

    para compilar (javac.exe) y ejecutar (java.exe) se encuentren accesibles. El

    ordenador, desde una ventana de comandos de MS-DOS, slo es capaz de

    ejecutar los programas que se encuentran en los directorios indicados en la

    variable PATH del ordenador (o en el directorio activo). Si se desea compilar o

    ejecutar cdigo en Java, el directorio donde se encuentran estos programas

    (java.exe y javac.exe) deber encontrarse en el PATH. Tecleando PATH en

    una ventana de comandos de MS-DOS se muestran los nombres de directorios

    incluidos en dicha variable de entorno.

    Java utiliza adems una nueva variable de entorno denominada CLASSPATH,

    la cual determina dnde buscar tanto las clases o libreras de Java (el API de

    Java) como otras clases de usuario. A partir de la versin 1.1.4 del JDK no es

    necesario indicar esta variable, salvo que se desee aadir conjuntos de clases

    de usuario que no vengan con dicho JDK. La variable CLASSPATH puede

    incluir la ruta de directorios o ficheros *.zip o *.jar en los que se encuentren los

    ficheros *.class. En el caso de los ficheros *.zip hay que observar que los

    ficheros en l incluidos no deben estar comprimidos.En el caso de archivos *.jar existe una herramienta (jar.exe), incorporada en el

    JDK, que permite generar estos ficheros a partir de los archivos compilados

    *.class. Los ficheros *.jar son archivos comprimidos y por lo tanto ocupan

    menos espacio que los archivos * class por separado o que el fichero *.zip

    equivalente.Una forma general de indicar estas dos variables es crear un fichero batch de

    MS-DOS (*.bat) donde se indiquen los valores de dichas variables. Cada vez

    que se abra una ventana de MS-DOS ser necesario ejecutar este fichero *.bat

    para asignar adecuadamente estos valores. Un posible fichero llamado

    jdk117.bat, podra ser como sigue:set JAVAPATH=C:\jdk1.1.7

    set PATH=.;%JAVAPATH%\bin;%PATH%

    set CLASSPATH=.\;%JAVAPATH%\lib\classes.zip;%CLASSPATH%lo cual sera vlido en el caso de que el JDK estuviera situado en el directorio

  • 7/23/2019 Mdulo 2 Android

    69/396

    C:\jdk1.1.7.Si no se desea ejecutar este fichero cada vez que se abre una consola de MS-

    DOS es necesario indicar estos cambios de forma permanente. La forma de

    hacerlo difiere entre Windows 95/98 y Windows NT. En Windows 95/98 es

    necesario modificar el fichero Autoexec.bat situado en C:\, aadiendo las lneas

    antes mencionadas. Una vez rearrancado el ordenador estarn presentes en

    cualquier consola de MS-DOS que se cree. La modificacin al fichero

    Autoexec.bat en Windows 95/98 ser la siguiente:25

  • 7/23/2019 Mdulo 2 Android

    70/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    71/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Androidset JAVAPATH=C:\jdk1.1.7

    set PATH=.;%JAVAPATH%\bin;%PATH%

    set CLASSPATH=

    En la tercera lnea debe incluir la ruta de los ficheros donde estn las clases de

    Java. En el caso de utilizar Windows NT se aadir la variable PATH en el

    cuadro de dilogo que se abre con Start -> Settings -> Control Panel -> System

    -> Environment -> User Variables for NombreUsuario.Tambin es posible utilizar la opcin classpath en el momento de llamar al

    compilador javac.exe o al intrprete java.exe. En este caso los ficheros *.jar

    deben ponerse con el nombre completo en el CLASSPATH: no basta poner el

    PATH o directorio en el que se encuentra. Por ejemplo, si se desea compilar y

    ejecutar el fichero ContieneMain.java, y ste necesitara la librera de clases

    G:\MyProject\OtherClasses.jar, adems de las incluidas en el CLASSPATH, la

    forma de compilar y ejecutar sera:

    javac -classpath .\;G:\MyProject\OtherClasses.jar

    ContieneMain.java java -classpath

    .\;G:\MyProject\OtherClasses.jar ContieneMainSe aconseja consultar la ayuda correspondiente a la versin que se est

    utilizando, debido a que existen pequeas variaciones entre las distintas

    versiones del JDK.Cuando un fichero filename.java se compila y en ese directorio existe ya un

    fichero filename.class, se comparan las fechas de los dos ficheros. Si el fichero

    filenamejava es ms antiguo que el filename.class no se produce un nuevofichero filename.class. Esto slo es vlido para ficheros *.class que se

    corresponden con una clase public.Estructura General de un Programa JavaEl anterior ejemplo presenta la estructura habitual de un programa realizado en

    cualquier lenguaje orientado a objetos u OOP (Object Oriented Programming),

    y en particular en el lenguaje Java. Aparece una clase que contiene el

    programa principal (aquel que contiene la funcin main()) y algunas clases de

    usuario (las especficas de la aplicacin que se est desarrollando) que son

    utilizadas por el programa principal. Los ficheros fuente tienen la extensin

  • 7/23/2019 Mdulo 2 Android

    72/396

    *.java, mientras que los ficheros compilados tienen la extensin *.class.Un fichero fuente (*.java) puede contener ms de una clase, pero slo una

    puede ser public. El nombre del fichero fuente debe coincidir con el de la clase

    public (con la extensin *.java). Si por ejemplo en un fichero aparece la

    declaracin (public class MiClase {...}) entonces el nombre del fichero deber

    ser MiClase.java. Es importante que coincidan maysculas y minsculas ya

    que MiClase.java y miclasejava seran clases diferentes para Java. Si la clase26

  • 7/23/2019 Mdulo 2 Android

    73/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    74/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Androidno es public, no es necesario que su nombre coincida con el del fichero. Una

    clase puede ser public o package (default), pero no private o protected. Estos

    conceptos se explican posteriormente.

    De ordinario una aplicacin est constituida por varios ficheros *.class. Cada

    clase realiza unas funciones particulares, permitiendo construir las aplicaciones

    con gran modularidad e independencia entre clases. La aplicacin se ejecuta

    por medio del nombre de la clase que contiene la funcin main() (sin la

    extensin *.class). Las clases de Java se agrupan en packages, que son

    libreras de clases. Si las clases no se definen como pertenecientes a un

    package, se utiliza un package por defecto (default) que es el directorio activo.

    Concepto de ClaseDefinicinUna clase es una agrupacin de datos (variables o campos) y de

    funciones (mtodos) que operan sobre esos datos. A estos datos y

    funciones pertenecientes a una clase se les denomina variables y

    mtodos o funciones miembro. La programacin orientada a objetos se

    basa en la programacin de clases. Un programa se construye a partir

    de un conjunto de clases.Una vez definida e implementada una clase, es posible declarar elementos de

    esta clase de modo similar a como se declaran las variables del lenguaje (de

    los tipos primitivos int, double, String,). Los elementos declarados de una

    clase se denominan objetos de la clase. De una nica clase se pueden declarar

    o crear numerosos objetos. La clase es lo genrico: es el patrn o modelo paracrear objetos. Cada objeto tiene sus propias copias de las variables miembro,

    con sus propios valores, en general distintos de los dems objetos de la clase.

    Las clases pueden tener variables static, que son propias de la clase y no de

    cada objeto.HerenciaLa herencia permite que se pueden definir nuevas clases basadas en clases

    existentes, lo cual facilita re-utilizar cdigo previamente desarrollado. Si una

    clase deriva de otra (extends) hereda todas sus variables y mtodos. La clase

    derivada puede aadir nuevas variables y mtodos y/o redefinir las variables y

  • 7/23/2019 Mdulo 2 Android

    75/396

    mtodos heredados.En Java, a diferencia de otros lenguajes orientados a objetos, una clase slo

    puede derivar de una nica clase, con lo cual no es posible realizar herencia

    mltiple en base a clases. Sin embargo es posible simular la herencia mltiple

    en base a las interfaces.

    27

  • 7/23/2019 Mdulo 2 Android

    76/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    77/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidConcepto de InterfaceDefinicinUna interface es un conjunto de declaraciones de funciones. Si una

    clase implementa (implements) una interface, debe definir todas las

    funciones especificadas por la interface. Una clase puede implementar

    ms de una interface, representando una forma alternativa de la

    herencia mltiple.

    A su vez, una interface puede derivar de otra o incluso de varias interfaces, en

    cuyo caso incorpora todos los mtodos de las interfaces de las que deriva.

    Concepto de PackageDefinicinUn package es una agrupacin de clases. Existen una serie de

    packages incluidos en el lenguaje (ver jerarqua de clases que aparece

    en el API de Java).

    Adems el usuario puede crear sus propios packages. Lo habitual es juntar en

    packages las clases que estn relacionadas. Todas las clases que formen

    parte de un package deben estar en el mismo directorio.La jerarqua de clases de Java (API)Durante la generacin de cdigo en Java, es recomendable y casi necesario

    tener siempre a la vista la documentacin on-line del API de Java 1.1 Java

    1.2. En dicha documentacin es posible ver tanto la jerarqua de clases, es

    decir la relacin de herencia entre clases, como la informacin de los distintos

    packages que componen las libreras base de JAVA.Es importante distinguir entre lo que significa herencia y package. Un package

    es una agrupacin arbitraria de clases, una forma de organizar las clases. La

    herencia sin embargo consiste en crear nuevas clases en base a otras ya

    existentes. Las clases incluidas en un package no derivan por lo general de

    una nica clase.En la documentacin on-line se presentan ambas visiones: Package Index y

    Class Hierarchy, tanto en Java 1.1 como en Java 1.2, con pequeas

    variantes. La primera presenta la estructura del API de Java agrupada por

    packages, mientras que en la segunda aparece la jerarqua de clases. Hay que

  • 7/23/2019 Mdulo 2 Android

    78/396

    28

  • 7/23/2019 Mdulo 2 Android

    79/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    80/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Androidresaltar una vez ms el hecho de que todas las clases en Java son derivadas

    de la clase java.lang.Object, por lo que heredan todos los mtodos y variables

    de sta.

    Si se selecciona una clase en particular, la documentacin muestra una

    descripcin detallada de todos los mtodos y variables de la clase. A su vez

    muestra su herencia completa (partiendo de la clase java.lang.Object).Clases en javaLas clases son el centro de la Programacin Orientada a Objetos (OOP -

    Object Oriented Programming). Algunos de los conceptos ms importantes de

    la POO son los siguientes:1. Encapsulacin. Las clases pueden ser declaradas como pblicas

    (public) y como package (accesibles slo para otras clases del package).

    Las variables miembro y los mtodos pueden ser public, private,

    protected y package. De esta forma se puede controlar el acceso y evitar

    un uso inadecuado.2. Herencia. Una clase puede derivar de otra (extends), y en ese caso

    hereda todas sus variables y mtodos. Una clase derivada puede aadir

    nuevas variables y mtodos y/o redefinir las variables y mtodos

    heredados.3. Polimorfismo. Los objetos de distintas clases pertenecientes a una

    misma jerarqua o que implementan una misma interface pueden

    tratarse de una forma general e individualizada, al mismo tiempo. Esto,

    como se ha visto en el ejemplo del anterior apartado, facilita laprogramacin y el mantenimiento del cdigo.

    En este apartado se presentan las clases y las interfaces tal como estn

    implementadas en el lenguaje Java.Conceptos bsicosConcepto de ClaseUna clase es una agrupacin de datos (variables o campos) y de

    funciones (mtodos) que operan sobre esos datos. La definicin de una

    clase se realiza en la siguiente forma:[public] class Classname {

  • 7/23/2019 Mdulo 2 Android

    81/396

    // definicin de variables y mtodos

    }29

  • 7/23/2019 Mdulo 2 Android

    82/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    83/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidDonde la palabra public es opcional: si no se pone, la clase tiene la

    visibilidad por defecto, esto es, slo es visible para las dems clases del

    package. Todos los mtodos y variables deben ser definidos dentro del

    bloque {...} de la clase.Un objeto (en ingls, instance) es un ejemplar concreto de una clase.

    Las clases son como tipos de variables, mientras que los objetos son

    como variables concretas de un tipo determinado.Classname

    unObjeto;

    Classname

    otroObjeto;

    A continuacin se enumeran algunas caractersticas importantes de las clases:1. Todas las variables y funciones de Java deben pertenecer a una clase.

    No hay variables y funciones globales.2. Si una clase deriva de otra (extends), hereda todas sus variables y

    mtodos.

    3. Java tiene una jerarqua de clases estndar de la que pueden derivar las

    clases que crean los usuarios.4. Una clase slo puede heredar de una nica clase (en Java no hay

    herencia mltiple). Si al definir una clase no se especifica de qu clase

    deriva, por defecto la clase deriva de Object. La clase Object es la base

    de toda la jerarqua de clases de Java.

    5. En un fichero se pueden definir varias clases, pero en un fichero no

    puede haber ms que una clase public. Este fichero se debe llamar

    como la clase public que contiene con extensin *.java. Con algunas

    excepciones, lo habitual es escribir una sola clase por fichero.6. Si una clase contenida en un fichero no es public, no es necesario que el

    fichero se llame como la clase.7. Los mtodos de una clase pueden referirse de modo global al objeto de

    esa clase al que se aplican por medio de la referencia this.8. Las clases se pueden agrupar en packages, introduciendo una lnea al

    comienzo del fichero (package packageName;). Esta agrupacin en

  • 7/23/2019 Mdulo 2 Android

    84/396

    packages est relacionada con la jerarqua de directorios y ficheros en la

    que se guardan las clases.30

  • 7/23/2019 Mdulo 2 Android

    85/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    86/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidConcepto de InterfaceUna interface es un conjunto de declaraciones de funciones. Si una

    clase implementa (implements) una interface, debe definir todas las

    funciones especificadas por la interface. Las interfaces pueden definir

    tambin variables finales (constantes). Una clase puede implementar

    ms de una interface, representando una alternativa a la herencia

    mltiple.En algunos aspectos los nombres de las interfaces pueden utilizarse en lugar

    de las clases. Por ejemplo, las interfaces sirven para definir referencias a

    cualquier objeto de cualquiera de las clases que implementan esa interface.

    Con ese nombre o referencia, sin embargo, slo se pueden utilizar los mtodos

    de la interface. ste es un aspecto importante del polimorfismo.Una interface puede derivar de otra o incluso de varias interfaces, en cuyo caso

    incorpora las declaraciones de todos los mtodos de las interfaces de las que

    deriva (a diferencia de las clases, las interfaces de Java s tienen herencia

    mltiple).Ejemplo de definicin de una clase

    A continuacin se reproduce como ejemplo la clase Crculo.// fichero Circulo.javapublic class Circulo extends

    Geometria { static int

    numCirculos = 0;

    public static final double

    PI=3.14159265358979323846; public double x,

    y, r;public Circulo(double x, double y,

    double r) { this.x=x; this.y=y;

    this.r=r; numCirculos++; }public Circulo(double r) { this(0.0, 0.0,

    r); } public Circulo(Circulo c) { this(c.x,

    c.y, c.r); } public Circulo() { this(0.0,

    0.0, 1.0); }

  • 7/23/2019 Mdulo 2 Android

    87/396

    public double perimetro() { return 2.0 * PI * r; }public double area() { return PI * r * r; }

    // mtodo de objeto para comparar crculos31

  • 7/23/2019 Mdulo 2 Android

    88/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    89/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Androidpublic Circulo elMayor(Circulo c) {

    if (this.r>=c.r) return this; else

    return c;

    }

    // mtodo de clase para comparar crculos

    public static Circulo elMayor(Circulo c, Circulo d) {

    if (c.r>=d.r) return c; else

    return d; }

    } // fin de la clase CirculoEn este ejemplo se ve cmo se definen las variables miembro y los mtodos

    (cuyos nombres se han resaltado en negrita) dentro de la clase. Dichas

    variables y mtodos pueden ser de objeto o de clase (static). Se puede ver

    tambin cmo el nombre del fichero coincide con el de la clase public con la

    extensin *.java.Variables miembro

    A diferencia de la programacin algortmica clsica, que estaba centrada en las

    funciones, la programacin orientada a objetos est centrada en los datos.

    Una clase est constituida por unos datos y unos mtodos que operan sobre

    esos datos.Mtodos (funciones miembro)Mtodos de objetoLos mtodos son funciones definidas dentro de una clase. Salvo los mtodos

    static o de clase, se aplican siempre a un objeto de la clase por medio deloperador punto (.). Dicho objeto es su argumento implcito. Los mtodos

    pueden adems tener otros argumentos explcitos que van entre parntesis, a

    continuacin del nombre del mtodo.La primera lnea de la definicin de un mtodo se llama declaracin o header;

    el cdigo comprendido entre las llaves {} es el cuerpo o body del mtodo.Considrese el siguiente mtodo tomado de la clase Crculo:

    public Circulo elMayor(Circulo c) {

    if (this.r>=c.r) // body

    return this; // body

  • 7/23/2019 Mdulo 2 Android

    90/396

    else // body

    return c;// body

    }// final del mtodo// header y comienzo del mtodo32

  • 7/23/2019 Mdulo 2 Android

    91/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    92/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidEl header consta del cualificador de acceso (public, en este caso), del tipo del

    valor de retorno (Circulo en este ejemplo, void si no tiene), del nombre de la

    funcin y de una lista de argumentos explcitos entre parntesis, separados

    por comas. Si no hay argumentos explcitos se dejan los parntesis vacos.Los mtodos tienen visibilidad directa de las variables miembro del objeto que

    es su argumento implcito, es decir, pueden acceder a ellas sin cualificarlas

    con un nombre de objeto y el operador punto (.). De todas formas, tambin se

    puede acceder a ellas mediante la referencia this, de modo discrecional (como

    en el ejemplo anterior con this.r) o si alguna variable local o argumento las

    oculta.

    El valor de retorno puede ser un valor de un tipo primitivo o una referencia.

    En cualquier caso no puede haber ms que un nico valor de retorno (que

    puede ser un objeto o un array). Se puede devolver tambin una referencia a

    un objeto por medio de un nombre de interface. El objeto devuelto debe

    pertenecer a una clase que implemente esa interface.Se puede devolver como valor de retorno un objeto de la misma clase que el

    mtodo o de una sub-clase, pero nunca de una super-clase.Los mtodos pueden definir variables locales. Su visibilidad llega desde la

    definicin al final del bloque en el que han sido definidas. No hace falta

    inicializar las variables locales en el punto en que se definen, pero el

    compilador no permite utilizarlas sin haberles dado un valor. A diferencia de las

    variables miembro, las variables locales no se inicializan por defecto.

    Si en el header del mtodo se incluye la palabra native (Ej: public native voidmiMetodo();) no hay que incluir el cdigo o implementacin del mtodo. Este

    cdigo deber estar en una librera dinmica (Dynamic Link Library o DLL).

    Estas libreras son ficheros de funciones compiladas normalmente en lenguajes

    distintos de Java (C, C++, Fortran, etc.). Es la forma de poder utilizar

    conjuntamente funciones realizadas en otros lenguajes desde cdigo escrito en

    Java. Este tema queda fuera del caracter fundamentalmente introductorio de

    este manual.Un mtodo tambin puede declararse como synchronized (Ej: public

    synchronized double miMetodoSynch(){...}). Estos mtodos tienen la

  • 7/23/2019 Mdulo 2 Android

    93/396

    particularidad de que sobre un objeto no pueden ejecutarse simultneamente

    dos mtodos que estn sincronizados.Mtodos sobrecargados (overloaded)

    Al igual que C++, Java permite mtodos sobrecargados (overloaded), es

    decir, mtodos distintos que tienen el mismo nombre, pero que se diferencian

    por el nmero y/o tipo de los argumentos.

    A la hora de llamar a un mtodo sobrecargado, Java sigue unas reglas para

    determinar el mtodo concreto que debe llamar:33

  • 7/23/2019 Mdulo 2 Android

    94/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    95/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Android1. Si existe el mtodo cuyos argumentos se ajustan exactamente al tipo de

    los argumentos de la llamada (argumentos actuales), se llama ese

    mtodo.

    2. Si no existe un mtodo que se ajuste exactamente, se intenta promover

    los argumentos actuales al tipo inmediatamente superior (por ejemplo

    char a int, int a long, float a double, etc.) y se llama el mtodo

    correspondiente.3. Si slo existen mtodos con argumentos de un tipo ms restringido (por

    ejemplo, int en vez de long), el programador debe hacer un cast

    explcito en la llamada, responsabilizndose de esta manera de lo que

    pueda ocurrir.4. El valor de retorno no influye en la eleccin del mtodo sobrecargado.

    En realidad es imposible saber desde el propio mtodo lo que se va a

    hacer con l. No es posible crear dos mtodos sobrecargados, es decir

    con el mismo nombre, que slo difieran en el valor de retorno.Diferente de la sobrecarga de mtodos es la redefinicin. Una clase puede

    redefinir (override) un mtodo heredado de una superclase. Redefinir un

    mtodo es dar una nueva definicin. En este caso el mtodo debe tener

    exactamente los mismos argumentos en tipo y nmero que el mtodo

    redefinido. Este tema se ver de nuevo al hablar de la herencia.Paso de argumentos a mtodosEn Java los argumentos de los tipos primitivos se pasan siempre por valor.

    El mtodo recibe una copia del argumento actual; si se modifica esta copia, elargumento original que se incluy en la llamada no queda modificado. La forma

    de modificar dentro de un mtodo una variable de un tipo primitivo es incluirla

    como variable miembro en una clase y pasar como argumento una referencia a

    un objeto de dicha clase. Las referencias se pasan tambin por valor, pero a

    travs de ellas se pueden modificar los objetos referenciados.En Java no se pueden pasar mtodos como argumentos a otros mtodos (en

    C/C++ se pueden pasar punteros a funcin como argumentos). Lo que se

    puede hacer en Java es pasar una referencia a un objeto y dentro de la funcin

    utilizar los mtodos de ese objeto.

  • 7/23/2019 Mdulo 2 Android

    96/396

    Dentro de un mtodo se pueden crear variables locales de los tipos primitivos o

    referencias. Estas variables locales dejan de existir al terminar la ejecucin del

    mtodo. Los argumentos formales de un mtodo (las variables que aparecen

    en el header del mtodo para recibir el valor de los argumentos actuales) tienen

    categora de variables locales del mtodo.

    Si un mtodo devuelve this (es decir, un objeto de la clase) o una referencia a

    otro objeto, ese objeto puede encadenarse con otra llamada a otro mtodo de34

  • 7/23/2019 Mdulo 2 Android

    97/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    98/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO Androidla misma o de diferente clase y as sucesivamente. En este caso aparecern

    varios mtodos en la misma sentencia unidos por el operador punto (.),Por ejemplo,String numeroComoString = 8.978;

    float p = Float.valueOf(numeroComoString).floatValue();donde el mtodo valueOf(String) de la clase java.lang.Float devuelve un

    objeto de la clase Float sobre el que se aplica el mtodo floatValue(), que

    finalmente devuelve una variable primitiva de tipo float. El ejemplo

    anterior se poda desdoblar en las siguientes sentencias:

    String numeroComoString = 8.978;Float f = Float.valueOf(numeroComoString);

    float p = f.floatValue();Obsrvese que se pueden encadenar varias llamadas a mtodos por medio del

    operador punto (.) que, como todos los operadores de Java excepto los de

    asignacin, se ejecuta de izquierda a derecha.Mtodos de clase (static)

    Anlogamente, puede tambin haber mtodos que no acten sobre objetos

    concretos a travs del operador punto. A estos mtodos se les llama mtodos

    de clase o static. Los mtodos de clase pueden recibir objetos de su clase

    como argumentos explcitos, pero no tienen argumento implcito ni pueden

    utilizar la referencia this. Un ejemplo tpico de mtodos static son los mtodos

    matemticos de la clase java.lang.Math (sin(), cos(), exp(), pow(), etc.). De

    ordinario el argumento de estos mtodos ser de un tipo primitivo y se lepasar como argumento explcito. Estos mtodos no tienen sentido como

    mtodos de objeto.Los mtodos y variables de clase se crean anteponiendo la palabra static.

    Para llamarlos se suele utilizar el nombre de la clase, en vez del nombre de un

    objeto de la clase (por ejemplo, Math.sin(ang), para calcular el seno de un

    ngulo).

    Los mtodos y las variables de clase son lo ms parecido que Java tiene a las

    funciones y variables globales de C/C++ o Visual Basic.Constructores

  • 7/23/2019 Mdulo 2 Android

    99/396

    Un punto clave de la Programacin Orientada Objetos es el evitar informacin

    incorrecta por no haber sido correctamente inicializadas las variables. Java no

    permite que haya variables miembro que no estn inicializadas . Ya se ha dicho

    que Java inicializa siempre con valores por defecto las variables miembro de

    clases y objetos. El segundo paso en la inicializacin correcta de objetos es el

    uso de constructores.35

  • 7/23/2019 Mdulo 2 Android

    100/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    101/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidUn constructor es un mtodo que se llama automticamente cada vez que se

    crea un objeto de una clase. La principal misin del constructor es reservar

    memoria e inicializar las variables miembro de la clase.

    Los constructores no tienen valor de retorno (ni siquiera void) y su nombre es

    el mismo que el de la clase. Su argumento implcito es el objeto que se est

    creando.De ordinario una clase tiene varios constructores, que se diferencian por el

    tipo y nmero de sus argumentos (son un ejemplo tpico de mtodos

    sobrecargados). Se llama constructor por defecto al constructor que no tiene

    argumentos. El programador debe proporcionar en el cdigo valores iniciales

    adecuados para todas las variables miembro.Un constructor de una clase puede llamar a otro constructor previamente

    definido en la misma clase por medio de la palabra this. En este contexto, la

    palabra this slo puede aparecer en la primera sentencia de un constructor.El constructor de una sub-clase puede llamar al constructor de su super-

    clase por medio de la palabra super, seguida de los argumentos apropiados

    entre parntesis. De esta forma, un constructor slo tiene que inicializar por s

    mismo las variables no heredadas.El constructor es tan importante que, si el programador no prepara ningn

    constructor para una clase, el compilador crea un constructor por defecto,

    inicializando las variables de los tipos primitivos a su valor por defecto, y los

    Strings y las dems referencias a objetos a null. Si hace falta, se llama al

    constructor de la super-clase para que inicialice las variables heredadas.Al igual que los dems mtodos de una clase, los constructores pueden tener

    tambin los modificadores de acceso public, private, protected y package. Si

    un constructor es private, ninguna otra clase puede crear un objeto de esa

    clase. En este caso, puede haber mtodos public y static (factory methods)

    que llamen al constructor y devuelvan un objeto de esa clase.Dentro de una clase, los constructores slo pueden ser llamados por otros

    constructores o por mtodos static. No pueden ser llamados por los mtodos

    de objeto de la clase.Inicializadores

  • 7/23/2019 Mdulo 2 Android

    102/396

    Por motivos que se vern ms adelante, Java todava dispone de una tercera

    lnea de actuacin para evitar que haya variables sin inicializar correctamente.Son los inicializadores, que pueden ser static (para la clase) o de objeto. Inicializadores static36

  • 7/23/2019 Mdulo 2 Android

    103/396

    Formacin para crear y disear Contenidos Digitales para dispositivos mviles:

  • 7/23/2019 Mdulo 2 Android

    104/396

    Android

    Mdulo 2. El Kit de desarrollo de software para SO AndroidUn inicializador static es un algo parecido a un mtodo (un bloque {} de

    cdigo, sin nombre y sin argumentos, precedido por la palabra static) que

    se llama automticamente al crear la clase (al utilizarla por primera vez).

    Tambin se diferencia del constructor en que no es llamado para cada

    objeto, sino una sola vez para toda la clase.Los tipos primitivos pueden inicializarse directamente con asignaciones en

    la clase o en el constructor, pero para inicializar objetos o elementos ms

    complicados es bueno utilizar un inicializador (un bloque de cdigo {}),

    ya que permite gestionar excepciones con trycatch.Los inicializadores static se crean dentro de la clase, como mtodos sin

    nombre, sin argumentos y sin valor de retorno, con tan slo la palabra static

    y el cdigo entre llaves {...}. En una clase pueden definirse varios

    inicializadores static, que se llamarn en el orden en que han sido

    definidos.Los inicializadores static se pueden utilizar para dar valor a las variables

    static. Adems se suelen utilizar para llamar a mtodos nativos, esto es,

    a mtodos escritos por ejemplo en C/C++ (llamando a los mtodos

    System.load() o System.loadLibrary(), que leen las libreras nativas). Por

    ejemplo:static{

    System.loadLibrary("MyNa

    tiveLibrary"); }

    Inicializadores de objetoA partir de Java 1.1 existen tambin inicializadores de objeto, que no

    llevan la palabra static. Se utilizan para las clases annimas, que por no

    tener nombre no pueden tener constructor. En este caso, los inicializ