Analisis de Plataformas y Programacion
Analisis de Plataformas y Programacion
Analisis de Plataformas y Programacion
Facultad de Ingeniería
Escuela de Ingeniería en Ciencias y Sistemas
FACULTAD DE INGENIERÍA
TRABAJO DE GRADUACIÓN
AL CONFERÍRSELE EL TÍTULO DE
CONCLUSIONES ............................................................................................. 91
RECOMENDACIONES ..................................................................................... 95
BIBLIOGRAFÍA ................................................................................................. 97
ÍNDICE DE ILUSTRACIONES
FIGURAS
I
TABLAS
II
GLOSARIO
III
Dispositivo Elemento de hardware conectado a un circuito que es
capaz de recibir y ejecutar instrucciones de computadora.
V
La sexta parte presenta la plataforma Blackberry OS, la cual forma parte
importante en el mercado de dispositivos móviles.
VI
OBJETIVOS
General
Específicos
VII
5. Presentar las especificaciones básicas de recursos para desarrollar en las
plataformas de desarrollo para móviles populares. Realizar un esquema
comparativo general entre las plataformas populares.
VIII
INTRODUCCIÓN
1
BLANCO LÓPEZ, Jorge. Inteligencia artificial. http://www.aepia.org/. 11-10-2010.
IX
Este cambio hizo posible diferenciar empresas que fabrican hardware y
software, permitió a empresas y desarrolladores crear aplicaciones de todo tipo
explotando las ventajas y disminuyendo las desventajas de las diferentes
plataformas en la variedad de dispositivos para ofrecer un mejor servicio. Esta
descripción de las distintas plataformas vigentes en el mercado tecnológico son
los aspectos que abarca esta investigación.
X
1. DISPOSITIVOS MÓVILES
1
Clasificaremos a los dispositivos en base a la función principal para lo que
fueron creados, pero cabe mencionar que esta clasificación no es estándar, la
pertenencia de una categoría específica no implica que el dispositivo no pueda
ofrecer características propias de otro segmento.
2
1.1.4. Capturador multimedia
El trabajo por parte del proveedor debe estar limitado a tareas específicas
bien definidas y calendarizadas de mantenimiento, al final la nube debe auto-
administrarse con la ayuda de a sus usuarios.
3
1.2. Teléfono inteligente (Smartphone)
4
desde los niveles más básicos, permitiendo también la interacción con el
usuario.
1.4. Middleware
5
.
6
2. DESARROLLO Y OPORTUNIDAD DEL DESARROLLADOR
PARA MÓVILES
Las empresas que proveen las plataformas de aplicaciones, son las que
permiten a las entidades desarrollar aplicaciones que luego el sistema base
convertirá a aplicaciones ejecutables para el hardware que esta soporta.
7
Con la llegada de los Smartphone se ha superado la barrera impuesta en
los años anteriores en donde únicamente un sector cerrado tenía licencia para
desarrollar aplicaciones, aquí aparece la oportunidad a desarrolladores
independientes y empresas de crearse un espacio en este segmento de la
industria de aplicaciones móviles.
8
Esta carrera por incentivar a los desarrolladores se realiza a todos los
niveles. Las empresas creadoras de sistemas operativos móviles, como: Apple
con el iOS, Google con Android, RIM con BlackBerry OS, entre los que más
destacan, confían en que la penetración de sus sistemas operativos entre los
dispositivos móviles sea un gancho suficiente para que los desarrolladores
decidan crear nuevas aplicaciones específicas para ellos. Así cuantas más
aplicaciones existan para un determinado sistema operativo, más demanda
habrá de él entre fabricantes y operadores.
9
Los IDE’s (por sus siglas en inglés) proveen un marco de trabajo
amigable para la mayoría de los lenguajes de programación tales como C++,
Python, C#, Delphi, Visual Basic, etc.
10
2.6.1. Análisis
2.6.2. Diseño
Reducir un diseño a código puede ser la parte obvia del trabajo de realizar
un producto de software, pero no necesariamente es la que demanda mayor
trabajo y ni la más complicada. La complejidad y la duración de la etapa está
relacionada al o a los lenguajes de programación utilizados, así como al diseño
previamente realizado. La implementación consiste en proporcionar a los
usuarios el producto funcionando para que puedan verificar que el producto
hace lo que tiene que hacer. En el caso de las plataformas de aplicaciones
para dispositivos móviles proporcionar un entorno de desarrollo completo para
codificar el proyecto para dicha plataforma.
11
2.6.4. Pruebas
12
2.7.2. ¿Qué es una aplicación nativa?
13
2.7.4. La idea
2.7.5. Investigación
Muchas veces las aplicaciones con éxito, no son las más innovadoras,
sino las que logran cumplir el objetivo para el cual son diseñadas, las que
agregan calidad en el producto y superan las expectativas del cliente que las
utiliza.
14
2.7.6. Análisis y diseño
2.7.7. Desarrollo
2.7.8. Publicación
El último paso una vez ya haya sido probado por el equipo, es publicarla
en la(s) tienda(s) virtual(es) que tenga a disposición la plataforma para los
clientes determinen la calidad del producto.
15
plataformas. Los detalles de las plataformas más populares se prestan en los
siguientes capítulos.
16
3. PLATAFORMA DE DESARROLLO JAVA
17
desarrolladores al construir juegos y aplicaciones de gama baja, permitiendo
encontrar buenas sensaciones entre los usuarios.
18
Figura 1. Diagrama de Arquitectura J2ME
Para poder tener un entorno de ejecución Java para J2ME que cumpla los
requisitos de un rango amplio de dispositivos y mercado objetivo es necesario
que se componga de:
19
3.1.1. Kilo Virtual Machine (KVM)
3.1.2. Configuraciones
20
Procesador: 16 bit / 16 Mhz o más.
Memoria: 160 Kb – 512 Kb de memoria total disponible para la plataforma
Java.
Alimentación: alimentación limitada, a menudo basada en batería.
Trabajo de red: conectividad a algún tipo de red, con ancho de banda
limitado habitualmente.
Procesador: 32 bits.
Memoria: mayor a 1 MB de memoria total disponible para la plataforma.
Alimentación: alimentación limitada, a menudo basada en batería.
Trabajo en red: conectividad a algún tipo de red, con ancho de banda
limitado habitualmente.
CLDC 1.1 (JSR 139): CLDC 1.1 es una versión de la especificación CLDC
1.0 e incluye nuevas características como son punto flotante o soporte a
referencias débil, junto con otras mejoras. CLDC 1.1 es compatible con
21
versiones anteriores y sigue soportando dispositivos pequeños o con
recursos limitados.
CLDC 1.3 (JS30).
CLDC HotSpot Implementación: es una máquina virtual muy optimizada
que presenta una diferencia de rendimiento muy alta frente a la KVM.
Incluye características que soportan una ejecución más rápida de
aplicaciones y una gestión de recursos más eficientes, manteniendo los
requisitos en cuanto a plataforma de ejecución.
22
3.1.2.4. Cambios entre máquina virtual J2ME y J2SE
23
3.1.2.5. Clases especificas a CLCD
24
ROM. Estos dispositivos requieren todas las características y funcionalidades
de la JVM e incluyen teléfonos móviles de última generación, asistentes
personales, terminales de punto de venta (TPVs), permitiendo tantas redes con
conexión intermitente o de alta velocidad, sin cablear. La plataforma CDC para
J2ME incorpora:
25
3.1.3. Perfiles
26
CDC. Proporciona una implementación lista para el trabajo en red que se
puede emplear en implementaciones embebidas que carece de interfaz de
usuario. También se puede combinar con los perfiles Personal Basic y personal
para los dispositivos que precisan de una interfaz gráfica de usuario (IGU).
27
3.1.3.6. Game Profile (GP)
28
Tabla I. Toolkits y Emuladores
29
Tabla II. Entornos de desarrollos integrados (IDE’s)
30
3.3. Licencia de J2ME
31
32
4. PLATAFORMA ANDROID
33
puedan realizar aplicaciones utilizando la plataforma Android por medio del
lenguaje de programación Java.
34
componentes, típico en lenguajes de programación orientados a objetos. La
arquitectura de las aplicaciones permite que una aplicación pueda publicar su
funcionalidad para que esté disponible y pueda ser utilizada por otras
aplicaciones. El mismo mecanismo permite a los componentes ser
reemplazados por los usuarios. Los más destacables son:
35
4.1.2. Gráficos
4.1.4. Redes
36
En cuanto al hardware soportado por la plataforma, funcionara en
cualquier ARM basado en el Kernel Linux. Exige un mínimo de 128Mb de RAM
y 256 de memoria flash.
4.1. Arquitectura
4.1.1. Kernel
Sobre el núcleo están las librerías nativas, las cuales ofrecen funciones
básicas a otros subsistemas como por ejemplo SQLite (base de datos con
soporte SQL), Open GL (gráficos avanzados en 3D), SSL (cifrado de datos),
CODECs de medios (audio, video).
37
Figura 4. Diagrama de la Arquitectura Android
Los ejecutables no son clases de Java, sino que las clases de Java son
post-procesadas a un formato llamado .dex, el cual es optimizado para que
tenga un uso de memoria mínimo, la máquina virtual tiene acceso a las librerías
de funciones estándar de Java (Core Libraries) por ejemplo Objeto, Cadena,
entero, etc., esto es como decir el ambiente de desarrollo para el lenguaje Java.
38
4.1.4. Estándares de aplicaciones
4.1.5. Aplicaciones
39
“Servicio”, “Receptor de Intentos” y “proveedor de contenidos”). Una vez se
hayan seleccionado los componentes que se van a utilizar en la aplicación, es
necesario que se listen en el “AndroidManifest.xml”
4.2.2. Actividades
40
Figura 5. Árbol de Nodos de elementos de Interfaz de Usuario
41
La interfaz de usuario define los eventos para interaccionar con el usuario.
Se trata de definir los eventos de usuario van a reaccionar a cada uno de los
elementos o Widgets de la interfaz gráfica.
4.2.3.1. Intentos
Es un mensaje que representa la “intención” de hacer algo. Por ejemplo si
desea escribir información en campo de texto, debe expresar su “Intento” para
ver los caracteres en el campo, y luego trasladársela al sistema.
Posteriormente, el sistema ubicará una pieza de código que sepa como
manipular el Intento y la ejecuta. Los intentos también pueden ser usados para
difundir eventos interesantes a través del todo el sistema.
4.2.3.2. Servicios
4.2.3.3. Notificaciones
42
4.2.3.4. Content-Provider
Actividades.
Intentos (Receiver).
Servicios.
Proveedor de contenido.
4.3.1. Actividades
Android usa una clase llamada Intent para moverse de una pantalla a otra.
Un intent describe lo que una aplicación desea hacer. Las dos partes más
43
importantes de la estructura de datos de un Intent son la acción y los datos
sobre los cuales se actuará. Los valores típicos para la acción son MAIN,
VIEW, PICK, EDIT, etc. Por ejemplo, para ver la información de contacto de
una persona podría ser necesario crear un Intent con la acción VIEW y los
datos definidos como una URI (Uniform Resource Identifer) que representa a
una persona.
4.3.2. Intent-Receiver
4.3.3. Service
44
El sistema mantendrá el servicio ejecutándose hasta que finalice. Es
posible conectarse a Servicio y activarlo sino estuviera ejecutándose. Cuando
la aplicación está conectada al servicio, la comunicación entre aplicación y
servicio se realiza a través de la interfaz de Servicio disponible. Por ejemplo,
siguiendo con el reproductor mp3, esta interfaz podría permitir hacer pausa,
saltar o retroceder una nueva canción.
4.3.4. Content-Provider
45
La URI que identifica la tabla dentro del provider.
Los nombres de los campos que quiere recibir.
Los tipos de datos de esos campos.
Google ofrece 3 versiones del SDK, para Windows, Mac OSX (Intel) y
Linux (x86). La forma más rápida de desarrollar es a través del plug-in de
Eclipse ADT. Este plug-in incluye un asistente para empezar en nuevos
proyectos que ayuda a crear los ficheros básicos para comenzar el desarrollo.
46
negocio al permitir a los desarrolladores la creación de aplicaciones
manteniendo sin afectar con esto la licencia del kernel de Linux.
47
48
5. PLATAFORMA iOS
49
Figura 6. Nivel Intermedio Arquitectura iOS
50
Figura 7. Arquitectura de Capas de iOS
Al escribir código, se debe preferir los frameworks de alto nivel sobre los
frameworks de bajo nivel siempre que sea posible. Los frameworks de alto
nivel proporcionan abstracciones orientadas a objetos para construcciones de
bajo nivel. Estas abstracciones por lo general hacen que sea mucho más fácil
escribir código, ya que reducen la cantidad de código que tienen que escribir y
encapsular características potentes y complejas, tales como tomas de
corrientes, sockets y redes.
51
paquetes especiales llamados frameworks. Un framework es un directorio que
contiene una biblioteca dinámica compartida y los recursos (como archivos de
encabezado, imágenes, aplicaciones de ayuda.) necesarios para apoyar esta
biblioteca. Para utilizar frameworks, se deben enlazar a la aplicación del
proyecto de la misma manera que cualquier otra biblioteca compartida.
52
Librerías iOS para desarrolladores: es la referencia y documentación
conceptual que explica las tecnologías iOS y el proceso de desarrollo de
aplicaciones.
¿Qué tipo de aplicaciones se pueden crear para iOS?, iOS soporta dos
tipos de aplicaciones:
Aplicaciones nativas.
Aplicaciones web.
53
5.3. ¿Cómo utilizar las librerías de desarrollo?
54
Figura 8. Librerías de Desarrollo de iOS
55
Las siguientes secciones describen varios conceptos claves disponibles
en la capa Cocoa Touch, esta sección define las presentaciones de alto nivel.
56
Los trabajos de impresión presentados por la aplicación se entregan al
sistema de impresión, que gestiona el proceso de impresión actual. Los
trabajos de impresión de todas las aplicaciones en un dispositivo están en
espera y se imprimen en primero entrar, primero en imprimir. Los usuarios
pueden obtener el estado de los trabajos de impresión desde la aplicación.
Protección de Datos: introducido en iOS 4.0, la protección de datos
permite a las aplicaciones que trabajan con información confidencial del
usuario aprovechando el cifrado integrado. Cuando la solicitud designa a
un archivo especifico como protegidos, el sistema almacenará el archivo
en disco en un formato codificado. Mientras el dispositivo está bloqueado,
el contenido del archivo es inaccesible tanto para su aplicación y para
cualquier intruso potencial. Sin embargo, cuando el dispositivo está
bloqueado por el usuario, una clave de descifrado secreto permite que una
aplicación tenga acceso al archivo.
Servicio de Notificaciones Push: introducido en iOS 3.0, proporciona una
manera de alertar a los usuarios de una nueva información, incluso
cuando las aplicaciones no están en ejecución. El uso de este servicio,
puede enviar notificaciones de texto, añadir una tarjeta de identificación
con el ícono de la aplicación, o desencadenar alertas audibles en los
dispositivos de los usuarios en cualquier momento.
57
tecnologías en esta capa se han diseñado para hacer más fácil la creación de
aplicaciones que se lean y reproduzcan de forma correcta. Algunas tecnologías
son:
58
5.4.3. Core Services
Esta capa contiene los servicios del sistema fundamentalmente todas las
aplicaciones en uso. Incluso si no se utiliza estos servicios, muchas partes del
sistema se construyen en la parte superior de ellos. A continuación se
describen las presentaciones principales:
5.4.4. Core OS
59
necesario tratar explícitamente con la seguridad o comunicarse con un acceso
a hardware externo los frameworks utilizan esta capa.
60
5.5. Herramientas de desarrollo iOS
5.5.1. XCode
61
Para crear una nueva aplicación en iOS, se empieza por crear un nuevo
proyecto en XCode. El proyecto gestiona toda la información asociada a la
aplicación, incluyendo los archivos de origen, la configuración de generación, y
las normas necesarias para poder unir todas las piezas. El corazón de todo
proyecto de XCode es la ventana del proyecto. Esta ventana proporciona
acceso rápido a todos los elementos claves de la aplicación. La ventana se
muestra en la figura siguiente:
62
Cuando se genera la aplicación en XCode, se tiene la opción de
construirlo para el simulador iOS o para un dispositivo conectado. El simulador
ofrece un entorno local para probar las aplicaciones para asegurarse de que se
comportan básicamente de la manera deseada. Cuando esté pulido el
comportamiento básico de la aplicación, se puede dar la instrucción a XCode
para construir la aplicación y ejecutarla en un dispositivo basado en iOS
conectado a su ordenador. Esto se puede ilustrar en la siguiente figura:
63
Figura 11. Construyendo Interfaces iOS usando interface Builder
5.5.3. Instruments
64
de las aplicaciones iOS mientras se ejecutan en el simulador o dispositivo.
Instrument reúne los datos de la aplicación en ejecución y presenta los datos en
una pantalla gráfica llamada el punto de vista temporal, Puede recopilar datos
sobre el uso de memoria de la aplicación, la actividad del disco, la actividad de
red y rendimiento gráfico. La vista de línea de tiempo puede mostrar todos los
tipos de información, lo que le permite correlacionar el comportamiento general
de la aplicación, no solo el comportamiento en un área específica. El punto de
vista temporal se ilustra en la siguiente figura.
65
66
6. PLATAFORMA BLACKBERRY OS
67
optimizadas que en conjunto permite realizar aplicaciones para la plataforma
BlackBerry OS.
68
Figura 13. API’s que necesitan ser firmadas por RIM
69
Luego de 4 días aproximadamente recibiremos la respuesta de RIM en
tres correos, cada uno tendrá un adjunto, que son los siguientes:
Client-RCR-1560404037.csi
Client-RRT-1560404037.csi
Client-RBB-1560404037.csi
70
Figura 14. JDE para desarrollar en BlackBerry OS
71
El JDE a su vez exige tener algunas otras herramientas para su correcta
instalación y uso. Entre ellas están:
72
Figura 15. Simulador JDE para BlackBerry OS
Una vez seleccionamos esta opción nos aparecerán las clases que
necesitan firmas y las que no, en el caso de que requieran firmas se debe
solicitar la validación de las credenciales mediante la opción “Request”, para
ello debe de contar con conexión a internet.
73
Cuando el proceso nos indique debemos de introducir la clave configurada
y aceptar para firmar las clases que lo necesiten. La imagen de petición de
credencial se muestra a continuación:
Por último tenemos todos los archivos juntos en la carpeta “com” los
podemos copiar para luego subirlos a un servidor para la descarga OTA o para
la distribución de la forma que mejor les parezca. Sin olvidar que es necesaria
que para la instalación OTA o vía SD se requieren los archivos .jad y .cod, para
la instalación vía Desktop Manager se requieren de los archivos .alx y .cod.
74
Tabla III. Cuadro comparativo Plataforma de Desarrollo para móviles
75
76
7. ANÁLISIS DE PLATAFORMAS DE DESARROLLO DE
APLICACIONES
Sin embargo puede decirse que las tres plataformas elegidas son los
sistemas móviles más significativos en la actualidad.
77
Si se desea realizar una aplicación para iOS Apple cuenta con una buena
documentación así como los pasos puntuales a seguir para desarrollar
aplicaciones.
Descrito así, Android y J2ME parecen tener una ventaja sobre iOS. La
discusión al respecto es amplia y continua.
Por otra parte, el carácter abierto permite una gran variedad de hardware,
varias marcas de teléfonos inteligentes incrustan Android por ejemplo LG, HTC,
Samsung, Motorola, mientras que los sistemas cerrados solo disponen de una
marca.
78
cerrado cuenta con un sistema para sus líneas de dispositivos, mientras que
Android no puede controlar la homogeneidad en su sistema, dado que las
empresas lo personalizan y añaden funciones propietarias.
Sería interesante saber cómo los usuarios se ven a sí mismos para poder
segmentar de forma más clara los perfiles de los usuarios de las plataformas.
79
Figura 17. Rango de edades para uso de plataformas móviles
El 30% de los usuarios de Android está entre 25-34 Años, con respecto a
iOS están 21% para el mismo rango de edad.
El 30% de los usuarios de Android está entre 25-34 Años, con respecto a
iOS están 21% para el mismo rango de edad.
Los jóvenes prefieren iOS en un 13% y un 7% prefiere Android.
80
Figura 18. Rango de edades para uso de plataformas móviles
81
7.3. Mercado
Estos datos no deben tomarse como absoluto, sin embargo podemos ver
la marcada tendencia de los usuarios por utilizar iOS entre la diversidad de
plataforma, también es cierto que Android es una fuerte competencia, en la
82
medida en que este sistema madure y encuentre la estabilidad en la
fragmentación le hará cara a los movimientos de iOS, a continuación se
muestra la ilustración de este análisis.
83
Los resultados anteriores parecerían que iOS es la plataforma a
seleccionar para poder rentabilizar el esfuerzo, sin embargo no es así, dado que
Android es muy fuerte, y más cuando se lee la gran variedad de empresas que
están adoptando esta plataforma de aplicaciones, tanto que apartir del 2009
viene creciendo de forma rápida.
84
basa en dos datos relativos al crecimiento del número de aplicaciones
disponibles en ambas tiendas, por un lado desde agosto de 2010 hasta
mediados del mes de febrero 2011, la tasa de crecimiento de las aplicaciones
disponibles en Android Market es del 127% sin embargo, la del catálogo de
Apple tan solo ha crecido, en el mismo período un 44%, tasas que son las que
sostienen la proyección relativo al año 2012.
85
Según parece, aunque desarrollar para Android es más rápido, sobre todo
teniendo en cuenta las condiciones que impone Apple a los desarrolladores,
desarrollar para iOS es un negocio lucrativo, donde los precios de las
aplicaciones son mayores que en Android.
86
7.4.1. Plataforma J2ME.
87
Continuación Tabla IV
MIDP Pantalla de al menos 96x54 pixeles.
128Kb de memoria no volátil para correr
componentes MID.
Al menos 8Kb de memoria no volátil para
almacenar datos persistentes de las
aplicaciones.
32 Kb de memoria volátil para correr
Java.
Conectividad inalámbrica a redes.
Lenguaje de Programación Medio, si se posee fundamentos de C++,
o principios de programación orientada a
objetos.
Costo Sin Costo.
88
Continuación Tabla V
Requisitos Mínimos Para los paquetes bases del SDK se
de Hardware. necesitan 600MB de espacio en disco
disponible.
Para cada plataforma descargada en el
SDK un espacio adicional de 100MB.
Requisitos Mínimos 32 MB de RAM
del Dispositivo. 32 mn de memoria Flash
Procesador de 200 Mhz Online
Costo Sin Costo.
89
7.4.4. Plataforma BlackBerry OS
90
CONCLUSIONES
5. Para preparar una buena aplicación se necesita de una buena idea, tomar
en cuenta el sector para el que se diseñará, la monetización que se quiere
91
obtener y la elección de la plataforma de desarrollo para transformar la
solución de la aplicación a los dispositivos que los usuarios puedan utilizar
de forma fácil y sencilla.
6. Las estadísticas proporcionan una idea del sector al cual puede dirigirse la
aplicación, los recursos que estas brindan y la facilidad de manejar los
ciclos de desarrollo, son de gran ayuda para tomar la decisión de
programar en una plataforma específica.
92
en Android, tanto las políticas de restricción, la forma de distribución era
compleja, pero con la llegada del Android Market, la distribución es
sencilla, llegando a ser un paso trivial y de valor para el desarrollo.
Tampoco se descarta la posibilidad de desarrollar para iOS, porque esta
plataforma ofrece mayor rango de monetización. Queda la pregunta
abierta, ¿en qué plataforma se desarrolla?
93
94
RECOMENDACIONES
95
7. Los recursos digitales disponibles en la web, permiten comprender los
entornos de desarrollo y mejores prácticas para hacer software.
96
BIBLIOGRAFÍA
1. APPLE INC. Library iOS and Navigation. [en línea] enero de 2011. [ref. de
12 de febrero de 2010]. Disponible en Web:
<http://developer.apple.com/library/ios/navigation/index.html>.
97
6. . Proveedor de contenidos para Android. [en línea]. 29 de diciembre
de 2006 [ref. de 02 de diciembre de 2010] . Disponible en Web:
<http://developer.android.com/guide/topics/providers/content-
providers.html>.
98
12. KRONOX. Historia de Android. [en línea]. 08 de abril de 2008 [ref. de 12 de
septiembre de 2010]. Disponible en Web:
<http://kronox.org/2009/06/09/historia-de-android/>.
15. Oracle. Java 2 Micro Edition. Mobile. [en línea]. 08 de abril de 2008 [ref. de
12 de septiembre de 2010]. Disponible en Web:
<http://java.sun.com/javame/index.jsp>.
99
Disponible en Web: < http://zonablackberry.com.ve/forum/aplicaciones-
originales-y-de-terceros/326-descargador-de-archivos-ota-para-
blackberry-ota-downloader-gratis.html>
.
100