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
Top Related