Está en la página 1de 85

Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Análisis de tecnologías para aplicaciones en


dispositivos móviles.

Caso práctico

El uso generalizado en los últimos tiempos de dispositivos móviles como


smartPhones o PDA ha dado lugar a una gran demanda de software
para este nuevo tipo de hardware. Es por esta razón que Ada, socia fundadora
de la empresa BK Programación y con cierta experiencia en el desarrollo de
aplicaciones para dispositivos móviles, ha decidido que su compañía entre
también en este nuevo mercado. Se trata de una oportunidad interesante para
abrir nuevos negocios tanto para sus clientes actuales como para la captación
de otros nuevos.

Hasta este momento la única persona en la empresa que ha trabajado antes


con este tipo de tecnologías es la propia Ada, de manera que va a ser ella quien se encargará de
formar a María y a Juan en estas nuevas tecnologías. En concreto Ada ha desarrollado aplicaciones
en Java para proyectos Java ME sobre sistemas compatibles con esta tecnología.

Materiales formativos de FP Online propiedad del Ministerio de Educación, Cultura y


Deporte.
Aviso Legal

1 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

1.- Introducción. ¿Qué es un dispositivo móvil?

Caso práctico
La primera pregunta que podemos hacernos es ¿qué entendemos por "móvil"? Si se nos ocurre
investigar sobre ese término, a través de algún buscador de Internet, podremos observar que no hay
una respuesta única y que en algunas ocasiones las diferencias pueden ser sustanciales en función
de qué es lo que consideremos "móvil". Obviamente esto da lugar a su vez a muchas otras
preguntas como por ejemplo: Es móvil… ¿alguna parte del dispositivo? ¿El dispositivo completo?
¿La aplicación que usamos en el dispositivo? ¿Una aplicación cliente? ¿Una aplicación servidor? ¿El
usuario del dispositivo? ¿Es "móvil" sinónimo de "portátil"? ¿Es "móvil" sinónimo de "limitado"?
¿Hasta qué punto "móvil" es sinónimo de "autónomo"? ¿Existen diversos grados de "movilidad"?
¿Se pueden clasificar los dispositivos móviles en distintos tipos? ¿Bajo qué criterios? Y así
sucesivamente podríamos plantearnos más y más preguntas…

Para evitar este tipo de controversias, en nuestro caso vamos a intentar dar una definición con la que
trabajaremos a lo largo del desarrollo del módulo:

¿Qué es un dispositivo móvil? Se trata de un aparato de pequeño tamaño (normalmente que quepa
en un bolsillo) y de poco peso, con pantalla y teclado, con pequeñas capacidades de procesamiento,
memoria limitada y conexión (permanente o no) a una red. Este tipo de dispositivos están diseñados
para cumplir algún tipo de función específica (realizar llamadas telefónicas, servir como agendas,
jugar, navegación GPS, escuchar música, acceso al correo electrónico, navegar por Internet, etc.)
aunque normalmente pueden llevar a cabo también funciones más generales.

Estos aparatos son cada vez más populares especialmente para aquellos entornos en los que llevar
consigo un ordenador convencional (incluso un portátil) no es práctico.

Para saber más


Para obtener más información acerca de cuáles pueden ser las características de un dispositivo
móvil puedes consultar el siguiente artículo en la Wikipedia sobre dispositivos móviles:

Dispositivo Móvil.

Autoevaluación
Indica las respuestas correctas. ¿Cuáles de las siguientes opciones se corresponden con las
de un dispositivo móvil?

Alta capacidad de procesamiento.

2 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Conectividad a una red.

Pequeño tamaño.

Cantidad de memoria limitada.

Mostrar retroalimentación

Solución

1. Incorrecto
2. Correcto
3. Correcto
4. Correcto

3 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

1.1.- Clasificación de los dispositivos móviles.


¿Qué tipos de dispositivos móviles existen?

Entre los dispositivos móviles más habituales se encuentran:

SmartPhones o "teléfonos inteligentes" es un tipo de teléfono móvil construido sobre una plataforma
informática móvil, con mayor capacidad de almacenar datos y realizar actividades, semejante a la de una
minicomputadora, y con una mayor conectividad que un teléfono móvil convencional. El término inteligente,
que se utiliza con fines comerciales, hace referencia a la capacidad de usarse como un computador de
bolsillo, y llega incluso a reemplazar a una computadora personal en algunos casos.
PDA (Personal Digital Assistant - asistentes digitales personales) o PocketPC (PC de bolsillo).
Handheld, o PCs de mano.
Internet tables, que se encontrarían entre las PDA y los PC Ultramóviles (pequeños tablet PC).

Según las fuentes que consultes puedes encontrar diversas clasificaciones donde se incluyan unos u otros tipos
de dispositivos, como por ejemplo:

Pagers (o buscapersonas), hoy día ya en desuso.


Navegadores GPS.
E-Readers (lectores de libros digitales).
Pequeñas videoconsolas de mano.
Cámaras digitales.
Calculadoras programables.

En nuestro caso, los principales aparatos a los que nos referiremos al hablar de dispositivos móviles serán los
smartPhones y las PDA. Por otro lado, según la tecnología vaya avanzando te podrás ir encontrando con nuevos
tipos de productos y servicios que irán ampliando las posibilidades de elección. Como siempre sucede en el
mundo de la tecnología habrá que estar continuamente al día de los nuevos avances que van apareciendo para no
quedarse atrás.

Autoevaluación
Indica las respuestas correctas. ¿Cuáles de los siguientes aparatos podrían considerarse
dispositivos móviles según la descripción que se ha realizado anteriormente?

Ordenador portátil.

Teléfono móvil de última generación.

PDA.

Reloj de muñeca convencional.

4 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Mostrar retroalimentación

Solución

1. Incorrecto
2. Correcto
3. Correcto
4. Incorrecto

5 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

2.- Limitaciones de las tecnologías móviles.

Caso práctico
María y Juan acaban de descubrir cómo se les puede abrir todo un mundo lleno de posibilidades en
este nuevo entorno del desarrollo de aplicaciones para dispositivos móviles. Lo primero que deben
de hacer es informarse adecuadamente de qué se puede y qué no se puede hacer con este tipo de
dispositivos. Es decir, qué limitaciones se van a encontrar en estos aparatos para los cuales desean
construir programas.

Antes de comenzar a desarrollar software para alguno de estos dispositivos, es necesario


ser conscientes de las limitaciones con las que nos podemos encontrar en estos aparatos.
¿Cuáles son las restricciones a las que nos vamos a tener que enfrentar?

Algunas de estas restricciones son:

Suministro de energía limitado (normalmente dependiente de baterías).


Procesadores con capacidad de cómputo reducida. Suelen tener una baja frecuencia
de reloj por la necesidad de ahorrar energía. En algunos casos, por ejemplo, podrían
no disponer de la capacidad de cálculos en punto flotante.
Poca memoria principal (RAM).
Almacenamiento de datos persistente reducido (pequeña memoria flash interna, tarjetas SD, etc.).
Conexión a algún tipo de red intermitente y con ancho de banda limitado.
Pantallas de reducidas dimensiones.
Teclados con funcionalidad muy básica y muy pequeños.

Este tipo de restricciones, y algunas otras que dependerán de cada dispositivo en concreto, habrán de ser tenidas
muy en cuenta a la hora del análisis y diseño de una aplicación "móvil", pues no podemos pretender, que esa
aplicación pueda contener la misma funcionalidad, que la que podemos encontrar habitualmente en un programa
que es ejecutado en un ordenador de sobremesa o un portátil.

Por otro lado, no todo va a ser restricciones. También habrá que tener en consideración que esta tecnología va a
aportar una serie de ventajas muy importantes: movilidad, poco peso, pequeño tamaño, facilidad para el
transporte, conectividad a diversos tipos de redes de comunicaciones (mensajería SMS y MMS; voz; Internet;
Bluetooth; infrarrojos; radiofrecuencia, etc.). Ésas serán las ventajas que podrás explotar en tus aplicaciones.

Autoevaluación
Indica las respuestas correctas. ¿Cuáles de las siguientes limitaciones se corresponden con
las de un dispositivo móvil?

Suministro de energía ilimitado.

Capacidad de procesamiento limitada.

6 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Ancho de banda pequeño.

Cantidad de memoria limitada.

Mostrar retroalimentación

Solución

1. Incorrecto
2. Correcto
3. Correcto
4. Correcto

Para saber más


A través del siguiente vídeo puedes aprender más sobre limitaciones de los dispositivos móviles.

Limitaciones de los disposit...

Resumen textual alternativo

7 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.- Tecnologías disponibles.

Caso práctico
María y Juan ya tienen claro que programar para un dispositivo móvil
no va a ser exactamente lo mismo que programar para un ordenador
convencional, debido a las limitaciones y características especiales que
aquellos aparatos pueden presentar. Tienen ahora que empezar a
descubrir y conocer con qué tipos de tecnologías se pueden encontrar
en este nuevo mundo, tanto a nivel de hardware (dispositivos sobre los
que se realizarán las aplicaciones) como a nivel de software (sistemas
operativos que funcionan sobre esos dispositivos, plataformas de
desarrollo disponibles, entornos, APIs, lenguajes de programación, etc.).

Ada, la responsable de María y Juan en la compañía, va a realizar un pequeño estudio de algunas de


las tecnologías que más se están utilizando hoy día. Este estudio será muy importante para el
conocimiento que la empresa BK Programación quiere ir acumulando para proporcionar valor
añadido a los productos y servicios que desea ofrecer a sus clientes. Ada aprovechará el desarrollo
de este estudio para ir mostrando a Juan y a María las diversas tecnologías con las que se van a
poder encontrar.

Es importante que este tipo de análisis y estudios se sigan realizando de manera continua en la
empresa al menos una vez al año, pues se trata de un mundo que avanza muy deprisa y en el que es
muy fácil quedarse desfasado. Hay que estar siempre al día de los últimos productos que salen al
mercado así como de los sistemas operativos, las aplicaciones, los entornos de desarrollo, nuevos
lenguajes, etc.

Cuando vas a desarrollar una aplicación para un dispositivo móvil, algunas de las
primeras preguntas que te puedes hacer son:

¿Sobre qué tipos de dispositivos móviles se pueden hacer programas? ¿Sobre


qué tipo de hardware se puede programar?
¿Qué sistema operativo puede llevar ese hardware?
¿Qué plataformas de desarrollo existen para desarrollar sobre ese hardware y
ese sistema operativo? ¿con qué lenguajes puedo programar? ¿qué
herramientas (compiladores, bibliotecas, entornos, etc.) hay disponibles?

Las respuestas a este tipo de preguntas pueden ser múltiples y muy variadas:

Respecto al hardware, te puedes encontrar, como has visto ya, con teléfonos móviles (smartPhones), PDA y
con otros dispositivos. Entre los principales fabricantes de teléfonos móviles se encuentran Samsung (uno
de los mayores proveedores de teléfonos móviles en 2015 y 2016 con una gran diferencia del segundo, que
sería Apple), HTC, Apple, Motorola, LG, etc. Entre los principales fabricantes de PDA se encuentran HP,
HTC, Palm (adquirida por HP en 2010), Motorola, Samsung o LG. En realidad muchas veces coinciden los
proveedores que desarrollan smartPhones con los que fabrican PDA. Por otro lado, ambos tipos de
productos están en muchas ocasiones convergiendo hacia un único dispositivo final que cumple las dos
funciones (telefonía móvil y asistente personal).
En cuanto a los sistemas operativos, dependiendo del hardware habrá sistemas diseñados para unos u otros
dispositivos. Los hay basados en Microsoft Windows, en Linux, y en MAC OS X, así como otros totalmente
originales y desarrollados específicamente para estos nuevos tipos de dispositivos. Entre los más populares
se encuentran Symbian OS, Android, iOS, Blackberry OS y Windows Phone.
Si lo que deseas es conocer algo acerca de las plataformas de desarrollo disponibles para cada entorno
(hardware y/o sistema operativo), podemos hablar de Java ME, Windows Mobile SDK, Maemo SDK, o bien
de IDE como Microsoft Visual Studio, CodeWarrior, Eclipse, Netbeans.
Si te refieres a lenguajes de programación, normalmente te encontrarás con lenguajes que son ya viejos
conocidos para otras plataformas, como pueden ser las aplicaciones de escritorio para los PCs o las
aplicaciones web (Java, C#, C, etc.).

En definitiva puedes observar que en este nuevo mundo del desarrollo para dispositivos móviles te encuentras con

8 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

una problemática similar a la que te puedes enfrentar con los ordenadores convencionales: distintos tipos de
hardware, distintas opciones de sistemas operativos dependiendo del hardware que los soporte, diferentes
lenguajes de programación, plataformas, API y bibliotecas, entornos de desarrollo, etc.

9 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.1.- Hardware.

Caso práctico
El primer acercamiento que Ada va a realizar con María y Juan al
mundo de la tecnología de los dispositivos móviles va a ser en lo que
respecta al hardware, es decir, lo físico. Este es el momento en el que
tanto María como Juan se hacen toda una serie de preguntas al
respecto, tales como: ¿Qué tipo de aparatos hay disponibles? ¿Qué
características tienen? ¿Cómo son por dentro? ¿Utilizan un
microprocesador como los ordenadores de escritorio o los portátiles?
¿Quién fabrica esos micros? ¿Qué aspecto externo puede tener un
dispositivo móvil? ¿Son todos parecidos? ¿Los hay con usos específicos? ¿Qué marcas y qué
modelos existen? ¿Cuáles son los más vendidos? En este apartado Ada, como experta en tecnología
móvil, va a intentar contestar a algunas de estas cuestiones.

Como has visto en los apartados anteriores, dependiendo de los criterios que se utilicen para clasificar los
dispositivos móviles se puede hablar de más o menos tipos. Este curso se va a centrar sobre todo en
smartPhones y PDA.

Para saber más


Si quieres conocer los materiales con los que se fabrica un móvil, puedes echar un vistazo a la
siguiente presentación:

¿De qué está hecho un móvil? Resumen textual alternativo

Autoevaluación

Aunque el hardware de dispositivos móviles puede ser muy variado, el sistema operativo que
funciona sobre todos ellos es básicamente siempre el mismo (con ciertas variaciones
dependiendo del modelo y fabricante del dispositivo) y desarrollado por la misma empresa.
Verdadero Falso

Falso
No es cierto. Existe una gran diversidad de sistemas operativos dependiendo del tipo de
dispositivo. Entre los más populares se encuentran Symbian OS, Android, iOS, Blackberry OS y
Windows Phone.

10 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

11 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.1.1.- Smartphones.

Se puede definir un smartPhone o "teléfono inteligente" como un terminal de telefonía


móvil que proporciona unas prestaciones y una funcionalidad mayor que la que
podría ofrecer un teléfono móvil normal. Hoy día una buena parte de los teléfonos
móviles que se pueden adquirir en el mercado son de este tipo.

Este tipo de terminales se caracteriza por tener instalado un sistema operativo y por
tanto la posibilidad de ejecutar aplicaciones desarrolladas bien por el propio
fabricante del terminal, bien por el operador de telefonía móvil, o bien por un tercero
(empresa de desarrollo de software).

Algunas otras características que suelen tener este tipo de dispositivos son:

Funcionamiento en multitarea (ejecución concurrente de varios procesos en el sistema operativo).


Acceso a Internet vía Wi-Fi o redes 4G, 3G o 2G.
Conectividad Wi-Fi, Bluetooth, etc.
Posibilidad de conexión con un ordenador para cargar y descargar información. Normalmente con conexión
USB o bien una conexión inalámbrica.
Posibilidad de ampliación de memoria mediante tarjetas externas de memoria (por ejemplo SD).
Pequeñas pantallas pero de alta resolución y/o con millones de colores.
Posibilidad de pantallas táctiles o incluso multitáctiles (multitouch).
Sensores (de orientación, GPS y algunos programas de navegación, de temperatura, de presión,
acelerómetros, magnetómetros, etc.).
Función multimedia (cámara digitales integradas y reproductor de videos/mp3), Capacidades fotográficas.
Grabación de audio y vídeo.
Receptor GPS.
Receptor de radio FM.
Emisor de radio FM.
Posibilidad de instalar y ejecutar aplicaciones sofisticadas:
Aplicaciones de asistente personal (gestión de contactos, calendarios, citas, agendas, alarmas, etc.).
Gestión del correo electrónico.
Gestión del sistema archivos del dispositivo.
Microaplicaciones de ofimática (procesador de textos, hoja de cálculo, etc.), así como ocasionalmente
la habilidad de y leer documentos de negocios en variedad de formatos como PDF y Microsoft Office.
Aplicaciones multimedia (reproducción de audio y vídeo en diversos formatos).
Aplicaciones de cartografía y navegación.
Diccionarios.
Pequeñas aplicaciones científicas (matemáticas, física, medicina, etc.).
Juegos.
Aplicaciones de mensajería instantánea. Chats.

Puedes observar que aunque el dispositivo es un teléfono móvil muchas veces su uso principal no va a ser
necesariamente el de un teléfono (hacer y recibir llamadas) sino que podrá estar dedicado a muchos otros usos
(hacer fotos, navegar por Internet, reproducir archivos de audio, jugar, gestionar la agenda personal, consultar un
mapa, usar un diccionario, escuchar la radio, ver una película, trazar una ruta para el navegador por satélite, etc.).

Dentro de muy poco tiempo es probable que se deje de emplear el término smartPhone o "móvil inteligente" pues
todos los terminales móviles serán de este tipo y se hablará simplemente de "teléfonos móviles". De hecho en la
práctica ya ocurre hoy día, pues cuando nos acercamos a algún catálogo de productos la inmensa mayoría de
terminales que se nos ofrecen son de este tipo.

Fabricantes de smartPhones

Algunos ejemplos de smartPhones son:

Teléfonos Nokia de la serie N y de la serie E.


Los iPhone de Apple.
La serie Xperia de Sony Ericsson.
Las BlackBerries, desarrolladas por la empresa RIM (Research In Motion). Conocidos sobre todo por su
capacidad para enviar y recibir correo electrónico.
Los teléfonos HTC de las series A (con sistema operativo Android), S (con sistema operativo Windows
Phone), T (Windows Phone con Touch), o P (teléfonos PDA).
Las series Galaxy y Nexus de Samsung (con Android).

12 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Las series Q, Droid o Milestone de Motorola.


En general cualquier fabricante de terminales de telefonía móvil actual desarrolla smartPhones.

13 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.1.2.- El interior de un smartphone.


Si se te ocurriera abrir un teléfono móvil actual te encontraríamos una placa de circuito impreso con una serie de
dispositivos electrónicos integrados o insertos en ella. En cierto modo podría recordar un poco a la placa base de
un PC. Entre los dispositivos que podrías observar se encontrarían el procesador principal, procesadores digitales
de señal (DSP), procesadores de imagen y de audio, módem, memorias caché, codecs de audio y vídeo, etc. A
este conjunto de dispositivos integrados en la placa se le suele llamar chipset (lo cual te debería recordar al mundo
del hardware de los PCs y a los conceptos estudiados en el módulo Sistemas Informáticos).

La principal arquitectura de microprocesadores utilizada para telefonía móvil es la diseñada por la empresa ARM
("Advanced RISC Machines", hoy día ARM Holdings), teniendo actualmente más del 90% de la cuota de mercado
no ya sólo para teléfonos móviles, sino en general para todo tipo de pequeños dispositivos electrónicos que
necesitan un microprocesador. Algunas de las familias de micros ARM más conocidas son las ARM7, ARM9,
ARM11 y Cortex. Hoy día muchas otras empresas diseñan microprocesadores basados en las patentes de la
arquitectura de los procesadores ARM como por ejemplo DEC, IBM, Texas Instrument, Samsung, Intel, Atmel,
Alcatel-Lucent, Apple, Qualcomm, LG, Nintendo, Philips, Oki, Yamaha, etc. Uno de los más conocidos es por
ejemplo el Intel XScale.

Algunos ejemplos de productos que incorporan uno o varios micros ARM son: la mayoría de teléfonos móviles
(Nokia, Sony Ericsson, Samsung, Apple, etc.), el iPod de Apple, las consolas Gameboy y Nintendo DS, routers,
navegadores GPS, cámaras digitales, etc.

Respecto al chipset, existen diversas posibilidades de arquitectura, según sea el fabricante que las produce.
Algunas de las arquitecturas más conocidas son MSM (de la empresa Qualcomm), OMAP (Open Multimedia
Application Platform, de la empresa Texas Instrument), y las de la empresa Marvell.

Muchos teléfonos de Nokia utilizan la arquitectura OMAP de Texas Instrument (por ejemplo el Nokia N810
WiMax Edition que incorpora un chipset OMAP 2420 con un procesador ARM1136), mientras que algunas
BlackBerries hacen uso de la MSM de Qualcomm (por ejemplo la BlackBerry Storm, con una arquitectura
MSM7600) o de arquitecturas Marvell (por ejemplo la BlackBerry Bold, con un chipset Marvell Travor PXA930).
Algunos modelos de Samsung también se han decantado por Marvell (por ejemplo el Samsung Omnia, que
incorpora un chipset Marvell a 624 Mhz).

Para saber más


¿Quieres ver las tripas de un smartphone?, no te pierdas
el interior de un smartphone:

Tecnología forense: ¿Quieres ver las tripas de un


smartphone?

14 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Autoevaluación

La principal arquitectura de microprocesadores utilizada para telefonía móvil es la diseñada


por la empresa ARM.
Verdadero Falso

Verdadero
Así es. En la actualidad (2011) tiene más del 90% de la cuota de mercado no ya sólo para
teléfonos móviles, sino en general para todo tipo de pequeños dispositivos electrónicos que
necesitan un microprocesador.

15 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.1.3.- PDA.
Una PDA (Personal Digital Assistant o asistente digital personal) u ordenador de
bolsillo o Pocket PC o Palmtop Computer es un dispositivo móvil cuya funcionalidad
original era la de gestión de datos personales. Es decir, algo así como una agenda
digital muy sofisticada, con pequeñas aplicaciones de asistente personal,
calendarios, micro-ofimática, etc.

Algunas de las primeras PDA que aparecieron en la segunda mitad de la década de


los noventa y que se hicieron muy populares fueron las Palm Pilot de la compañía
Palm y las iPAQ de la empresa Compaq.

Hoy día se han convertido en pequeños ordenadores "de mano" ("palmtop") o "de bosillo" ("pocket") capaces de
realizar muchas de las funciones que realizaría un ordenador personal convencional tales como crear documentos
con un procesador de textos, manejar hojas de calculo, jugar, navegar por Internet, enviar y recibir correo
electrónico, transferir archivos por una red local, ver películas, reproducir archivos de audio o vídeo, etc. Es decir,
que mientras que un ordenador convencional de escritorio ("desktop") se coloca sobre la mesa ("desk"), el portátil
("laptop") es un ordenador que puedes poner sobre el regazo ("lap"), y un ordenador de mano ("palmtop") lo
puedes situar en la palma de la mano ("palm").

Una de sus principales características externas es su pantalla táctil y el lápiz-marcador (o estilete digital) para
interactuar con ella. Debido a esto suelen tener pocos botones pues la mayoría de las tareas se pueden realizar
mediante el estilete sobre la pantalla táctil. Normalmente tienen un mayor tamaño que la mayoría de los teléfonos
móviles, sobre todo la pantalla.

Muchos modelos pueden traer incorporadas cámaras digitales, receptores de GPS o incluso la funcionalidad de
telefonía móvil, llegándose a confundir en muchas ocasiones la ambigua frontera entre smartPhone y PDA. Es
decir, que hay PDA que llegan a convertirse en auténticos teléfonos móviles inteligentes, y teléfonos móviles que
llegan a transformarse en PDA con posibilidad de realizar llamadas telefónicas. Un ejemplo típico de dispositivos
de "difícil" clasificación entre smartPhone y PDA podrían ser las conocidas BlackBerries.

En el futuro es muy probable que ambos tipos de dispositivos converjan a un único tipo que podrá tener mayores o
menores dimensiones y/o prestaciones en función del uso que se le quiera dar.

En cuanto al interior de las PDA, dependiendo de las opciones que ésta tenga podemos encontrar un hardware
muy similar al de muchos smartPhones (chipset, microprocesadores basados en arquitectura ARM, procesadores
digitales de señal, emisores y receptores de radio, etc.).

Entre los fabricantes de PDA más conocidos se encuentran: HTC (serie P: teléfonos PDA), Palm (por ejemplo la
serie TX), Motorola (basados en Android), Apple (por ejemplo el iPad touch), HP (con los Pocket PC sustitutos de
las antiguas iPAQ), Dell, Acer, LG, Sony (hasta hace poco con PDA basadas en Palm OS) o Sharp (por ejemplo la
serie Zaurus, basada en Linux).

En general la mayor parte de lo que hemos dicho sobre los smartPhones sería también aplicable en las PDA,
dependiendo por supuesto de las características técnicas y las capacidades que incorpore cada dispositivo
(pantalla táctil, conexiones inalámbricas, cámara, conexión a Internet, telefonía móvil, sensores, etc.). De este
modo a la hora de desarrollar una aplicación para un dispositivo, en realidad no importará demasiado si se clasifica
como smartPhone, PDA o con otra etiqueta. Lo importante será disponer de un entorno de desarrollo capaz de
generar ejecutables sobre el sistema operativo con el que trabaje ese dispositivo, y que nos permita acceder a las
características funcionales específicas que proporciona ese aparato en concreto.

Para saber más


Aquí puedes encontrar un artículo sobre la evolución de las PDA:

Evolución de la PDA

16 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.- Sistemas operativos.

Caso práctico
Una vez que Ada ha mostrado algunas de las peculiaridades hardware
de los dispositivos móviles a María y a Juan, es necesario pasar al
siguiente nivel: el software, y en concreto el nivel de software más bajo,
es decir, el sistema operativo. Nuevamente surgen los interrogantes
entre María y Juan: ¿Estos aparatos también tienen sistema operativo
como un ordenador? ¿Hay más de un sistema operativo disponible?
¿Hay sistemas operativos "libres" y "propietarios" como sucede con
los PC? ¿Quién desarrolla esos sistemas? ¿Con qué herramientas se
puede programar para ellos? ¿Funcionan todos los sistemas sobre
todos los tipos de hardware? Ésas son algunas de las preguntas que Ada va intentar responder en
esta ocasión.

Los sistemas operativos más habituales que te puedes encontrar en un dispositivo móvil son:

Android. Desarrollado inicialmente por Google y basado en el núcleo de Linux. El primer fabricante de
móviles que lo incorporó fue HTC.
iOS. Desarrollado por Apple para el iPhone y usado más tarde también para el iPod Touch y el iPad.
Windows Phone (anteriormente llamado Windows Mobile). Desarrollado por Microsoft tanto para
smartPhones como para otros dispositivos móviles (por ejemplo PDA). Algunos fabricantes de teléfonos
móviles que incorporan este sistema operativo son Samsung, LG o HTC.
Blackberry OS. Desarrollado por Research in Motion (RIM) para sus dispositivos Blackberry.
HP webOS, desarrollado por Palm, adquirido por HP (Palm era la desarrolladora del más antiguo Palm OS).
Está basado en un kernel de Linux.
Palm OS. Desarrollado por PalmSource para PDA, aunque las últimas versiones también funcionan para
smartPhones.
Maemo OS. Desarrollado por Nokia para smartPhones, PDA e Internet tables.
Bada. Desarrollado por Samsung.

Hay que tener en cuenta que a medida que los teléfonos móviles crecen
en popularidad, los sistemas operativos con los que trabajan también
adquieren mayor importancia. Según un artículo en la publicación
"Kantar.com", la cuota de mercado de sistemas operativos móviles en
2015 era la siguiente:

1. Android: 81%
2. iOS:  11%
3. Windows Phone: 8%

Como puedes observar, Android tiene la mayor cuota con diferencia.

Hace unos años el sistema operativo más usado era Symbian OS, ahora en desuso. Fue a lo largo del año 2011
cuando Android se colocó por delante de Symbian OS en la cuota de mercado. Como siempre sucede en el
mundo de la tecnología, habrá que estar muy pendiente de las últimas noticias para tener una buena perspectiva
de lo que nos vamos a encontrar en el mercado durante los próximos año.

Vamos a hacer un rápido repaso de algunos de los sistemas operativos más conocidos Android, iOS y Windows
Phone, así como Symbian OS por su relevancia histórica.

17 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.1.- Android.

Android fue inicialmente desarrollado por Android Inc., hoy día parte de la
compañía Google. Está basado en una versión modificada del kernel de Linux.

El primer fabricante que incorporó Android en sus dispositivos fue HTC con su terminal HTC Dream
(comercializado también como T-Mobile G1 y popularmente conocido con los nombres de Google Phone o
GPhone) en 2008.

Es uno de los más "jóvenes" dentro del grupo de sistemas operativos para dispositivos móviles y se ha hecho un
notable hueco alcanzando un tercio de la cuota de mercado a comienzos de 2011. Existen miles de aplicaciones
que funcionan sobre Android, con un crecimiento cada vez mayor.

En julio de 2005, Google adquirió Android Inc., una pequeña compañía de Palo Alto, California fundada en 2003.
Entre los cofundadores de Android que se fueron a trabajar a Google están Andy Rubin (co-fundador de Danger),
Rich Miner (co-fundador de Wildfire Communications, Inc.), Nick Sears (alguna vez VP en T-Mobile), y Chris White
(quien encabezó el diseño y el desarrollo de la interfaz en WebTV). En aquel entonces, poco se sabía de las
funciones de Android Inc. fuera de que desarrollaban software para teléfonos móviles. Esto dio pie a rumores de
que Google estaba planeando entrar en el mercado de los teléfonos móviles.

En septiembre de 2007, «InformationWeek» difundió un estudio de Evalueserve que reportaba que Google había
solicitado diversas patentes en el área de la telefonía móvil.

El 5 de noviembre de 2007 la Open Handset Alliance, un consorcio de varias compañías entre las que están Texas
Instruments, Broadcom Corporation, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, Intel, LG, Marvell
Technology Group, Motorola, y T-Mobile; se estrenó con el fin de desarrollar estándares abiertos para dispositivos
móviles. Junto con la formación de la Open Handset Alliance, la OHA estrenó su primer producto, Android, una
plataforma para dispositivos móviles construida sobre la versión 2.6 de Linux.

El 9 de diciembre de 2008, se anunció que 15 nuevos miembros se unirían al proyecto Android, incluyendo
PacketVideo, ARM Holdings, Atheros Communications, Asustek, Garmin, Softbank, Sony Ericsson, Huawei,
Toshiba, Vodafone y ZTE.

El 24 de febrero de 2014 Nokia presentó sus teléfonos inteligentes corriendo Android 4.1 "Jelly Bean" (aunque
corriendo una versión propia, tomando la base de AOSP). Se trata de los Nokia X, X+ y XL

En Google, el equipo liderado por Rubin desarrolló una plataforma para dispositivos móviles basada en el núcleo
Linux que fue promocionado a fabricantes de dispositivos y operadores con la promesa de proveer un sistema
flexible y actualizable. Se informó que Google había alineado ya una serie de fabricantes de hardware y software y
señaló a los operadores que estaba abierto a diversos grados de cooperación por su parte.

Hoy en día podemos encontrar multitud de fabricantes que incorporan Android en


sus terminales: Sony Ericsson (Xperia X10 y X8), HTC (Serie A), Acer (beTouch
E110), Motorola (Droid X), Samsung (series Galaxy y Nexus), Garmin
(GarminPhone), Dell, Alcatel, LG, etc.

Android ha visto numerosas actualizaciones desde su liberación inicial. Estas


actualizaciones al sistema operativo base típicamente arreglan bugs (errores o fallo
en el software) y agregan nuevas funciones (debuggers). Podemos observar que los
nombres de las versiones del sistema operativo Android corresponden con postres y
que, además, según avanzan la versión avanza alfabéticamente la letra del postre por orden alfabético (Android 1.0
Apple Pie, Android 1.1. Banana Bread, Android 1.5 Cupcake, Android 1.6 Donut, etc.). Actualmente, a septiembre
de 2016, la última de versión de Android es la 7.0 (Nougat, o "Turrón").

Bugs (bicho) es un error o fallo en un programa de computador o sistema de software que desencadena un
resultado indeseado. Los programas que ayudan a la detección y eliminación de errores de programación de
software son denominados depuradores (debuggers).

La reiterada aparición de nuevas versiones que, en muchos casos, no llegan a funcionar correctamente en el
hardware diseñado para versiones previas, hacen que Android sea considerado uno de los elementos promotores
de la obsolescencia programada o planificada que se refiere a es la determinación o programación del fin de la
vida útil de un producto, de modo que, tras un período de tiempo calculado de antemano por el fabricante o por
la empresa durante la fase de diseño de dicho producto, este se torne obsoleto, no funcional, inútil o inservible.

Android ha sido criticado muchas veces por la fragmentación que sufren sus terminales al no ser soportado con

18 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

actualizaciones constantes por los distintos fabricantes. Se creyó que esta situación cambiaría tras un anuncio de
Google en el que comunicó que los fabricantes se comprometerán a aplicar actualizaciones al menos 18 meses
desde su salida al mercado, pero esto al final nunca se concretó y el proyecto se canceló. Google actualmente
intenta enmendar el problema con su plataforma actualizable Servicios de Google Play (que funciona en Android
2.2 y posteriores), separando todas las aplicaciones posibles del sistema (como Maps, el teclado, Youtube, Drive, e
incluso la propia Play Store) para poder actualizarlas de manera independiente, e incluyendo la menor cantidad
posible de novedades en las nuevas versiones de Android.

Para desarrollar aplicaciones sobre Android se necesita el kit de desarrollo de software para Android
(Android Studio, anteriormente SDK), proporcionado gratuitamente por Android. Este paquete incluye
todo lo necesario para construir aplicaciones sobre el entorno Android (depurador, bibliotecas,
emulador, documentación, etc.). El lenguaje de programación que se utiliza es Java (y por tanto es
necesario el JDK de Oracle para poder compilar programas Java). Android Studio también incorpora
el IDE oficial, sustituyendo a Eclipse.

Para saber más


Android Studio proporciona las herramientas más rápidas para la creación de aplicaciones en todos
los tipos de dispositivos Android.

En los siguientes enlaces pudes descargar el IDE para el desarrollo de Android con el que podrás
editar códigos de primer nivel, acceder a las las herramientas de rendimiento y de compilación e
implementación que te permiten concentrarte en la creación de aplicaciones únicas y de alta calidad.

Las revisiones de las versiones de Android Studio son muy numerosas, por ejemplo en agosto de
2016 está la Android Studio v.2.1.3, en junio de 2016 está la versión Android Studio v.2.1.2, en mayo
está la versión Android Studio v.2.1.1., etc. Debes entrar en el segundo enlace de las versiones y
descargar la más actualizada con sus debuggers (depuradores de los errores de software)
correspondientes.

Android Studio. IDE oficial para Android. Descarga.

Versiones de Android Studio.

Citas Para Pensar


El éxito del sistema operativo Android se ha convertido en objeto de litigios sobre patentes en el
marco de las llamadas «Guerras por patentes de teléfonos inteligentes» (en inglés, Smartphone
patent wars) entre las empresas de tecnología. Según documentos secretos filtrados entre 2013
-2015, el sistema operativo es uno de los objetivos de las agencias de inteligencia internacionales. En
el siguiente enlace pudes ver algo más sobre estas revelaciones:

Revelaciones sobre la red de vigilancia mundial (2013-2015).

Autoevaluación

El sistema operativo Android está basado en Linux.


Verdadero Falso

19 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Verdadero
Así es. Está basado en una versión modificada del kernel de Linux.

20 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.1.1. Arquitectura de Android.


El sistema operativo de Android tiene los siguientes
componentes:

Núcleo Linux: Android depende de Linux para los


servicios base del sistema como seguridad, gestión de
memoria, gestión de procesos, pila de red y modelo de
controladores. 

Aplicaciones: las aplicaciones están escritas en lenguaje


de programación Java.

Marco de trabajo de aplicaciones: la arquitectura está diseñada para simplificar la reutilización de


componentes; cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación puede luego
hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Este mismo mecanismo
permite que los componentes sean reemplazados por el usuario. Los desarrolladores tienen acceso completo
a los mismos APIs del framework usados por las aplicaciones base.

Bibliotecas: Android incluye un conjunto de bibliotecas de C/C++ usadas por varios componentes del
sistema. Estas características se exponen a los desarrolladores a través del marco de trabajo de aplicaciones
de Android; algunas son: System C library (implementación biblioteca C estándar), bibliotecas de medios,
bibliotecas de gráficos, 3D y SQLite, entre otras.

Runtime de Android: Android incluye un set de bibliotecas base que proporcionan la mayor parte de las
funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicación Android corre su propio
proceso, con su propia instancia de la máquina virtual Dalvik. Desde la versión 5.0 utiliza el ART, que compila
totalmente al momento de instalación de la aplicación.

Android Runtime (ART) es un entorno de ejecución de aplicaciones utilizado por el sistema operativo
móvil Android. ART reemplaza a Dalvik, que es la máquina virtual utilizada originalmente por Android, y
lleva a cabo la transformación de la aplicación en instrucciones de máquina, que luego son ejecutadas
por el entorno de ejecución nativo del dispositivo.

21 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Para saber más


En estos enlaces puedes encontrar información sobre Android Runtime (ART) que es un entorno
de ejecución de aplicaciones utilizado por el sistema operativo móvil Android.

Cómo activar ART, cómo rinde en el uso diario y cuando hará Google el cambio final.

Android Runtime (ART).

Recomendación
Te recomendamos que veas los siguientes vídeos sobre las características e instalación de Android:

Curso Android. Presentación. Vídeo 1

22 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Curso Android. Características e instalació...

23 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.1.2. Características y especificaciones actuales


de Android.
SQLite, una base de datos liviana, que es usada para propósitos de almacenamiento de
Almacenamiento
datos.

Incluye un emulador de dispositivos, herramientas para depuración de memoria y


análisis del rendimiento del software. Inicialmente el entorno de desarrollo integrado (IDE)
Entorno de
utilizado era Eclipse con el plugin de Herramientas de Desarrollo de Android (ADT). Ahora
desarrollo
se considera como entorno oficial Android Studio, descargable desde la página oficial de
desarrolladores de Android.

La plataforma es adaptable a pantallas de mayor resolución, VGA, biblioteca de gráficos


Diseño de
2D, biblioteca de gráficos 3D basada en las especificaciones de la OpenGL ES 2.0 y
dispositivo
diseño de teléfonos tradicionales.

Android soporta las siguientes tecnologías de conectividad: GSM/EDGE, IDEN, CDMA,


Conectividad EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, HSDPA, HSPA+, NFC y WiMAX, GPRS, UMTS y
HSDPA+.

SMS y MMS son formas de mensajería, incluyendo mensajería de texto y ahora la


Mensajería Android Cloud to Device Messaging Framework (C2DM) es parte del servicio de Push
Messaging de Android.

El navegador web incluido en Android está basado en el motor de renderizado de código


abierto WebKit, emparejado con el motor JavaScript V8 de Google Chrome. El
Navegador web
navegador por defecto de Ice Cream Sandwich obtiene una puntuación de 100/100 en el
test Acid3.

Aunque la mayoría de las aplicaciones están escritas en Java, no hay una máquina virtual
Java en la plataforma. El bytecode Java no es ejecutado, sino que primero se compila en
un ejecutable Dalvik y se ejecuta en la Máquina Virtual Dalvik, Dalvik es una máquina
virtual especializada, diseñada específicamente para Android y optimizada para
Soporte de Java
dipositivos móviles que funcionan con batería y que tienen memoria y procesador
limitados. A partir de la versión 5.0, se utiliza el Android Runtime (ART). El soporte para
J2ME puede ser agregado mediante aplicaciones de terceros como el J2ME MIDP
Runner.

Android soporta los siguientes formatos multimedia: WebM, H.263, H.264 (en 3GP o
Soporte
MP4), MPEG-4 SP, AMR, AMR-WB (en un contenedor 3GP), AAC, HE-AAC (en
multimedia
contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF y BMP.

Streaming RTP/RTSP (3GPP PSS, ISMA), descarga progresiva de HTML (HTML5


<video> tag). Adobe Flash Streaming (RTMP) es soportado mediante el Adobe Flash
Soporte para
Player. Se planea el soporte de Microsoft Smooth Streaming con el port de Silverlight a
streaming
Android. Adobe Flash HTTP Dynamic Streaming estará disponible mediante una
actualización de Adobe Flash Player.

Soporte para Android soporta cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros,
hardware giroscopios, magnetómetros, sensores de proximidad y de presión, sensores de luz,
adicional gamepad, termómetro, aceleración por GPU 2D y 3D.

Google Play es un catálogo de aplicaciones gratuitas o de pago en el que pueden ser


Google Play
descargadas e instaladas en dispositivos Android sin la necesidad de un PC.

Android tiene soporte nativo para pantallas capacitivas con soporte multi-táctil que
inicialmente hicieron su aparición en dispositivos como el HTC Hero. La funcionalidad
Multi-táctil fue originalmente desactivada a nivel de kernel (posiblemente para evitar infringir
patentes de otras compañías). Más tarde, Google publicó una actualización para el
Nexus One y el Motorola Droid que activa el soporte multi-táctil de forma nativa.

24 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

El soporte para A2DF y AVRCP fue agregado en la versión 1.5; el envío de archivos (OPP)
y la exploración del directorio telefónico fueron agregados en la versión 2.0; y el marcado
Bluetooth
por voz junto con el envío de contactos entre teléfonos lo fueron en la versión 2.2. Los
cambios incluyeron:

Android soporta videollamada a través de Hangouts (ex-Google Talk) desde su versión


Videollamada
HoneyComb.

Multitarea real de aplicaciones está disponible, es decir, las aplicaciones que no estén
Multitarea
ejecutándose en primer plano reciben ciclos de reloj.

Características La búsqueda en Google a través de voz está disponible como "Entrada de Búsqueda"
basadas en voz desde la versión inicial del sistema.

Android soporta tethering, que permite al teléfono ser usado como un punto de acceso
alámbrico o inalámbrico (todos los teléfonos desde la versión 2.2, no oficial en teléfonos
Tethering con versión 1.6 o inferiores mediante aplicaciones disponibles en Google Play (por
ejemplo PdaNet). Para permitir a un PC usar la conexión de datos del móvil Android se
podría requerir la instalación de software adiciona

25 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.1.3. Versiones de Android.

Las versiones de Android reciben, en inglés, el nombre de diferentes postres o dulces. En cada versión
el postre o dulce elegido empieza por una letra distinta, conforme a un orden alfabético.

Nombre código Número de versión Fecha de lanzamiento Nivel de API

A Apple Pie 1.0 23 de septiembre de 2008 1

B Banana Bread 1.1 9 de febrero de 2009 2

C Cupcake 1.5 27 de abril de 2009 3

D Donut 1.6 15 de septiembre de 2009 4

E Eclair 2.0–2.1 26 de octubre de 2009 5–7

F Froyo 2.2–2.2.3 20 de mayo de 2010 8

G Gingerbread 2.3–2.3.7 6 de diciembre de 2010 9–10

H Honeycomb 3.0–3.2.6 22 de febrero de 2011 11–13

I Ice Cream Sandwich 4.0–4.0.4 18 de octubre de 2011 14–15

J Jelly Bean 4.1–4.3.1 9 de julio de 2012 16–18

K KitKat 4.4–4.4.4, 4.4W–4.4W.2 31 de octubre de 2013 19–20

L Lollipop 5.0–5.1.1 12 de noviembre de 2014 21–22

M Marshmallow 6.0–6.0.1 5 de octubre de 2015 23

N Nougat 7.0 15 de junio de 2016 24

Android 7.0 Nougat (Turrón) se libera la OTA el 22 de Agosto del 2016 y, de momento, para los Nexus 6,
5x, 6P, Nexus Player, Pixel C y Android One y proporciona las siguientes novedades:

Mejoras en el uso de la batería.


Es posible arrastrar contenido de una aplicación a otra.
Se mejora las animaciones
Se incorpora la opción de multiventana de forma nativa.
Se incorporan nuevos emojis (emoticonos).
Nuevo centro de notificaciones. (Se pueden cambiar directamente los iconos que se deseen ver
al deslizar los dedos hacia abajo).
Las notificaciones entrantes se pueden programar para que no aparezcan de forma continua o
evitarlas por un lapso de tiempo.

Debes conocer
¿Sabes lo que es API?

API es la interfaz de programación de aplicaciones, abreviada como API (del inglés: Application
Programming Interface), es el conjunto de subrutinas, funciones y procedimientos (o métodos, en
la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software

26 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

como una capa de abstracción. Son usadas generalmente en las bibliotecas de programación.

Una API representa la capacidad de comunicación entre componentes de software. Uno de los
principales propósitos de una API consiste en proporcionar un conjunto de funciones de uso general,
por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se
benefician de las ventajas de la API haciendo uso de su funcionalidad, evitándose el trabajo de
programar todo desde el principio. Las API asimismo son abstractas: el software que proporciona
una cierta API generalmente es llamado la implementación de esa API.

Por ejemplo, se puede ver la tarea de escribir "Hola Mundo" sobre la pantalla en
diferentes niveles de abstracción:

1. Haciendo todo el trabajo desde el principio:

1. Traza, sobre papel milimetrado, la forma de las letras (y espacio) "H, o, l, a, M,


u, n, d, o".
2. Crea una matriz de cuadrados negros y blancos que se asemeje a la sucesión
de letras.
3. Mediante instrucciones en ensamblador, escribe la información de la matriz en
la memoria intermedia (buffer) de pantalla.
4. Mediante la instrucción adecuada, haz que la tarjeta gráfica realice el volcado
de esa información sobre la pantalla.

2. Por medio de un sistema operativo para hacer parte del trabajo:

1. Carga una fuente tipográfica proporcionada por el sistema operativo.


2. Haz que el sistema operativo borre la pantalla.
3. Haz que el sistema operativo dibuje el texto "Hola Mundo" usando la fuente
cargada.

3. Usando una aplicación (que a su vez usa el sistema operativo) para realizar la
mayor parte del trabajo:

1. Escribe un documento HTML con las palabras "Hola Mundo" para que un
navegador web como Firefox, Chrome, Opera, Safari, Midori, Iceweasel, Web
o Internet Explorer pueda representarlo en el monitor.

Recomendación
¿Sabes qué son los emojis y de dónde procede
su nombre?

Los emojis son utilizados como los emoticonos


principalmente en conversaciones de texto a
través de teléfonos inteligentes. Algunos de
estos caracteres son muy específicos de la
cultura japonesa, como imágenes de geishas,
templos Dōjō y grupos de comida como sushi y
onigiri.

Te recomendamos que visites el siguiente enlace


de descarga de emojis:

Descarga los nuevos Emojis.

27 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.1.4.- Android Studio: Desarrollo en Android.


Android Studio es el IDE oficial de Android. Está diseñado para que Android
pueda acelerar el desarrollo y te permita crear las apps de mejor calidad para
todos los dispositivos de Android y, por tanto, proporciona las herramientas
más rápidas para la creación de aplicaciones en todos los tipos de
dispositivos Android.

Es un entorno de desarrollo integrado para la plataforma Android. Fue


anunciado el 16 de mayo de 2013 en la conferencia Google I/O, y reemplazó
a Eclipse como el IDE oficial para el desarrollo de aplicaciones para Android.
La primera versión estable fue publicada en diciembre de 2014.

Está basado en el software IntelliJ IDEA de JetBrains, y es publicado de forma gratuita a través de la Licencia
Apache 2.0. Está disponible para las plataformas Microsoft Windows, Mac OS X y GNU/Linux.

Android Studio está disponible para Windows 2003, Vista, 7, 8, 10 y GNU/Linux, tanto plataformas de 32 como de
64 bits, Linux con GNOME o KDE y 2 GB de memoria RAM mínimo y Mac OS X, desde 10.8.5 en adelante.

Android Studio está disponible para Windows 2003, Vista, 7, 8, 10 y GNU/Linux, tanto plataformas de
32 como de 64 bits, Linux con GNOME o KDE y 2 GB de memoria RAM mínimo y Mac OS X, desde
10.8.5 en adelante.

Los requisitos del sistema para las tres plataformas son:

2 GB de RAM (4 GB recomendados)    


400 MB de espacio en disco    
1 GB para Android SDK    
Monitor de 1280x800    
Java Development Kit 7

Para GNU/Linux:

GNU Library C 2.15 o superior.

Android Studio Ofrece herramientas personalizadas para programadores de Android. Se incluyen herramientas
completas de edición, depuración, pruebas y perfilamiento de códigos. Entre las últimas y más
importantes herramientas de Android Studio destacamos las siguientes:

Escribe código e iteraciones más rápido que nunca


Android Studio, basado en IntelliJ IDEA, proporciona el menor tiempo de respuesta en tu flujo de trabajo de
codificación y ejecución.

Instant Run
Cuando hagas clic en Run o Debug, la función Instant Run de Android Studio aplicará los cambios en el código
y los recursos en tu aplicación en ejecución. Esta interpreta de manera inteligente los cambios y a menudo los
entrega sin reiniciar tu app ni volver a compilar tu APK, para que puedas ver los efectos de inmediato.

Editor de código inteligente


Al ofrecer compleción avanzada de código, refactorización y análisis de código, el editor de código inteligente
te permite escribir un código más eficaz, trabajar más rápido y ser más productivo. A medida que escribes,
Android Studio proporciona sugerencias en una lista desplegable. Simplemente presiona Tab para insertar el
código.

Emulador rápido y cargado de funciones


Android Emulator se instala e inicia tus apps más rápido que un dispositivo real. También te permite crear
prototipos de tu app y probarlos en todas las configuraciones de dispositivos Android: teléfonos, tablets y
dispositivos Android Wear y Android TV. También puedes simular varias funciones de hardware, como la
localización de GPS, la latencia de red y las funciones multitáctiles.

28 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Configuración ilimitada de compilaciones


La estructura de proyectos y las compilaciones basadas en Gradle de Android Studio te brindan la flexibilidad
que necesitas para generar APK para toda clase de dispositivos.

Sistema de compilación sólido y flexible


Android Studio ofrece automatización de compilaciones, administración de dependencias y configuraciones de
compilación personalizables. Puedes configurar tu proyecto de modo que se incorporen bibliotecas locales y
alojadas, y definir variantes que incluyan código y recursos diferentes, además de aplicar configuraciones de
reducción de código y firma de apps.

Diseño para equipos


Android Studio se integra con herramientas de control de versión, como GitHub y Subversion, para que puedas
mantener a tu equipo actualizado respecto de los cambios en proyectos y compilaciones. El sistema de
compilación de código abierto de Gradle te permite adaptar la compilación a tu entorno y ejecutarla en un
servidor de integración continua, como Jenkins.

Crea código con confianza


A cada paso, Android Studio te permite asegurarte de crear el mejor código posible.

Plantillas de código y apps de ejemplo


En Android Studio se incluyen plantillas de proyectos y código que facilitan la adición de patrones bien
establecidos, como un panel lateral de navegación y un paginador de vistas. También puedes importar apps
totalmente funcionales desde GitHub directo desde la pantalla Create Project. Puedes experimentar con estas
apps, creadas por Google y otros, y también reutilizarlas.

Lintelligence
Android Studio ofrece un framework de análisis sólido y estático, e incluye más de 280 verificaciones de Lint
diferentes en toda tu app. A su vez, proporciona varias correcciones rápidas que te permiten solucionar con un
clic problemas en diferentes aspectos, como el rendimiento, la seguridad y la corrección.

Herramientas y frameworks de prueba


Android Studio proporciona una gran cantidad de herramientas y frameworks para ayudarte a probar tus apps
de Android. Crea y ejecuta código de prueba para tus apps, incluidas pruebas de JUnit 4 y de IU funcional.
Puedes ejecutar tus pruebas en un dispositivo, un emulador, un entorno de integración continua o Firebase Test
Lab.

Crea apps completas y conectadas


Android Studio reconoce que no todo el código se escribe en Java y tampoco se ejecuta en el dispositivo del
usuario.

Compatibilidad con C++ y NDK


Android Studio te permite usar C++ y el Android NDK junto con tu código Java. Proporciona resalte y
refactorización de sintaxis para C++, y un depurador basado en lldb que te permite depurar Java y C++ de
manera simultánea.

Integración en la nube
Las herramientas integradas para Google Cloud te permiten crear e implementar un backend para tu app de
Android usando servicios como Google Cloud Endpoints y Firebase Cloud Messaging

Estudio de recursos vectoriales


Android Studio facilita la creación de un nuevo recurso de imagen para cada densidad. Con Vector Asset Studio
puedes seleccionar íconos de diseño de material design proporcionados por Google o cargar tu propio archivo
SVG. Vector Asset Studio luego genera archivos de mapa de bits para cada densidad de pantalla a fin de
admitir versiones anteriores de Android no compatibles con el formato dibujable en vector.

Editor de traducciones
Translations Editor te proporciona una vista única de todos tus recursos traducidos, lo cual facilita la
modificación o adición de traducciones, y la localización de traducciones faltantes sin abrir cada versión del
archivo strings.xml. Proporciona, incluso, un vínculo para pedir servicios de traducción.

29 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Para saber más


Puedes ampliar información sobre IntelliJ IDEA (el IDE en el que se basa Android Studio) en su web
oficial:

IntelliJ IDEA.

Guía de usuario desarrollador Android Studio.

30 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.2.- Symbian OS.

El inicio de Symbian fue un producto originalmente desarrollado por varias empresas


como Nokia, Sony Ericsson, Psion, Samsung y muchos otros fabricantes de
dispositivos, junto con la propia empresa de desarrollo de software Symbian Ltd
(fundada entre Ericsson, Nokia, Motorola y Psion a finales de los noventa).

La idea era el desarrollo de un sistema operativo para dispositivos móviles que


compitiera con el de Palm (Palm OS) o con el de Microsoft (Windows CE).

Dentro de las distintas plataformas o interfaces de usuario basadas en Symbian, la S60 ha sido la más
ampliamente utilizada y la más conocida por el gran público, pudiéndose encontrar en gran cantidad de
dispositivos Nokia (ha sido principalmente desarrollada por ellos), como los de las series N o E y algunos modelos
del XpressMusic. También otros fabricantes como Samsung (por ejemplo en el L870) han incorporado la interfaz
de usuario S60 en algunos de sus dispositivos.

Otras plataformas/interfaces de usuario de Symbian han sido la serie S80 (para los Nokia 92xx, 93xx y 95xx), la
S90, UIQ (en los Sony Ericsson series P800 y P900 o los Motorola RIZR serie Z) y MOAP.

Para el desarrollo de aplicaciones sobre Symbian se utilizó inicialmente una versión específica de C++, aunque
hoy día se emplea C++ estándar con el framework Qt. Los entornos de desarrollo más habituales para programar
sobre Symbian son Carbide.C++ (basado en Eclipse), o bien QtCreator.

También se pueden desarrollar aplicaciones sobre Symbian utilizando Python (Python para S60), Adobe Flash o
Java ME.

La última versión de Symbian es OS 10. Nokia Belle, Feature Pack 2., con el lanciamiento el 11 de octubre de
2012 en forma de actualización.

El 12 de junio de 2013 Financial Times da a conocer que ese mismo verano Nokia dejará de vender dispositivos
Symbian.

Para saber más


Para saber más sobre Symbian se pueden consultar los artículos de la Wikipedia sobre Symbian, así
como los documentos externos a los que ésta hace referencia:

Symbian OS.

Debes conocer
Te recomendamos leas este interesante artículo sobre la historia y el futuro de Symbian:

La caída de Symbian: la era de iPhone.

31 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Autoevaluación

El sistema operativo Symbian ha sido habitual durante años en muchos smartPhones Nokia.
Verdadero Falso

Verdadero
Así es. La plataforma S60 de Symbian ha sido una de las estrellas de muchos dispositivos Nokia
(especialmente las series N y E).

32 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.3.- Windows Phone.

Es el sistema operativo desarrollado por Microsoft para smartPhones y otros


dispositivos móviles. Sustituye a su antecesor Windows Mobile. Las primeras
versiones de sistemas operativos para dispositivos móviles desarrolladas por
Microsoft eran conocidas como Windows CE (Compact Embeded), y de hecho la
familia de sistemas operativos de Microsoft para sistemas empotrados en general (smartPhones, PDA y otros
pequeños dispositivos) sigue llamándose Windows CE, así como el núcleo del sistema operativo.

Algunos de los primeros Windows CE podían encontrarse en dispositivos como las PDA iPAQ de Compaq (hoy
día parte de HP), las cuales surgieron como competencia directa de las PDA de Palm (las Palm Pilot) durante la
segunda mitad de la década de los noventa. Las iPAQ con Windows CE ofrecían un entorno más parecido al
Windows de los ordenadores de escritorio frente al aspecto más sobrio de la interfaz de usuario de Palm OS.

La última versión (a mediados del año 2014) de Windows para smartPhones y PDA
es Windows Phone 8.1. Algunas de las versiones anteriores han sido: Windows
Phone 6.5, Windows Mobile 6.x, Windows Mobile 5.x, Windows Mobile 2003 o
Pocket PC 2002. Todas ellas basadas en la plataforma Windows CE.

Entre los fabricantes que incluyen Windows Phone en sus dispositivos se


encuentran HTC (series S y T), Samsung (serie Omnia), LG (Optimus 7 y Pacific) y
Sony Ericsson (Xperia X7). Además, después de los últimos acuerdos entre Nokia y Microsoft, habrá móviles de
Nokia con este sistema operativo.

Para desarrollar aplicaciones sobre Windows Phone pueden utilizarse las tecnologías Silverlight y XNA de
Microsoft, así como el entorno de desarrollo Visual Studio.

Muy recientemente acaba de lanzarse Windows 10 Mobile, que sutituirá a Windows Phone.

Para saber más


Para saber más sobre Windows Phone se pueden consultar los artículos de la Wikipedia sobre este
sistema operativo, así como los documentos de su propia página oficial a los que hace referencia el
segundo enlace:

Windows Phone.

Windows Phone. Microsoft.

Windows Phone. Apps.

Recomendación
En este enlace puedes actualizar a Windows 10 Mobile que ya está disponible para los smartphones
compatibles con Windows Phone 8.1:

Actualizar a Windows 10 Mobile

33 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.2.4.- iOS.
Se trata del sistema operativo desarrollado por Apple originalmente
para su iPhone, aunque hoy día también es utilizado por otros
dispositivos de la empresa.

Apple sólo permite que este sistema operativo funcione sobre


hardware Apple. Es un sistema operativo derivado del Mac OS X,
también de Apple.

Tenía el 26 % de cuota de mercado de sistemas operativos móviles


vendidos en el último cuatrimestre de 2010, detrás de Android y
Windows Phone. Actualmente su sistema operativo se encuentra en la novena versión, mejor conocida como iOS
9.

La actual versión de iOS a septiembre de 2016 es la 9.3.

A través del App Store, puedes descargar apps nuevas para el iPhone, el iPad, el iPod touch o el Apple TV (4.ª
generación). Para descargar y comprar apps en el App Store, necesitas un ID de Apple. El ID de Apple es la
cuenta que utilizas para acceder a los servicios de Apple.

Como se ha comentado antes, los únicos dispositivos que


incorporan este sistema operativo son los distintos modelos de
dispositivos fabricados por la propia compañía Apple. Es decir, los
iPhones (iPhone, iPhone 3G, iPhone 3GS, iPhone 4, etc.), el iPod
Touch, el iPad, y la Apple TV.

Para desarrollar aplicaciones sobre iOS, las aplicaciones deben


ser compiladas específicamente para este sistema operativo
basado en la arquitectura ARM. Para ello puede utilizarse el kit de
desarrollo iPhone SDK. El lenguaje de programación principal
para este conjunto de herramientas es el Objective-C. Para poder
utilizar este kit de desarrollo es necesario un ordenador MAC con
un sistema operativo MAC OS X Leopard 10.5 o superior. Actualmente, en septiembre de 2016, tenemos el
sistema operativo MAC OS X Sierra 10.12.

A mediados de 2011 ni el entorno .NET y ni Adobe Flash son soportados por iOS. Lo mismo sucede con Java,
aunque se han producido algunos intentos de máquinas virtuales de Java (basadas en JAVA ME) para iOS, que
rozan la legalidad a la que están sometidas las restrictivas licencias de Apple. Por supuesto, siempre habrá
comunidades de usuarios y desarrolladores que intentarán saltarse estas restricciones (para más información al
respecto puedes consultar el término iOS Jailbreaking en la web).

El iOS SDK se puede descargar gratuitamente, aunque es necesario registrarse en el


Programa de Desarrollo del iPhone para poder publicar el software creado, lo cual
requiere la aprobación de la compañía Apple y un pago por ese servicio, que
proporcionará al programador las claves firmadas que le permitirán publicar en la
Apple Store.

Para saber más


Para saber más sobre iOS se pueden consultar sobre este sistema operativo en la
página oficial de Apple:

iOS.

34 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.3.- Plataformas de desarrollo y lenguajes de


programación.
Para poder desarrollar aplicaciones para alguno de los anteriores sistemas
operativos es necesario, disponer de alguna plataforma de desarrollo que
permita generar código ejecutable sobre esos sistemas, o bien sobre alguna
máquina virtual, o algún intérprete que esté instalado en el dispositivo y que
sea soportado por el sistema operativo.

Dependiendo de la versatilidad de la plataforma de desarrollo, la aplicación


podrá ser, más o menos portable a otros sistemas operativos y/o dispositivos.
Por ejemplo, si realizamos programas en Objective-C utilizando el SDK de Apple, lo más probable es que nuestra
aplicación pueda ser únicamente ejecutada en un dispositivo Apple (iPhone por ejemplo) sobre el que esté
implantado iOS. Si, por el contrario, desarrollamos un programa en Java usando el Java ME de Sun (hoy día ya
Oracle), y generamos una aplicación tipo midlet, ésta podrá ser ejecutada en cualquier dispositivo que disponga
de una pequeña máquina virtual de Java (KVM). Se trata nuevamente de la misma problemática que podemos
encontrar en el mundo de los ordenadores convencionales.

Entre las plataformas de desarrollo para móviles más populares se encuentran normalmente las que los propios
autores de los sistemas operativos ofrecen para trabajar sobre su plataforma. De hecho ya hemos hablado algo
sobre algunas de ellas al describir los sistemas operativos. Hacemos un repaso rápido de las más conocidas:

Windows Phone. Para desarrollar aplicaciones sobre Windows Phone pueden utilizarse las tecnologías
Silverlight, XNA y .NET Compact Framework de Microsoft. Las herramientas Visual Studio 2010 Express
y Expression Blend para Windows Phone son ofrecidas gratuitamente por Microsoft. El lenguaje más
habitual para el desarrollo ha sido C#, aunque la idea es que se pueda utilizar también otros lenguajes de la
plataforma .NET como Visual Basic .NET.
Android. Google proporciona también de manera gratuita el Android Studio para programar aplicaciones
sobre su sistema operativo. También es posible programar en otros lenguajes como C o C++ gracias al uso
del Android NDK (Native Development Kit) que permite generar código nativo (native code), frente al código
gestionado (managed code), que se ejecuta sobre una máquina virtual, como es el caso de Java o C#.
iOS. El SDK también se puede descargar gratis, pero para poder comercializar el software a través de su
tienda de aplicaciones hay que registrarse en el programa de desarrollo del iPhone, lo cual no es gratuito. El
lenguaje de programación en este caso es Objective-C.
Java ME: Este caso sería una excepción respecto a los demás, pues no se trata de una serie de
herramientas (bibliotecas, compiladores, IDEs, etc.) asociadas a un sistema operativo, sino de un
subconjunto de la plataforma Java orientada para el desarrollo sobre dispositivos móviles. Se programaría en
lenguaje Java y sería necesario que hubiera instalada una máquina virtual en el sistema operativo del
dispositivo sobre el que se deseara ejecutar la aplicación desarrollada (normalmente se puede programar en
modo nativo o bien con Java ME).

Autoevaluación
¿Cuáles de las siguientes plataformas están basadas en Java?

Windows Phone.

Java ME.

iOS.

Java ME.

35 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Mostrar retroalimentación

Solución

1. Incorrecto
2. Correcto
3. Incorrecto
4. Correcto

36 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.4.- Elección de una alternativa.

Caso práctico
Dado que María y Juan saben programar en Java pues lo aprendieron
en el módulo de Programación, y que Ada ha decidido elegir una opción
que esté relacionada con este lenguaje de programación las alternativas
que les quedan son Java ME y Android. En cualquier caso han de ser
siempre conscientes (al igual que ya lo fueron en el módulo de
Programación) que no se trata más que de una de las posibles
alternativas disponibles en el mercado y que más adelante (en futuros
proyectos dentro de la empresa o bien en alguna otra empresa) es probable que quizá tengan que
trabajar con otro lenguaje (por ejemplo C#, C++, Python, Objective-C) para otras plataformas.

Lo importante es adquirir unos conocimientos generales sobre este nuevo tipo de entornos, sobre
algunas bibliotecas concretas para estos dispositivos (por ejemplo los paquetes javax en el caso de
Java ME) y comenzar a desarrollar algunos ejemplos de aplicaciones para ir desarrollando una nueva
filosofía de trabajo. Ada les dice - Es posible que se trate de la primera ocasión en la que vais a crear
una aplicación que después se va ejecutar en una arquitectura diferente a donde la habéis
desarrollado ¿Recordáis los conceptos de compilador cruzado o de aplicaciones multiplataforma?
¡Aquí tenéis un ejemplo claro de este tipo de desarrollos!

En nuestro caso Java puede ser una buena elección dado que es el lenguaje con el
que aprendiste a programar en el módulo de Programación y por tanto no tendrás
que aprender un nuevo lenguaje y podrías dedicarte de lleno al aprendizaje de las
características específicas para el desarrollo de aplicaciones para dispositivos móviles.
Por otro lado, un lenguaje multiplataforma como Java es también muy adecuado para
un ciclo con un nombre como "Desarrollo de Aplicaciones Multiplataforma". Pero
en cualquier caso no debes olvidar que se trata de una de las muchas opciones con
las que te puedes encontrar en el mercado, y que estas alternativas irán apareciendo y
desapareciendo constantemente en función del éxito que vayan obteniendo.

Respecto a la plataforma, habría que elegir entre aquellas que estén relacionadas con Java (Java ME, Android).
Finalmente se ha decidido Java ME, que es la que lleva algo más de tiempo utilizándose (desde 2001). Se trata de
una buena opción para desarrollar pequeñas aplicaciones, que podemos emular en un PC durante la fase de
desarrollo y posteriormente subirlas fácilmente al dispositivo. El desarrollo de aplicaciones mediante estas API
resulta bastante económico de portar a otros dispositivos que tengan implantada una máquina virtual de Java. En
cualquier caso, siempre habrá que estar a la expectativa de nuevas tecnologías. Por ejemplo, en el caso de Java
no hay que perder de vista la alternativa Android, debido a la gran importancia que tiene actualmente en cuota de
mercado.

En cuanto al entorno de desarrollo, vas a continuar con el que habíamos utilizado en el módulo de Programación:
Netbeans. Nuevamente debes recordar que no es más que una de las posibles alternativas que se pueden
presentar para trabajar con Java y Java ME. Otras alternativas podrían ser por ejemplo JBuilder.

Recapitulando, para facilitarte el aprendizaje vamos a trabajar con:

Lenguaje Java.
Plataforma Java ME.
IDE Netbeans.
Sistema operativo que permita una máquina virtual Java, aunque normalmente usaremos un emulador en el
PC.
Hardware (smartPhones, PDAs, etc.) que soporte un sistema operativo del tipo anterior.

Además del IDE Netbeans puedes trabajar, entre otras plataformas de software, con Eclipse que está compuesto
por un conjunto de herramientas de programación de código abierto multiplataforma. Esta plataforma,
típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java
llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse. La descarga

37 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

de Eclipse la puedes hacer desde este enlace: Eclipse. La última versión de Eclipse, desde Junio de 2016, es la 4.6
Neon.

Como suele suceder en el mundo real, normalmente no podrás elegir una opción u otra en función de
tus preferencias personales, sino más bien dependiendo cuáles sean las necesidades de tu cliente. Ésa
es una buena razón para intentar estar siempre al día.

Autoevaluación

Si deseáramos trabajar con una plataforma de desarrollo para aplicaciones móviles basada en
Java lo más adecuado sería decidirse por el sistema operativo Windows Phone o bien por iOS.
Verdadero Falso

Falso
En absoluto. Estos sistemas operativos están basados en otras plataformas sobre todo con
lenguajes como C# (en el caso de Windows Phone) u Objective-C (iOS). Si quieres trabajar con
Java sería más adecuado trabajar con Java ME o con Android.

38 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

3.5.- La plataforma Java ME.

Caso práctico
Una vez que Ada ha decido que en la empresa BK Programación se comience a trabajar en el
entorno Java ME con el lenguaje de programación Java, lo primero que María y Juan tienen que
hacer es empezar a analizar cómo es este nuevo entorno. Dado que ambos ya tienen ciertos
conocimientos de programación en lenguaje Java, las preguntas que se hacen ahora son del tipo
¿Qué tipo de APIs (paquetes, clases, métodos, etc.) nuevas hay que aprender? ¿Existen nuevos
conceptos relacionados con estas APIs? ¿Qué estructura tienen? ¿Qué máquina virtual se utiliza?
¿Qué características mínimas deben cumplir los dispositivos para poder ejecutar aplicaciones
desarrolladas bajo este entorno? ¿Con qué herramientas de desarrollo vamos a trabajar? Ada
intentará resolver algunas de estas dudas a lo largo de las siguientes secciones.

Cuando Sun (hoy día parte de la empresa Oracle) lanzó su nuevo estándar
Java2, definió tres entornos para el desarrollo y ejecución de sus aplicaciones:
J2SE, J2EE y J2ME.

J2SE (Java 2 Platform, Standard Edition – hoy día simplemente Java


SE), que sería la base de la tecnología Java. Esta versión de Java
contiene el conjunto básico de herramientas usadas para desarrollar
Applets y las API orientadas a la programación de aplicaciones de
usuario final (estructuras de datos básicas, interfaces gráficas,
comunicaciones, multimedia, etc.).
J2EE (Java 2 Platform, Enterprise Edition – hoy día simplemente Java EE), basado en el anterior, pero
orientado al software empresarial y por tanto añadiendo una serie de características adicionales (ejecución
distribuida y remota, integración de datos provenientes de sistemas heterogéneos, gestión de transacciones,
etc.).
J2ME (Java 2 Platform, Micro Edition – hoy día simplemente Java ME), enfocada al desarrollo de
aplicaciones para dispositivos con capacidades muy reducidas, tales como teléfonos móviles, PDA,
electrodomésticos inteligentes, etc.

Esta última plataforma Java (Java ME) es la que vas a utilizar para tu aprendizaje en el desarrollo de aplicaciones
para dispositivos móviles. Java ME contiene una pequeña parte de las API de la plataforma Java estándar (Java
SE), es decir, un reducido conjunto de sus clases (esencialmente una porción de los paquetes java.lang, java.io y
java.util). Además, la máquina virtual de Java utilizada también es diferente a la habitual JVM que ya has utilizado
para programar por ejemplo aplicaciones de escritorio en un ordenador o Applets para la web. En este caso se
trata de una máquina virtual mucho más pequeña conocida con el nombre de KVM. (Kilo Virtual Machine).

Por otro lado, Java ME dispone de algunas clases específicas que no forman parte del estándar, pues tratan de
manera especial algunos aspectos concretos de la programación para dispositivos con capacidades restringidas
(estas clases se encontrarían en el paquete javax.microedition).

La plataforma Java Micro Edition (Java ME), consiste en una especificación de un subconjunto de la
plataforma Java orientada para proporcionar una colección de API de desarrollo de software para
dispositivos con recursos restringidos (teléfonos móviles, PDA, electrodomésticos inteligentes, etc.). Se
utiliza para ello una pequeña máquina virtual de Java conocida como KVM.

39 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Para saber más


Para obtener más información sobre Java ME puede consultarse en los sitios web de Oracle y de
Java:

Visión general de la tecnología Java ME.

Tecnología Java Me y Java Card.

Java 2S.

Tutorial Java 2S.

40 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

4.- El entorno de ejecución.

Caso práctico
Dado que Ada ya ha "presentado" a María y Juan la plataforma Java ME, ahora va a comenzar a
explicarles una serie de conceptos generales relacionados con la ejecución de aplicaciones en este
nuevo contexto como pueden ser el de máquina virtual, configuración o perfil.

Si examinas el entorno de ejecución de una máquina con la plataforma Java


ME puedes observar la siguiente estructura de capas o niveles:

Entorno de ejecución
de Java ME

Entorno de ejecución Java ME

Paquetes opcionales

Perfil

Configuración

Máquina virtual Java

Lo primero que te encuentras sobre el sistema operativo del dispositivo será una máquina virtual de Java, un
viejo conocido para los o las que hayáis estudiado el módulo de Programación. Por encima de la máquina virtual
se encontrará una configuración, que consiste en el conjunto de clases básicas para la programación sobre un
grupo de dispositivos que tienen similar memoria y capacidades de procesamiento. Por encima de la configuración
observamos que hay un perfil, que extiende la configuración y completa las necesidades específicas para una
cierta familia de dispositivos. Un perfil tiene asociado un conjunto específico de bibliotecas mínimas. En un nivel
superior podríamos colocar la utilización de determinados paquetes opcionales para el uso de determinadas
funcionalidades concretas (por ejemplo uso de Bluetooth, conexión HTTP, etc.).

Por tanto, un entorno de ejecución concreto de Java ME estará compuesto de: máquina virtual + configuración +
perfil + paquetes opcionales, todo ello sobre el sistema operativo anfitrión que se encuentre implantado en el
dispositivo.

Para saber más


Para obtener más información sobre el entorno de ejecución sobre el que funciona Java ME puedes
consultar los siguientes artículos sobre la plataforma Java ME:

Informe actualizado sobre la plataforma Java ME (en inglés).

KVM y CLDC (en inglés).

41 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

4.1.- Entorno de desarrollo en Android. Instalación de


Android Sudio y características.

Android Studio es el entorno de desarrollo integrado (IDE) oficial para el desarrollo de aplicaciones para
Android y se basa en IntelliJ IDEA .

Además del potente editor de códigos y las herramientas para desarrolladores de IntelliJ. Android
Studio ofrece aún más funciones que aumentan tu productividad durante la compilación de apps para
Android, como las siguientes:

Sistema de compilación flexible basado en Gradle.


Un emulador rápido con varias funciones.
Un entorno unificado en el que puedes realizar desarrollos para todos los dispositivos Android.
Instant Run, para aplicar cambios mientras tu app se ejecuta sin la necesidad de compilar un
nuevo APK.
Integración de plantillas de código y GitHub, para ayudarte a compilar funciones comunes de las
apps e importar ejemplos de código.
Gran cantidad de herramientas y frameworks de prueba.
Herramientas Lint para detectar problemas de rendimiento, uso, compatibilidad de versión, etc.
Soporte integrado para Google Cloud Platform, que facilita la integración de Google Cloud
Messaging y App Engine.
Compatibilidad con C++ y NDK.

En este vídeo puedes ver cómo se instala Android Studio:

1.- Curso Introducción a Android - Instalació...

Recomendación
En los siguientes enlaces puedes descargarte Android Studio e información sobre las versiones.

Android Studio. IDE oficial para Android. Descarga.

Versiones de Android Studio.

En es

42 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

4.2.- Máquinas Virtuales.


Una máquina virtual es una aplicación software que emula el comportamiento de otra máquina
(por ejemplo la emulación de un ordenador "virtual" dentro de un ordenador "real").

En el caso de una máquina virtual de Java (JVM – Java Virtual Machine), si recordamos lo
visto en el módulo de Programación, se trata de un programa encargado de interpretar
código intermedio (bytecode en el caso de Java) de los programas precompilados (en lenguaje
Java) a código máquina ejecutable por el hardware (instrucciones máquina), realizar las
llamadas al sistema operativo necesarias, velar por la seguridad e integridad del código
ejecutado, etc.

De esta manera, la JVM proporciona al programa compilado en Java independencia de la


plataforma hardware y del sistema operativo que corra sobre él.

Las JVM clásicas para la plataforma Java SE son demasiado pesadas (necesidades de memoria, requerimientos
de cómputo, pantalla, etc.) para dispositivos pequeños. Imagina por ejemplo la limitada pantalla de un teléfono
móvil. Es fácil suponer que ese tipo de pantallas serían incapaces de soportar toda la funcionalidad proporcionada
por la AWT, que es la principal interfaz gráfica de usuario que tiene Java. Es por esta razón que la plataforma Java
ME ha propuesto otras máquinas virtuales bastante más ligeras.

Por otro lado, una única plataforma de Java podría no encajar adecuadamente con todos los modelos de
dispositivos posibles. Es por ello por lo que Java ME introdujo los conceptos de configuración y de perfil.

Las dos máquinas virtuales disponibles en Java ME son la KVM (K Virtual Machine, se le ha dado ese nombre
porque sólo ocuparía unos pocos Kilobytes de memoria) y la CVM (Compact Virtual Machine), algo más pesada.

Para saber más


Para obtener más información sobre la máquina virtual KVM puedes consultar el siguiente artículo en
el sitio web de Oracle:

The K virtual machine (KVM) (en inglés)

Autoevaluación
¿Cuáles son las máquinas virtuales disponibles en Java ME?

VMWare y Virtual Box.


KVM y CVM.
PDA y smartPhones.
Apple y Microsoft.

Incorrecto. Son máquinas virtuales pero no máquinas virtuales de Java.

En efecto, esas son las dos máquinas virtuales.

Incorrecto, no son máquinas virtuales sino dispositivos.

Incorrecto, no son máquinas virtuales de Java sino fabricantes.

43 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Solución

1. Incorrecto
2. Opción correcta
3. Incorrecto
4. Incorrecto

44 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

4.3.- Configuraciones.
Una configuración define una plataforma Java para un amplio rango de dispositivos,
estando directamente relacionada con una máquina virtual.

Las configuraciones proporcionan un conjunto de clases básicas para dispositivos de


características específicas. En Java ME se puede optar entre dos tipos de
configuraciones en función del tipo de dispositivo sobre el que se vaya a desarrollar
una aplicación:

Configuración CLDC (Connected Limited Device Configuration), enfocada a


dispositivos con restricciones de procesamiento y memoria. Requerirá el uso de la máquina virtual KVM.
Configuración CDC (Connected Device Configuration), enfocada a dispositivos sin tantas limitaciones.
Utiliza la máquina virtual CVM.

Las configuraciones están compuestas por una máquina virtual y un conjunto mínimo de bibliotecas de clases, las
cuales son un mínimo denominador común con el que contarán todos los dispositivos de una configuración dada;
o visto de otro modo, ofrecen la funcionalidad para un rango particular de dispositivos con características
comunes.

El mantenimiento del ciclo de vida de la aplicación, interfaces de usuario o manejo de eventos no recae sobre la
configuración, sino que de eso se encargan los perfiles.

En este curso utilizarás la configuración CLDC.

Configuración CDC.

La configuración CDC está orientada a dispositivos con ciertas capacidades de procesamiento y memoria no tan
restringidas como los dispositivos móviles que nosotros vamos a utilizar. Entre esos dispositivos no tan limitados
se encuentran los descodificadores de TDT, televisores con Internet, sistemas de navegación GPS,
electrodomésticos "inteligentes", etc. Se utiliza una máquina virtual de Java similar a la de Java SE pero con
ciertas limitaciones en las capacidades gráficas y de memoria.

Configuración CLDC.

La configuración CLDC está orientada a dispositivos dotados de conexión y con limitaciones en cuanto a
capacidad gráfica, de procesamiento y memoria. Entre estos dispositivos se encuentran los teléfonos móviles y las
PDA, que son para los que nosotros vamos a desarrollar tus aplicaciones.

Los dispositivos que utilizan CLDC deben cumplir los siguientes requisitos:

Tener entre 160 KB y 512 KB de memoria disponible.


Procesador de 16 o 32 bits, con al menos 25 Mhz de frecuencia de reloj.
Bajo consumo, pues se utilizan normalmente baterías.
Disponer de conexión a algún tipo de red, normalmente sin cable, con conexión intermitente y ancho de
banda limitado.

La CLDC aporta las siguientes funcionalidades a los dispositivos:

Un subconjunto del lenguaje Java y todas las restricciones de su máquina virtual (KVM).
Un subconjunto de las bibliotecas Java del núcleo.
Soporte de E/S elemental.
Soporte para acceso a redes.
Seguridad.

La configuración CLDC dispone también de un modelo de seguridad sandbox, como sucedía con los Applets.

Autoevaluación
¿Cuál es la configuración "ligera" en Java ME?

CVM.

45 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

CLDC.
CDC.
Android.

Incorrecto. Es una máquina virtual y no una configuración.

¡Bravo! Recuerda la "L" de "limited".

Incorrecto. La configuración CDC está orientada a dispositivos con ciertas capacidades de


procesamiento y memoria no tan restringidas.

Incorrecto, no es una configuración, sino un sistema operativo.

Solución

1. Incorrecto
2. Opción correcta
3. Incorrecto
4. Incorrecto

46 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

4.3.1.- Configuración del IDE de Android Studio.


Android Studio facilita varias plantillas que ayudan a cumplir con las especificaciones de tu sistema, como el Java
Development Kit (JDK) y la memoria RAM disponible, y configuran los ajustes y requisitos predeterminados, como
una emulación optimizada predeterminada del Android Virtual Device (AVD) e imágenes del sistema actualizadas.

Para acceder a documentación específica acerca de la configuración y el uso del emulador y el dispositivo,
consulta el enlace proporcionado a continuación:

Administración de dispositivos virtuales, Uso de dispositivos de hardware y Controladores USB de OEM.

Para saber más


Para más información de la configuración del IDE de Android Studio y del proxy puedes visitar el
siguiente enlace:

Configuración de Android Studio.

Recomendación
Te recomendamos que veas este vídeo para acelerar la ejecución de estos dispositivos virtuales en
Android Studio:

Curso Android. Acelerando AVD. Vídeo 5

47 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

4.4.- Perfiles.
Los perfiles consisten en un conjunto de APIs de alto nivel que combinados con una
configuración concreta permitirán ofrecer un entorno de ejecución completo y
específico para cada categoría de dispositivo. Los perfiles definen el modelo de ciclo
de vida de la aplicación, el interfaz de usuario y el acceso a las propiedades
específicas del dispositivo. Son bibliotecas de clases Java orientadas a implementar
funcionalidades de alto nivel para familias de dispositivos.

Un perfil consiste en un conjunto de APIs orientado a un ámbito de aplicación determinado. Sirve para identificar a
un grupo de dispositivos por la funcionalidad que proporcionan (teléfonos móviles, electrodomésticos, etc.) y el
tipo de aplicaciones que se ejecutarán sobre ellos. Por ejemplo, uno de los componentes más importantes en la
definición de un perfil suelen ser las bibliotecas de interfaz gráfica, donde nos podemos encontrar, por ejemplo,
grandes diferencias entre el menú de texto de un teléfono móvil y el táctil de una PDA.

¿En qué se diferencia un perfil de una configuración?

Mientras que una configuración (CDC o CLDC) definía las características de una familia de dispositivos, el perfil se
encarga de las APIs que definen las características de un dispositivo (o un conjunto muy reducido). Es decir, que
dentro de una configuración concreta, el perfil sería un conjunto de APIs que dotan a la configuración de
funcionalidad específica, concretando mucho más la familia de dispositivos para la cual se va a desarrollar la
aplicación. En cierto modo un perfil podría verse como una extensión de una configuración: proporciona las
bibliotecas necesarias para desarrollar aplicaciones para un tipo de dispositivo en particular.

Para la configuración CDC existen los siguientes perfiles:

Foundation Profile (FP). Proporciona un conjunto de APIs sobre la configuración CDC con capacidades de
acceso a red orientada a dispositivos que carecen de interfaz gráfica como por ejemplo los descodificadores
de TDT.
Personal Profile (PP). Para dispositivos con un interfaz gráfico completo AWT, capacidades web y soporte
de Applets Java.
RMI Profile. Se construye sobre el Foundation Profile. Soporta un subconjunto de las APIs Java SE v1.3
RMI. Algunas de las características de estas bibliotecas se han eliminado debido a las limitaciones de
cómputo y memoria.

Para la configuración CLDC disponemos de estos otros perfiles:

PDA Profile. Diseñado para PDA de gama baja, tipo Palm, con una pantalla y algún tipo de puntero.
Mobile Information Device Profile (MIDP). Diseñado para smartPhones y PDAs, incluye la interfaz de
usuario, conectividad de red, almacenamiento local de datos y gestión de aplicaciones. Combinado con
CLDC, MIDP aporta un entorno de ejecución para Java que minimiza los consumos de memoria y de
procesador. Este perfil será el que utilizaremos para desarrollar aplicaciones móviles en este módulo.

Para saber más


Para obtener más información sobre la máquina virtual KVM, la configuración CLDC y el perfil MIDP
puede consultarse el siguiente artículo de Sun en sitio web de Oracle:

J2ME Building Blocks for Mobile Devices - White Paper on KVM and the Connected, Limited
Device Configuration (CLDC) (en inglés).

Autoevaluación
¿Qué perfil de los siguientes se construye sobre la configuración CLDC?

MIDP.

48 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

CDC.
Personal Profile.
Foundation Profile.

Éste será el perfil vas a utilizar durante el curso.

Incorrecto. CDC es una configuración y no un perfil.

Incorrecto. Configuración CDC.

Incorrecto. Configuración CDC.

Solución

1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto

49 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

5.- Jerarquía de clases de perfil.

Caso práctico
María y Juan ya tienen más o menos claro los niveles de máquina virtual, configuración y perfil, pero
ahora sienten la necesidad de saber qué significa la elección de una configuración y perfil en cuanto
al código que pueden escribir en Java. Es decir, si se ha fijado una configuración y perfil, ¿qué
paquetes Java y qué clases van a tener disponibles para poder programar? ¿Cuál va a ser la API con
la que van a poder desarrollar sus aplicaciones?

Una vez elegido un entorno de programación y un lenguaje (en nuestro caso Java ME con Java), y decididas una
configuración (CLDC) y un perfil (MIDP), ya puedes proceder a echar un vistazo a los paquetes que se encuentran
disponibles para desarrollar sobre este entorno.

Las aplicaciones que realices utilizando el perfil MIDP son conocidas con Midlets (por hacer algo así como un
paralelismo con los Applets). Por tanto un midlet es una aplicación Java construida con el perfil MIDP sobre la
configuración CLDC.

La mayoría de las bibliotecas de clases que incluye la configuración CLDC son un subconjunto de las incluidas en
las ediciones Java SE, de manera que se asegura la compatibilidad y portabilidad de las aplicaciones.

Recomendación
Debemos siempre recordar que para cualquier aplicación y contexto en el que trabajemos, hemos de
procurar el máximo de compatibilidad que nos sea posible. Nos ahorrará trabajo en el futuro y nos
evitará muchos quebraderos de cabeza.

A continuación vas a tener una visión general de los paquetes y las clases disponibles para programar Midlets, que
serán las aplicaciones móviles que vas a desarrollar como ejemplo. En la siguiente unidad podrás ver más
concretamente las jerarquías de clases para elementos gráficos y otras particularidades específicas de los
dispositivos móviles.

Debes conocer

50 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

En el siguiente enlace encontrarás la referencia a la API completa para Java ME con todos los JSR
que puedas necesitar para programar. Obviamente no se trata saberse "de memoria" las clases e
interfaces disponibles, sino de saber llegar hasta aquí para poder estar adecuadamente
documentado cuando estemos programando.

Guía de referencia de la API de Java ME.

Autoevaluación
¿Cómo se llaman las aplicaciones desarrolladas en Java ME con el perfil MIDP?

Midlets.
Applets.
Servlets.
Booklets.

¡Correcto! Éstas serán las aplicaciones que vas a desarrollar durante el curso.

Incorrecto. Es una aplicación Java cliente. Suelen estar insertas en una página web.

Incorrecto. Es una aplicación Java de servidor que se ejecuta a instancias de un servidor web.

Incorrecto. No es ningún tipo de aplicación Java.

Solución

1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto

51 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

5.1.- Clases CLDC heredadas de Java SE.


CLDC proporciona un conjunto de clases heredadas de la plataforma Java SE (algo
menos de 40 clases). En general provienen de los paquetes java.lang, java.util y java.io.
Cada una de estas clases debe ser idéntica o bien ser un subconjunto de la
correspondiente clase de Java SE. Tanto los métodos como la semántica de cada
clase deben permanecer invariables (son iguales que en Java SE). Lógicamente perfil
MIDP dispondrá de todas estas clases al estar construido sobre la configuración
CLDC.

Ahora vas a hacer un rápido recorrido por los paquetes y clases disponibles en CLDC que son un subconjunto de
Java SE.

Paquetes de la configuración CLDC que


contienen las clases heredadas de Java SE

Paquetes CLDC Descripción

java.io Clases e interfaces de E/S básica.

java.lang Clases e interfaces de la Máquina Virtual.

java.util Clases e interfaces de utilidades estándar.

Clases de sistema para la


configuración CLDC (heredadas
de Java SE)

Clases de Sistema (subconjunto de java.lang)

java.lang.Class

java.lang.Object

java.lang.Runnable

java.lang.Runtime

java.lang.String

java.lang.StringBuffer

java.lang.System

java.lang.Thread

java.lang.Throwable

Clases de datos para la


configuración CLDC (heredadas
de Java SE)

Clases de Datos (subconjunto de java.lang)

Java.lang.Boolean

java.lang.Byte

java.lang.Character

java.lang.Integer

java.lang.Long

java.lang.Short

52 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Clases de utilidades para la


configuración CLDC (heredadas de
Java SE)

Clases de Utilidades (subconjunto de java.lang)

Java.lang.Calendar

java.lang.Date

java.lang.Enumeration

java.lang.Hashtable

java.lang.Random

java.lang.Stack

java.lang.TimeZone

java.lang.Vector

Clases de E/S para la


configuración CLDC
(heredadas de Java SE)

Clases de E/S (subconjunto de java.lang)

Java.lang.ByteArrayInputStream

java.lang.ByteArrayOutputStream

java.lang.DataInput

java.lang.DataOutput

java.lang.DataInputStream

java.lang.DataOutputStream

java.lang.InputStream

java.lang.InputStreamReader

java.lang.OutputStream

java.lang.OutputStreamWriter

java.lang.PrintStream

java.lang.Reader

java.lang.Writer

53 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

5.2.- Clases específicas de la configuración CLDC.


La plataforma Java SE contiene los paquetes java.io y java.net, responsables de las
operaciones de E/S pero en el caso de la configuración CLDC en Java ME, debido a
las limitaciones de memoria y a la gran variedad de dispositivos que abarca, no es
posible incluir dentro de ella todas las clases de esos paquetes.

CLDC dispone de un conjunto de clases genérico para comunicaciones conocido


como "Generic Connection Framework" o GCF. Consisten en un conjunto de
clases e interfaces diseñado para facilitar el acceso a sistemas de almacenamiento y
conexión, sin necesidad de especificar ningún requisito software o hardware. Estas clases e interfaces (la mayoría
son interfaces) se encuentran en el paquete javax.microedition.io:

Clases e interfaces de GFC en la configuración CLDC

Clase Descripción

Connector Clase genérica que puede crear cualquier tipo de conexión.

Connection Interfaz que define el tipo de conexión más genérica.

InputConnection Interfaz que define una conexión de streams de entrada.

OutputConnection Interfaz que define una conexión de streams de salida.

StreamConnection Interfaz que define una conexión basada en streams.

ContentConnection Interfaz que extiende a StreamConnection para trabajar con datos.

Datagram Interfaz genérico de datagramas.

DatagramConnection Interfaz que define una conexión basada en datagramas.

StreamConnectionNotifier Interfaz que notifica una conexión. Permite crear una conexión con el lado del servidor.

Hay que tener en cuenta que esta biblioteca no incluye implementaciones de ningún protocolo, simplemente sirve
como soporte para ello. Las clases que verdaderamente llevan a cabo la implementación de dichos protocolos se
encuentran ya en cada perfil. Por ejemplo, cualquier fabricante de dispositivos que dé soporte a MIDP debe
implementar HTTP.

Debes conocer
En el siguiente enlace encontrarás la referencia a la API completa para la configuración CLDC 1.1
(paquetes java.lang, java.util, java.io y javax.microedition.io.). Volvemos a recordar que no se trata de saberse
"de memoria" las clases e interfaces disponibles, sino de saber utilizar esta documentación sobre la
jerarquía de clases para que puedas programar con facilidad.

Guía de referencia de la API de CLDC 1.1.

Autoevaluación

La configuración CLDC en Java ME contiene todas las clases de los paquetes java.io y java.net.

54 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Verdadero Falso

Falso
No es posible. En la configuración CLDC, debido a las limitaciones de memoria y a la gran
variedad de dispositivos que abarca, no es posible incluir dentro de ella todas las clases de esos
paquetes. Lo que hace es utilizar un conjunto de clases genérico para comunicaciones que se
encuentran en el paquete javax.microedition.io.

55 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

5.3.- Paquetes del perfil MIDP.


El perfil MIDP incorpora a un conjunto de bibliotecas y clases para interfaces
gráficas, almacenamiento, persistencia y otros aspectos más avanzados específicos
del perfil de dispositivo. Al estar construido sobre la configuración CLDC este perfil
también incluye los paquetes que hemos visto antes para el funcionamiento normal
de un programa (clases base, tipos, datos, E/S, utilidades, etc.).

Los paquetes que están incluidos en el perfil MIDP son (incluidos los de la
configuración CLDC):

Paquetes Java del perfil MIDP

Paquetes del perfil


Descripción
MIDP

javax.microedition.lcdui Clases e interfaces para GUIs.

javax.microedition.rms
Record Management Storage. Soporte para el almacenamiento persistente del
dispositivo.

javax.microedition.midlet Clases de definición de la aplicación.

javax.microedition.io Clases e interfaces de conexión genérica.

java.io Clases e interfaces de E/S básica.

java.lang Clases e interfaces de la Máquina Virtual.

java.util Clases e interfaces de utilidades estándar.

Como ejemplo aquí puedes observar la jerarquía de clases para el paquete javax.microedition.lcdui que es el que
proporciona las bases del GUI:

Volverás a ver esta jerarquía de clases con más detenimiento cuando estudies los distintos componentes gráficos
en un midlet en

Debes conocer
Al igual que en los apartados anteriores, aquí tienes la referencia a la API completa para el perfil
MIDP 2.0.

Guía de referencia de la API de MIDP 2.0.

Autoevaluación

56 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Las clases de la interfaz gráfica de usuario (GUI) en el perfil MIDP se encuentran en el paquete
javax.microedition.lcdui

Verdadero Falso

Verdadero
Así es. Las bases del GUI de MIDP se encuentran en la jerarquía de clases proporcionada por
ese paquete.

57 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

6.- Módulos para el desarrollo de aplicaciones.

Caso práctico
Una vez realizado un repaso general sobre las características con las que podemos encontrarnos en
el entorno de ejecución de una aplicación Java ME, María y Juan discuten acerca de lo que es
necesario tener instalado en el ordenador para poder empezar a desarrollar algo. ¿Qué bibliotecas
adicionales hay que instalar para poder desarrollar con Java ME? ¿Es suficiente con el JDK clásico?
¿Es necesario o aconsejable tener también un IDE?

Para compilar un midlet con Java ME se necesita como mínimo tener instalado el Java
ME SDK el cual se puede descargar de la web de Oracle (a mediados de 2011 la versión
disponible era la 3.0). A partir de ahí se pueden descargar e instalar el resto de
herramientas (emuladores, entornos de desarrollo, depurador, etc.).

Del mismo modo que se haría con Java ME podría hacerse con cualquier otra
plataforma de desarrollo con la que se hubiera decidido trabajar: Windows Phone, iOS,
Android, etc. En cada caso serían necesarias unas herramientas específicas
(compiladores, editores, depuradores, emuladores, etc.). Todo esto lo hemos tratado ya
en un apartado anterior.

En el caso particular de Java ME puedes optar por la posibilidad que se ha planteado de instalar el Java ME SDK
junto con otros elementos o bien utilizar algún otro entorno compatible que traiga todas las herramientas
necesarias incorporadas. Para este curso se ha decido usar un entorno muy conocido por los programadores de
Java: vas a utilizar Netbeans con los paquetes necesarios para poder trabajar con Java ME.

Para saber más


Si quieres probar con las herramientas que proporciona directamente Oracle en lugar de utilizar
Netbeans, puedes echar un vistazo a la página de descargas del Java ME SDK en el sitio web de
Oracle:

Java ME SDK Download.

58 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

7.- Entornos integrados de trabajo.

Caso práctico
Juan y María ya han aprendido que necesitan un SDK específico para el desarrollo en Java ME, y
hemos visto cómo Ada les ha recomendado utilizar un entorno integrado de trabajo, como por
ejemplo Netbeans. Se trata ahora de hacer un repaso rápido sobre distintas alternativas de entornos
de trabajo, instalar una de ellas y pasar rápidamente a poder utilizar las herramientas proporcionadas
por esa herramienta.

Para poder desarrollar un midlet sobre un dispositivo móvil con Java ME


necesitarás un entorno con el que poder realizar tu trabajo habitual de
programador (editores, compiladores, depuradores, emuladores, etc.).
Dependiendo de tus preferencias personales y de las opciones disponibles
tendrás que elegir entre las distintas alternativas que se te propongan.

Entre las posibilidades para desarrollar aplicaciones Java ME puedes encontrar:

Netbeans. Entorno utilizado para desarrollar aplicaciones Java (Java SE y Java EE) y lenguajes (C, C++,
PHP) y que también permite el trabajo con Java ME.
Light Weight User Interface Toolkit (LWUIT). Desarrollada por Sun (hoy día ya Oracle) para el desarrollo de
aplicaciones con Java ME.
Eclipse. Requiere la instalación del plugin EclipseME.
Otros entornos que permitan el desarrollo de proyectos Java ME como BlueJ, IntelliJ, etc.

En tu caso, y como se ha decidido en el apartado anterior, vas a trabajar con el entorno Netbeans. Ésta será la
herramienta que utilizarás a partir de ahora y durante el resto del curso para el desarrollo de aplicaciones sobre
dispositivos móviles.

Para saber más


Puedes encontrar más información acerca de las características que ofrece el IDE Netbeans para el
desarrollo con Java ME en la web de Netbeans:

Java ME (Micro Edition) & Embedded.

Autoevaluación

Para poder desarrollar un midlet sobre un dispositivo móvil con Java ME necesitarás un
entorno de trabajo desarrollado por Nokia.

59 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Verdadero Falso

Falso
En absoluto. Existen multitud de entornos de desarrollo (unos de pago y otros de software libre)
con los que puedes desarrollar aplicaciones para Java ME. Entre los más conocidos se
encuentran Eclipse y Netbeans.

60 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

7.1.- Instalación de NetBeans con Java ME.


Para instalar la herramienta Netbeans con Java ME puedes seguir más o
menos los mismos pasos que seguiste en el módulo de Programación, con la
excepción de que se debe incluir la tecnología Java ME (tanto al descargar el
paquete como al instalarlo):

Selecciona la plataforma o sistema operativo. Existen versiones para


Windows, Linux y MacOS.
Selecciona el idioma del IDE.
Descarga el paquete Netbeans IDE 8.1. Debes escoger la versión All, pues es la única que incluye la
tecnología Java ME.
Asegúrate de tener instalado un JDK actualizado.
Comienza con el proceso de instalación de la aplicación. Asegúrate de que la opción Java ME está marcada
en la instalación. Si no lo estuviera, marcarla para que así fuera (botón "Personalizar…").

Debes conocer
La página de descarga de Netbeans es:

Página de descarga de Netbeans.

Si no recuerdas bien el proceso de instalación de JDK o de la herramienta Netbeans en sus últimas


versiones puedes seguir las instrucciones proporcionadas por el siguiente artículo:

Guía para la instalación detallada del JDK y Netbeans en su versión completa.

Para saber más


Aquí tienes un vídeo de Oracle para repasar sobre la instalación y uso de Netbeans:

0:00
0:00

61 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.- Integración en el entorno de desarrollo.

Caso práctico
Una vez que María ya ha descargado e
instalado en su ordenador la aplicación
Netbeans preparada para el desarrollo de
proyectos Java ME, Juan la inicia y se
encuentra con su viejo conocido entorno de
Netbeans, pero entonces se pregunta: ¿y
ahora qué hacemos con esto? Es decir,
¿cómo indicamos al entorno que deseamos
hacer un midlet y no un Applet o un servlet o una aplicación de consola? ¿Qué pasos debemos
seguir para desarrollar, probar y ejecutar una mínima aplicación móvil con esta herramienta? ¿Cómo
podemos desarrollar y probar nuestro primer midlet?

Con el entorno Netbeans podrás realizar al menos las siguientes actividades:

Creación y gestión de proyectos basados en Java ME. Por ejemplo:


Aplicaciones móviles (Midlets). Serán con las que vas a trabajar
(configuración CLDC y perfil MIDP).
Bibliotecas de clases para móviles.
Aplicaciones CDC más complejas.
Diseño de componentes para aplicaciones móviles.
Escritura del código Java necesario para el desarrollo de tus proyectos.
Compilación del código desarrollado, generando los archivos finales necesarios para ser transferidos a un
dispositivo móvil y ejecutados en él.
Ejecución de nuestros programas en un emulador.
Depuración del código a través de su ejecución en el emulador.

Por tanto ya puedes decir que dispones de las herramientas necesarias para empezar a trabajar. Ha llegado
entonces la hora de aprender cómo utilizarlas, a la vez que intuyes cómo podría ser el mismo proceso para otros
modelos de plataformas (Windows Phone, Android, iOS, etc.).

62 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.1.- Creación de un proyecto.


Una vez instalada la herramienta Netbeans puedes realizar un simple midlet
"Hola Mundo" para ver si todo ha funcionado correctamente y dispones de las
clases necesarias para poder desarrollar con Java ME.

Puedes crear un proyecto MIDP simple desde cero sin mucha dificultad
mediante los siguientes pasos:

1. Crear un nuevo proyecto mediante la opción "Archivo -> Proyecto


nuevo…". Te aparecerá la caja de diálogo "Proyecto Nuevo". En el primer paso eliges la categoría de
proyecto "Java ME" y como tipo de proyecto "Mobile Application". Pulsas "Siguiente".
2. En el segundo paso eliges el nombre y ubicación del proyecto rellenando los campos "Project Name" y
"Project Location". Por ejemplo: "MiPrimermidlet". Marcas la opción "Set as Main Project" y desmarcas
"Create Hello midlet". Pulsas "Siguiente".
3. En el tercer paso ("Default Platform Selection") seleccionas la plataforma de ejecución (dejamos el
emulador que aparece por omisión "Java Platform Micro Edition SDK 3.4" ), así como las versiones de
configuración y perfil (que también dejas las seleccionadas por omisión). Pulsas "Terminar". El IDE creará
entonces la carpeta de proyecto para nuestros archivos de código y recursos.
4. En la ventana de exploración de proyectos puedes ver cómo aparece un nodo con el nombre de tu nuevo
proyecto. Pulsas con el botón de la derecha del ratón sobre tu nuevo proyecto y eliges la opción "Nuevo ->
midlet".
5. Se te abre una nueva caja de diálogo ("Archivo nuevo") en la que rellenas el campo "midlet name" (nombre
del midlet). Por ejemplo "HolaMIDlet"). Pulsas "Terminar". El nuevo midlet (archivo "HolaMIDlet.java")
acaba de ser creado y se mostrará en la ventana de edición.

Aparecerá el siguiente código fuente:

Esqueleto de un midlet. (1 KB)

Será el código "esqueleto" de un midlet con los métodos mínimos que debe contener (aunque aún vacíos). A partir
de ahí puedes comenzar a escribir tu midlet. Este proyecto podría ser compilado y ejecutado pero sería una
aplicación "vacía". Aún tienes que aprender algo más sobre cómo funcionan los Midlets.

Para saber más


Si no te ha quedado muy claro el procedimiento de cómo crear tu primer midlet con Netbeans
puedes seguir los pasos que se muestran a continuación:

63 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Resumen textual alternativo

Debes conocer
En esta página de Oracle puedes realizar la descarga de la última versión de Oracle Java ME SDK 8.3
para los diferentes sistemas operativos, Java ME SDK 3.4, Java SE Development KET (JDK) y
NetBeans version 8:

Oracle Java ME SDK.

Autoevaluación

Para desarrollar un midlet utilizando la herramienta Netbeans hay que seguir casi los mismos
pasos que para crear otra aplicación Java, teniendo en cuenta que hay que crear un proyecto
dentro de la categoría de Java ME y de tipo aplicación móvil.
Verdadero Falso

Verdadero
Así es. Hay que crear un nuevo proyecto de la categoría "Java ME" y de tipo "Mobile
Application".

64 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.1.1. Creación de un proyecto en Android.

Cada proyecto en Android Studio contiene uno o más módulos


con archivos de código fuente y archivos de recursos.

Entre los tipos de módulos se incluyen los siguientes:

Módulos de apps para Android.


Módulos de bibliotecas.
Módulos de Google App Engine.

De forma predeterminada, en Android Studio se muestran los


archivos de tu proyecto en la vista de proyectos de Android.

Esta vista está organizada en módulos para que puedas acceder


rápidamente a los archivos de origen claves de tu proyecto.

Todos los archivos de compilación son visibles en el nivel superior


de Secuencias de comando de Gradle y cada módulo de la
aplicación contiene las siguientes carpetas:

manifiestos: contiene el archivo AndroidManifest.xml.


java: contiene los archivos de código fuente de Java,
incluido el código de prueba JUnit.
res: Contiene todos los recursos, como diseños XML,
cadenas de IU e imágenes de mapa de bits.

La estructura del proyecto para Android en el disco difiere de esta


representación plana. Para ver la estructura de archivos real del
proyecto, selecciona Project en la lista desplegable Project, tal y
como puedes ver en la imagen.

También puedes personalizar la vista de los archivos del proyecto para concentrarte en aspectos específicos del
desarrollo de tu app. Por ejemplo, al seleccionar la vista Problems de tu proyecto, aparecerán enlaces a los
archivos de origen que contengan errores conocidos de codificación y sintaxis, como una etiqueta de cierre
faltante para un elemento XML en un archivo de diseño.

Recomendación
Te recomendamos que veas estos interesantes vídeos de introducción y sobre la creación de la
estructura de un proyecto en Android:

Curso Android. Creación de Proyecto Andro...

65 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Curso Android. Partes de un Proyecto Crea...

Debes conocer
Aquí tienes un excelente tutorial detallado con imágenes y capturas de imágenes donde te explica
paso a paso cómo crear un proyecto en Android Studio.

Crear un proyecto en Adroid Studio.

66 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.1.1.1.- Interfaz de usuario de Android Studio.


La ventana principal de Android Studio consta de varias áreas lógicas que se identifican en la siguiente imagen:

Los puntos rojos que se muestran en la imagen anterior corresponden a lo siguiente:

1. La barra de herramientas te permite realizar una gran variedad de acciones, como la ejecución
de tu app y el inicio de herramientas de Android.
2. La barra de navegación te ayuda a explorar tu proyecto y abrir archivos para editar. Proporciona
una vista más compacta de la estructura visible en la ventana Project.
3. La ventana del editor es el área en la que puedes crear y modificar código. Según el tipo de
archivo actual, el editor puede cambiar. Al visualizar un archivo de diseño, por ejemplo, el editor
muestra el Editor de diseño.
4. Las ventanas de herramientas te permiten acceder a tareas específicas, como la administración
de proyectos, la búsqueda y los controles de versión, entre otras. Puedes expandirlas y
contraerlas.
5. En la barra de estado se muestra el estado de tu proyecto y el IDE, además de advertencias o
mensajes.

Puedes organizar la ventana principal para tener más espacio en pantalla ocultando o desplazando
barras y ventanas de herramientas. También puedes usar combinaciones de teclas para acceder a la
mayoría de las funciones del IDE.

En cualquier momento, puedes realizar búsquedas en tu código fuente, bases de datos, acciones,
elementos de la interfaz de usuario, etc., presionando dos veces la tecla Shift o haciendo clic en la
lupa que se encuentra en la esquina superior derecha de la ventana de Android Studio. Esto puede ser
muy útil, por ejemplo, si intentas localizar una acción específica del IDE que olvidaste cómo activar.

Debes conocer

67 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

En este enlace tienes un listado del teclado rápido que te ayudará a trabajar de forma más rápida y
eficiente:

Teclas rápidas.

68 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.2.- Escritura de código.


En la próxima unidad aprenderás a crear un midlet por ti mismo desde cero. Ahora te conformarás con compilar un
midlet elemental cuyo código se te va a proporcionar, aunque aún no entiendas la mayor parte de su contenido.

Partiendo del código "esqueleto" de tu midlet anterior vas a rellenarlo para que escriba en la pantalla el mensaje
"Hola Mundo!".

En primer lugar, observa la cabecera de la clase HolaMidlet en la que ponía:

public class HolaMidlet extends midlet {

Y ahora la modificas añadiéndole el interface CommandListener:

public class HolaMidlet


extends midlet implements javax.microedition.lcdui.CommandListener {

A continuación añade los siguientes miembros (cuatro métodos y dos componentes) al midlet (podemos añadirlos
justo al comienzo de la clase, antes del método startApp):

private void initialize ( )


public void commandAction (javax.microedition.lcdui.Command command,
javax.microedition.lcdui.Displayable displayable)
private javax.microedition.lcdui.TextBox get_helloTextBox ( )
private javax.microedition.lcdui.Command get_exitCommand( )
javax.microedition.lcdui.TextBox helloTextBox;
javax.microedition.lcdui.Command exitCommand;

Y por último añade una línea initialize(); al método startApp ( ):

public void startApp() {


initialize();
}

El código completo del midlet quedaría:

Código completo del midlet de ejemplo. (1 KB)

Para saber más


Si el proyecto no te termina de funcionar, aquí tienes el proyecto completo para descargar.

Proyecto de prueba MiPrimermidlet (0.01 MB)

69 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.3.- Compilación.
Dependiendo de la plataforma con la que estés trabajando estarás utilizando
unos u otros lenguajes de programación (C#, Objective-C, Java, etc.), así como
diferentes archivos generados (ejecutables, clases, bytecodes, binarios,
manifiestos, configuraciones, etc.). En tu caso, una vez que dispones del
pequeño proyecto en Java ME que acabas de realizar, puedes proceder a
generar un binario que pueda ser ejecutado.

Para compilar el proyecto basta con pulsar el botón "Generar Main Project" (o
tecla F11, o bien a través de la opción del menú "Ejecutar" -> Generar Main
Project"). También podemos utilizar la opción "Limpiar y Generar Main Project", que borrará primero el resultado
de anteriores compilaciones del proyecto. Tanto en un caso como en otro, si no hemos cometido errores léxicos o
de sintaxis, el código fuente se habrá compilado correctamente y se habrán generado los archivos binarios
correspondientes, lo cual será indicado a través de la ventana de salida (mensaje "GENERACIÓN CORRECTA").

Si observas la estructura de archivos de tu proyecto podrás observar que hay dos nuevas subcarpetas: build y
dist, que contienen todos los archivos que se han generado tras el proceso compilación (archivos .class, .jar,
manifiestos, etc.). Dentro de la carpeta dist se deben haber generado dos archivos: MiPrimerMidlet.jad y
MiPrimerMidlet.jar. Ya aprenderás algo más sobre ellos de ellos en la próxima unidad.

70 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.3.1.- Compilación en Android Studio.


Android Studio usa Gradle como base del sistema de compilación, y proporciona más características específicas
de Android a través del Complemento de Android para Gradle.

Este sistema de compilación se ejecuta en una herramienta integrada desde el menú de Android Studio, y lo
hace independientemente de la línea de comandos. Puedes usar las funciones del sistema de compilación para
lo siguiente:

Personalizar, configurar y extender el proceso de compilación;


Crear varios APK para tu app con diferentes funciones usando el mismo proyecto y los mismos módulos;
Volver a usar códigos y recursos entre conjuntos de orígenes.

Recurriendo a la flexibilidad de Gradle, puedes lograr todo esto sin modificar los archivos de origen de tu app.

Los archivos de compilación de Android Studio se denominan build.gradle. Son archivos de texto sin formato que
usan sintaxis Groovy para configurar la compilación con elementos proporcionados por el complemento de
Android para Gradle.

Cada proyecto tiene un archivo de compilación de nivel superior para todo el proyecto y archivos de compilación
de nivel de módulo independientes para cada módulo. Cuando importas un proyecto existente, Android Studio
genera automáticamente los archivos de compilación necesarios.

Variantes de compilación

El sistema de compilación puede ayudarte a crear diferentes versiones de la misma aplicación a partir
de un solo proyecto. Esto resulta útil cuando tienes una versión gratuita o una versión paga de tu app, o
si quieres distribuir múltiples APK para diferentes configuraciones de dispositivos en Google Play.

Para obtener más información acerca de cómo configurar variantes de compilación, consulta
Configuración de compilaciones de Gradle.

Para saber más


Para obtener más información sobre el sistema de compilación y su configuración, consulta el
siguiente enlace de Configurar tu compilación.

71 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.4.- Emuladores.
Normalmente las herramientas de desarrollo integradas suelen incorporar uno o varios emuladores que te servirán
para poder probar las aplicaciones antes de instalarlas en el dispositivo para el cual se han programado. Así
podrás observar si la aplicación funciona correctamente y si tiene más o menos el aspecto que tenías pensado.
Hay que tener en cuenta que los emuladores no siempre van coincidir en aspecto (y a veces incluso en
funcionalidad) con el dispositivo real y podrás encontrar abundantes diferencias dependiendo de diversos factores
como:

El tipo de dispositivo que se emule. No es lo mismo emular un teléfono o una PDA con Windows Phone, que
un iPhone o un iPAD, o un teléfono con Android, o un dispositivo móvil con Java ME.
El tipo de aplicación que se haya generado (por ejemplo, un midlet en este caso, es decir, una aplicación
móvil en Java ME con la configuración CLDC y el perfil MIDP).
Las posibilidades de emulación de la herramienta que se esté utilizando.

Independientemente de la plataforma para la que vayas a desarrollar las aplicaciones (Android, iOS, Java ME,
etc.) es importante que la herramienta que elijas disponga de emuladores pues es lo que utilizarás la mayor parte
del tiempo. Sólo cuando la aplicación comience a trabajar al 80 o 90 por ciento de su funcionalidad será cuando
empieces a instalarla en el dispositivo para ir probando algunas cosas específicas dependientes del dispositivo
físico final. La mayor parte del proceso de depuración (por no decir todo) se realizará normalmente con el
emulador, pues podremos depurar el software como con un programa en un ordenador convencional (ejecutar las
instrucciones paso a paso, establecer breakpoints, observar el contenido de variables, etc.). Además en muchos
casos es posible que no tengas a tu disposición en ese momento el dispositivo concreto para el que deseas
programar de manera que necesitarás obligatoriamente el emulador.

En este ejemplo, si el proyecto se ha compilado con éxito podrás probar la ejecución del midlet en el emulador de
dispositivo móvil que incorpora la herramienta Netbeans. Si has dejado el emulador por omisión
(ClamShellCldcPhone1) obtendrás una salida similar a la siguiente:

Si has decidido cambiar el tipo de emulador utilizado, la salida podrá ser ligeramente diferente en cuanto al
aspecto estético del dispositivo emulado.

Salvo alguna excepción, todos los Midlets que vas a desarrollar durante el curso los ejecutarás y probarás con los
emuladores de Netbeans.

Autoevaluación

Para poder probar cada midlet que compiles será necesario transferirlo a un dispositivo móvil

72 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

y ejecutarlo allí.
Verdadero Falso

Falso
No es necesario. Para eso dispones de emuladores que te permiten ejecutar el midlet en una
aplicación que simula el comportamiento de una determinada familia de dispositivos. Tan solo
cuando tengas una versión del midlet que funcione relativamente bien y quieras probar aspectos
muy específicos que dependan del dispositivo físico, valdrá la pena cargarlo y probarlo.
Mientras tanto puedes trabajar con los emuladores sin problema.

73 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.4.1. Emuladores en Android Studio.


Un emulador es un software que permite
ejecutar programas o videojuegos en una
plataforma (sea una arquitectura de
hardware o un sistema operativo) diferente
de aquella para la cual fueron escritos
originalmente. A diferencia de un simulador,
que solo trata de reproducir el
comportamiento del programa, un
emulador trata de modelar de forma
precisa el dispositivo de manera que este
funcione como si estuviese siendo usado
en el aparato original.

Los emuladores son programas creados


con un proceso de ingeniería inversa el
cual nos traerá viejas glorias del gaming
de nuestro pasado para jugar en nuestro dispositivos, por tanto su uso popular de los emuladores es el de imitar la
experiencia de los videojuegos de máquinas recreativas o videoconsolas en computadoras personales, o el poder
ser jugados en otras videoconsolas.

Un emulador de Android en un ordenador puede tener miles de usos, desde un desarrollador que quiere probar
sus aplicaciones hasta usuarios que quieran jugar con teclado y ratón a los cientos de títulos disponibles en esta
plataforma. También es una forma de acceder a aplicaciones que no tenemos disponibles en un ordenador y que
usamos constantemente cuando estamos con el móvil o tableta.

Recomendación
Variantes de compilación

El sistema de compilación puede ayudarte a crear diferentes versiones de la misma aplicación a


partir de un solo proyecto. Esto resulta útil cuando tienes una versión gratuita o una versión paga de
tu app, o si quieres distribuir múltiples APK para diferentes configuraciones de dispositivos en
Google Play. Para obtener más información acerca de cómo configurar variantes de compilación,
consulta Configuración de compilaciones de Gradle.

Te recomendamos veas el siguiente vídeo sobre emuladores de terceros:

Curso Android. Emulador externo Genymoti...

74 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Para saber más


En este interesante enlace puedes ver una lista de los principales emuladores y su configuración
utilizados para Android:

Emuladores y su configuración para Android.

75 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.5.- Instalación y ejecución en un dispositivo real.


Como ya se ha comentado antes, algo que debes tener en cuenta cuando se
desarrollan aplicaciones con la tecnología Java ME (y en general para casi cualquier
plataforma) es que el aspecto que presente el midlet puede que sea diferente en un
dispositivo real con respecto al que se podía observar en un emulador. Es muy
posible que su aspecto varíe según se instale en un dispositivo u otro, así como
también si lo pruebas en un emulador u otro.

Esto se debe tanto a las características físicas del propio dispositivo (tamaño,
resolución y colores de la pantalla, tipo de joystick, botones, etc.) como a la
implementación de la máquina virtual de Java que tenga ese dispositivo (y por tanto
del perfil MIDP). Aunque la comparación no es del todo precisa, la situación podría se
similar a la que se produce cuando navegas por un mismo sitio web con ordenadores distintos, con sistemas
operativos diferentes y con navegadores también distintos, obteniendo visualizaciones de la web diferentes.

La manera más sencilla de probar tu aplicación será transfiriendo el archivo .jar del midlet a la memoria del
dispositivo donde deseas realizar la prueba (a través de un cable USB, por Bluetooth, mediante una tarjeta de
memoria, etc.).

Dependiendo del fabricante del dispositivo, es posible que se disponga de alguna utilidad que permita realizar la
instalación desde el ordenador (como por ejemplo el Nokia PC Suite). En cualquier caso siempre se puede hacer
lo que se ha comentado antes: copiar el archivo .jar al dispositivo y una vez copiado, instalarlo en el dispositivo
simplemente pinchando sobre el archivo .jar. El dispositivo preguntará si deseas instalarlo, contestas
afirmativamente y la aplicación quedará instalada en el aparato junto con el resto de aplicaciones. Ya sólo faltará
ejecutarla como una aplicación más. Si estuvieras desarrollando para otra plataforma diferente a Java ME, el
proceso podría cambiar dependiendo del fabricante del dispositivo así como del tipo de archivos generados (no
será el mismo proceso para un iOS que para un Windows Phone o para un Android, cada plataforma tendrá sus
procedimientos específicos de instalación de software).

Para saber más


Si quieres observar un ejemplo de instalación y ejecución del midlet MiPrimerMidlet.jar sobre un
dispositivo real Nokia N86 puedes echarle un vistazo a la siguiente presentación:

Resumen textual alternativo

76 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

8.5.1.- Crear un módulo de un dispositivo en Android


Studio.
Los módulos proporcionan un contenedor para código de la aplicación fuente, archivos de recursos y ajustes de
nivel de aplicación, tales como el fichero de construcción de nivel de módulo y el archivo de manifiesto de Android.
Cada módulo se puede construir de forma independiente, probado y depurado. 

Android Studio utiliza módulos para que sea fácil agregar nuevos dispositivos a su proyecto. Siguiendo unos
sencillos pasos en Android Studio, puede crear un módulo para contener código que es específico para un tipo de
dispositivo, tales como Android Wear o Android TV.

Android Studio crea automáticamente directorios de módulos, como fuente de recursos y directorios, y un archivo
build.gradle defecto más adecuados para el tipo de dispositivo. Además, Android Studio crea módulos de
dispositivos con configuraciones de construcción recomendadas, como el uso de la biblioteca de módulos
Leanback Android TV.

Para saber más


Aquí puedes encontrar información de cómo crear en Android Studio un módulo en un dispositivo
paso a paso:

Crear un módulo en un dispositivo.

Recomendación
Te recomendamos que veas este vídeo sobre conectando dispositivos físicos, activar depuración
USB e instalación de los drivers de tu dispositivo móvil (fundamental en Windows) que son
necesarios instalar para hacer pruebas y lanzar aplicaciones desde Android Studio en el dispositivo
móvil:

Curso Android. Conectando dispositivo físi...

77 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

9.- Gestión del entorno de ejecución.

Caso práctico
Una vez que María y Juan le han mostrado a Ada su primer midlet, surgen las nuevas dudas. Dentro
del dispositivo móvil, ¿cómo se ejecutan las aplicaciones? ¿quién se encarga de su gestión? ¿Por
qué fases diferentes puede pasar un midlet? Y una vez que ese midlet está en ejecución, ¿por qué
estados puede pasar? Para intentar resolver algunas de estas dudas Ada les va a proporcionar una
breve explicación sobre el gestor de aplicaciones y el ciclo de vida de un midlet.

En este último apartado vas a realizar un rápido repaso de cómo son gestionadas
las aplicaciones tipo midlet dentro del entorno de ejecución de un dispositivo móvil
con Java ME.

Como ya has visto anteriormente, los Midlets son aplicaciones creadas bajo el perfil MIDP
(y la configuración CLDC). Están diseñados para ser ejecutados en dispositivos con una
limitada capacidad de cómputo, gráfica y de memoria. En estos dispositivos no se
dispone de un intérprete de líneas de órdenes (command lines) como en un sistema
operativo al uso donde podamos ejecutar las aplicaciones. En estos dispositivos lo que
existe es un software conocido como Gestor de Aplicaciones o Administrador de Aplicaciones (AMS –
Application Management System) que se encarga de ejecutar los Midlets y de gestionar los recursos que
consumen.

Para saber más


Si tienes interés en saber algo más sobre los distintos modelos de ejecución de aplicaciones en Java
ME, puedes echarle un vistazo a los siguientes artículos:

Desarrollo de Aplicaciones Móviles.

Understanding J2ME Application Models (en inglés).

78 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

9.1.- El administrador de aplicaciones.


El administrador de aplicaciones o gestor de aplicaciones o AMS (Application
Management System) es el programa responsable de gestionar los Midlets de un
dispositivo. Es quien nos permite ejecutar, pausar o destruir una aplicación Java ME.

El AMS lleva a cabo esencialmente dos funciones:

1. La gestión del ciclo de vida de los Midlets en el dispositivo.


2. El control de los estados por los que pasa midlet mientras resida en la
memoria del dispositivo, es decir, mientras esté en ejecución.

Si estuvieras trabajando una plataforma diferente a Java ME, en lugar de Midlets tendrías otro tipo de aplicaciones
y su gestión sería también diferente, pero en cualquier caso existirá algún software similar al Gestor de
Aplicaciones AMS que permitirá controlar y gestionar las aplicaciones que se instalan y se ejecutan en el
dispositivo.

A continuación vas a ver cada una de esas dos funciones: cuáles son las fases por las que puede pasar un midlet y
cuáles son los estados de un midlet en ejecución.

Autoevaluación

La gestión del ciclo de vida de los Midlets en un dispositivo móvil basado en la plataforma Java
ME es llevada a cabo por el gestor de aplicaciones o AMS.
Verdadero Falso

Verdadero
Así es. El administrador de aplicaciones o gestor de aplicaciones o AMS (Application
Management System) es el programa responsable de gestionar los Midlets de un dispositivo.
Es quien nos permite ejecutar, pausar o destruir una aplicación Java ME.

79 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

9.2.- Ciclo de vida de una aplicación.


El ciclo de vida de una aplicación de tipo midlet pasa por cinco fases: descubrimiento, instalación, ejecución,
actualización y borrado.

El Gestor de Aplicaciones (AMS) es quien se encarga de gestionar esas fases:

1. Descubrimiento (o localización). Consiste en el proceso por el cual un


usuario localiza un midlet a través de su dispositivo. El gestor de
aplicaciones es el que proporciona los mecanismos necesarios para
realizar la elección del midlet que se desea descargar (mediante un cable
USB, Bluetooth, conexión a Internet, etc.).
2. Instalación. Una vez que la aplicación ha sido descargada en el
dispositivo, ésta puede ser instalada. El AMS se encargará de controlar
el proceso de instalación informando al usuario de la evolución de este
proceso. Una vez instalado el midlet, éste permanecerá en el dispositivo
(en memoria persistente) hasta que el usuario decida borrarlo.
3. Ejecución. El AMS es también el que permite poner en ejecución el midlet. Una vez que un midlet está en
ejecución, el AMS también tendrá el control de los distintos estados por los que pueda pasar el midlet
dependiendo de los eventos que se vayan desencadenando durante esa ejecución.
4. Actualización. Una vez que un midlet ha sido descargado, el AMS debe de ser capaz de detectar si se trata
de una actualización de un midlet ya presente en el dispositivo. En tal caso se informaría al usuario para que
decidiera si quiere llevar a cabo o no la actualización.
5. Borrado. Si el usuario así lo desea, el AMS se encargará de borrar el midlet del dispositivo. Normalmente se
solicitará confirmación y se informará de las posibles incidencias durante el proceso de borrado.

80 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

9.3.- Modelo de estados de una aplicación.


De manera similar a como el planificador de procesos (scheduler) en sistemas operativos se encarga de gestionar
el estado de los procesos (programas en ejecución), el Administrador de Aplicaciones es también el encargado de
gestionar los estados de un midlet durante su ejecución.

Cuando un midlet se pone en ejecución es cargado la memoria del dispositivo


y puede pasar por tres estados posibles: activo, en pausa y destruido.

Activo. El midlet está en ese momento ejecutándose.


Pausa. El midlet no se encuentra ejecutándose en ese momento. En ese
estado no se debe utilizar ningún recurso compartido. Para volver a
ejecutar instrucciones de su código, el midlet debe de pasar a estado
activo.
Destruido. El midlet no está ya en ejecución ni podrá pasar a otro estado. Se liberan todos los recursos
ocupados.

Veamos un ejemplo: cuando el midlet comienza a ejecutarse se encontrará en estado activo, pero si en un
momento dado se produce algún evento que requiere que se ejecute algún otro programa (por ejemplo si
recibimos una llamada o un mensaje), entonces el AMS debe de ser capaz de pasar ese midlet a estado en pausa
y quizá más adelante volver a ponerlo activo. Finalmente, cuando hemos terminado con el midlet y cerramos la
aplicación, el AMS lo pasará a estado destruido, borrándose de la memoria volátil (aunque no de la persistente,
donde el midlet sigue instalado) y liberándose todos los recursos que estuviera utilizando. Una vez destruida la
ejecución del midlet, éste puede volver a ser ejecutado cuantas veces se desee mientras siga instalado en el
dispositivo (en la zona de memoria persistente).

Un midlet puede cambiar de estado mediante una llamada a algunos de los métodos:

midlet.StartApp ( ).
midlet.pauseApp ( ).
midlet.destroyApp ( ).

Si recuerdas de apartados anteriores, cuando creaste tu primer midlet, ésos eran los tres métodos que se creaban
en el "esqueleto" de tu nueva clase midlet y que tenías que rellenar con el código de tu aplicación. Cuando el
midlet es instanciado (método constructor new) pasa al estado de pausa durante un instante. Cuando el dispositivo
esté listo para ejecutar la aplicación, el AMS llamará al método startApp( ), pasando al estado activo.

81 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Anexo.- Licencia de recursos.


Licencias de recursos utilizados en la Unidad de Trabajo.

Recurso Recurso
Datos del recurso (1) Datos del recurso (2)
(1) (2)

Autoría: Frank Gruber.


Autoría: adactio. Licencia: CC BY-NC-ND 2.0.
Licencia: CC BY 2.0. Procedencia:
Procedencia: http://www.flickr.com/photos/adactio http://www.flickr.com/photos
/6005661540/ /somewhatfrank
/3597111612/

Autoría: Teo.
Autoría: fsse8info.
Licencia: CC BY-SA 2.0.
Licencia: CC BY-SA 2.0.
Procedencia:
Procedencia: http://www.flickr.com/photos/fsse-
http://www.flickr.com/photos
info/4468723949/
/teo/66712591/

Autoría: adactio.
Autoría: Adam Selwood.
Licencia: CC BY 2.0.
Licencia: CC BY 2.0.
Procedencia:
Procedencia: http://www.flickr.com/photos/adselwood
http://www.flickr.com/photos
/3158195615/
/adactio/6005110759/

Autoría: mpolla.
Autoría: Wikimedia Commons.
Licencia: CC BY-NC-SA 2.0.
Licencia: CC BY-SA 3.0.
Procedencia:
Procedencia: http://es.wikipedia.org
http://www.flickr.com/photos
/wiki/Archivo:Conexant_arm.jpg
/mpolla/541086692/

Autoría: Nemeton.
Cellnet.org.uk.
Autoría: Apple Inc..
Licencia: Copyright (cita).
Licencia: Copyright (cita).
Procedencia:
Procedencia: http://images.apple.com/es/iphone/business
http://www.celtnet.org.uk
/images/overview_hero_20101105.png.
/mobile-phone/img
/T200_mobo_back.gif

Autoría: Wikimedia
Autoría: Ars Electronica. Commons.
Licencia: CC BY-NC-ND 2.0. Licencia: CC BY 2.5.
Procedencia: http://www.flickr.com/photos/arselectronica Procedencia:
/5101996574/ http://es.wikipedia.org
/wiki/Archivo:Touchscreen.jpg

Autoría: jagelado.
Autoría: VancityAllie.
Licencia: CC BY-NC 2.0.
Licencia: CC BY-NC-SA 2.0.
Procedencia:
Procedencia: http://www.flickr.com/photos
http://www.flickr.com/photos
/30691679@N07/5777688584/
/jagelado/3859140905/

Autoría: Nokia.
Licencia: Copyright (cita).
Autoría: Symbian Foundation. . Procedencia:
Licencia: Copyright (cita). http://press.nokia.com
Procedencia: http://licensing.symbian.org/_/rsrc /wp-content/uploads
/1297769375009/home/symbian_foundation_logo.jpg /mediaplugin/photo
/reso/700-nokia-n86-8mp-
white_25.jpg

82 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Autoría: Google Inc.


Autoría: RafeB.
Licencia: Copyright (cita)..
Licencia: CC BY-NC-SA 2.0.
Procedencia:
Procedencia: http://www.flickr.com/photos/rafeblandford
http://www.android.com
/4700917829/
/images/logo_android.gif

Autoría: Microsoft.
Licencia: Copyright (cita).
Autoría: Google Inc.
Procedencia:
Licencia: Copyright (cita)..
http://i.microsoft.com/global
Procedencia: http://www.android.com/media/wallpaper
/windowsphone/en-ww
/gif/android_logo.gif.
/PublishingImages
/windowsphone_logo.png

Autoría: Apple.
Autoría: Microsoft.
Licencia: Copyright (cita).
Licencia: Copyright (cita).
Procedencia:
Procedencia: http://www.microsoft.com/global
http://images.apple.com
/windowsphone/en-ww/PublishingImages/sPromo
/iphone/ios4/images
/sPromo-WP-3_(ANGLE)_238X136.jpg
/ios4_icon_20100624.png

Autoría: Wikimedia
Autoría: Apple Inc. Commons..
Licencia: Copyright (cita). Licencia: GPL.
Procedencia: http://images.apple.com/es/iphone/business Procedencia:
/images/overview_speed_20101105.jpg http://en.wikipedia.org
/wiki/File:Anjuta-2.0.0-2.png

Autoría: myfear.
Autoría: SapiensBryan .
Licencia: CC BY-NC-ND 2.0.
Licencia: CC BY-ND 2.0.
Procedencia:
Procedencia: http://www.flickr.com/photos/sapiens
http://www.flickr.com/photos
/6044811503/
/myfear/4620782599/

Autoría: Oracle.
Autoría: Oracle. Licencia: Copyright (cita).
Licencia: Copyright (cita). Procedencia:
Procedencia: http://www.oracle.com/ocom/groups/public http://java.sun.com/products
/@otn/documents/digitalasset/149247.gif /cldc/wp/KVMwp.pdf, página
12.

Autoría: Oracle.
Licencia: Copyright (cita).
Autoría: Robpatrik.
Procedencia:
Licencia: CC BY-NC-SA.
http://www.oracle.com
Procedencia: http://www.flickr.com/search/?l=cc&mt=all&
/ocom/groups/public
adv=1&w=all&q=logo+java&m=text
/@otn/documents/digitalasset
/303142.png

Autoría: netbeans.org.
Licencia: Copyright (cita), se
Autoría: Nokia RSA.
autoriza el uso sin
Licencia: CC BY-NC 2.0.
restricciones.
Procedencia: http://www.flickr.com/photos
Procedencia:
/41118175@N05/5555497070/
http://netbeans.org/features
/javame/index.html

Autoría: netbeans.org.
Autoría: netbeans.org. Licencia: Copyright (cita), se
Licencia: Copyright (cita), se autoriza el uso sin autoriza el uso sin
restricciones. restricciones.
Procedencia: http://netbeans.org/features/javame Procedencia:
/index.html http://netbeans.org/features

83 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

/javame/index.html

Autoría: netbeans.org.
Licencia: Copyright (cita), se
Autoría: Nokia.
autoriza el uso sin
Licencia: Copyright (cita).
restricciones.
Procedencia: http://www.developer.nokia.com/Community
Procedencia:
/Wiki/MIDP's_User_Interface_Hierarchy
http://netbeans.org/features
/javame/index.html

Autoría: Oracle.
Autoría: netbeans.org. Licencia: Copyright (cita).
Licencia: Copyright (cita), se autoriza el uso sin Procedencia:
restricciones. http://www.oracle.com
Procedencia: http://netbeans.org/features/platform /technetwork/java/javame
/index.html /javamobile/training/jmesdk
/index.html

Autoría: netbeans.org.
Licencia: Copyright (cita), se
Autoría: netbeans.org.
autoriza el uso sin
Licencia: Copyright (cita), se autoriza el uso sin
restricciones.
restricciones.
Procedencia:
Procedencia: http://netbeans.org/features/ide/editor.html
http://netbeans.org
/downloads/index.html

Autoría: netbeans.org.
Autoría: netbeans.org. Licencia: Copyright (cita), se
Licencia: Copyright (cita), se autoriza el uso sin autoriza el uso sin
restricciones. restricciones.
Procedencia: Captura de pantalla del programa NetBeans Procedencia:
7.0. http://platform.netbeans.org
/screenshots.html

Autoría: Diosdado Sánchez


Hernández.
Autoría: netbeans.org.
Licencia: GNU GPL.
Licencia: Copyright (cita), se autoriza el uso sin
Procedencia: Captura de
restricciones.
pantalla del programa
Procedencia: Captura de pantalla del programa NetBeans
NetBeans, propiedad de
7.0.
Oracle, bajo licencia GNU
GPL v2.

Autoría: Diosdado Sánchez


Hernández.
Autoría: Diosdado Sánchez Hernández. Licencia: GNU GPL.
Licencia: GNU GPL. Procedencia: Captura de
Procedencia: Captura de pantalla del programa NetBeans, pantalla del programa
propiedad de Oracle, bajo licencia GNU GPL v2. NetBeans, propiedad de
Oracle, bajo licencia GNU
GPL v2.

Autoría: Diosdado Sánchez


Hernández.
Autoría: Diosdado Sánchez Hernández. Licencia: GNU GPL.
Licencia: GNU GPL. Procedencia: Captura de
Procedencia: Captura de pantalla del programa NetBeans, pantalla del programa
propiedad de Oracle, bajo licencia GNU GPL v2. NetBeans, propiedad de
Oracle, bajo licencia GNU
GPL v2.

84 de 85 9/9/16 11:28
Análisis de tecnologías para aplicaciones en dispositivos móviles. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_8KU...

Autoría: ITE.
Licencia: CC BY-NC-SA 3.0.
Procedencia:idITE=160222.http://recursostic.educacion.es
//bancoimagenes/ArchivosImagenes/DVD17
/CD03/29909__789_m_2.jpg

85 de 85 9/9/16 11:28