3. 1
Introducción
Los teléfonos móviles han experimentado una evolución
tecnológica muy importante durante esta última década
Prácticamente hoy en día se parecen a diminutos
computadores capaces de procesar grandes cantidades de
información
Sus prestaciones gráficas no se quedan atrás y han
permitido que los teléfonos móviles se conviertan en una
pequeña plataforma de trabajo, ocio y diversión
7. 2 Plataformas Actuales
Android 2.3
Arquitectura monolítica (núcleo escrito en C)
Máquina virtual Dalvik para traducir el código a su
lenguaje nativo
Programación en Java con la alternativa de utilizar
NDK para C
Android 3.0
Biblioteca de gráficos 2D y 3D basada en OpenGL ES
Primeros móviles: HTC Dream y HTC Magic. Actualmente
funciona en una amplia variedad de móviles de distintas
compañías: Motorola, Samsung, HTC, LG, etc.
EVOLUCIÓN
1.1
3.0
1.5
1.6
2.0.1
2.1
2.2
2.3
8. 2 Plataformas Actuales
Fácil de programar
Mucha documentación y ejemplos
Depuración en el emulador y móvil
Fácil publicación de software en el
Android Market
Cuidado con quedarnos sin memoria
Diseño complejo de interfaz
Android 2.3 en el Samsung Galaxy S2
Fragmentación
EVOLUCIÓN
1.1
3.0
1.5
1.6
2.0.1
2.1
2.2
2.3
9. 2 Plataformas Actuales
Arquitectura basada en micronúcleo
escrito en C++
Sistema optimizado para dispositivos de baja
batería
Desarrollo en C++
Ampliamente extendido
Política de licencias: Eclipse Public
License (EPL)
Symbian OS 9.4 y Symbian^3
EVOLUCIÓN
S60 9.2
S60 9.3
^1
^2
^3
10. 2 Plataformas Actuales
Buena gestión de memoria
Soporte de máquina virtual java
Actualmente se pueden desarrollar
interfaces con Qt
Complejidad en el desarrollo
Los emuladores no disponen de todas
las características reales de los móviles
Symbian^3 en un Nokia N8
Futuro incierto
EVOLUCIÓN
S60 9.2
S60 9.3
^1
^2
^3
11. 2 Plataformas Actuales
Arquitectura de núcleo monolítico
Linux
Plataforma desarrollada por Nokia
basada en el Sistema Debian
Open Source con componentes
propietarios
Interfaz gráfica basada en GNOME
Utilizado en Nokia 770, N800, N810
y N900
EVOLUCIÓN
4.0
5.0
6.0
12. 2 Plataformas Actuales
Plataforma desarrollada por Nokia
Utilización de las herramientas
proporcionadas por Debian
Utilización de Qt
Los SDK se adaptan a los nuevos
terminales
Incompatibilidades entre SDKs en
diferentes versiones
Maemo en un Nokia N900
Complejo desarrollo y ejecución
EVOLUCIÓN
4.0
5.0
6.0
13. 2 Plataformas Actuales
Surge de la unión de Maemo y Moblin
(Qt-based framework + Intel Moblins)
El núcleo es una distribución de Linux
Quiere llegar a los sistemas de
vehículos y televisión
Sigue una línea paralela a Maemo sin ser
un reemplazo
Modo experimental para desarrolladores
MeeGo
EVOLUCIÓN
1.0
1.1
1.1.3
1.2
14. 2 Plataformas Actuales
Compatibilidad con Maemo
Utilización de Qt
Poca documentación
Sistema aun en pruebas
MeeGo en un Nokia N900
EVOLUCIÓN
1.0
1.1
1.1.3
1.2
15. 2 Plataformas Actuales
Compatibilidad con aplicaciones
muy utilizadas de Microsoft
Windows
Diseñado desde sus inicios para
terminales de pocos recursos
Desarrollo en C++ y .NET
Ampliamente extendido
Windows Mobile 6.5 y Windows Phone 7
EVOLUCIÓN
CE 3.0
2003
5.0
6.0
6.5
7.0
16. 2 Plataformas Actuales
Mucha documentación y ejemplos
Desarrollo muy fácil y flexible
Sistema bastante lento
Interfaz en ocasiones incómoda
Soporte Multi-Touch a partir de la
última versión
Primera actualización con problemas
EVOLUCIÓN
CE 3.0
2003
5.0
6.0
6.5
7.0
17. 2 Plataformas Actuales
Lenguaje JavaScript junto con HTML
y CSS
HTML5
Multitarea
Funciona de forma nativa
Posibilidad de usar C y C++
utilizando el PDK (Kit de desarrollo
Plug-in)
EVOLUCIÓN
1.0/1.1
1.2
1.3
1.4
1.4.5
2.0
18. 2 Plataformas Actuales
Desarrollo Web básicamente
Herramientas SDL y PDK
Rápido desarrollo y Rápida
ejecución
Limitación de JavaScript
Limitación de gráficos 3D
WebOS en un Palm
EVOLUCIÓN
1.0/1.1
1.2
1.3
1.4
1.4.5
2.0
19. 2 Plataformas Actuales
Núcleo Híbrido (Micronúcleo + Servicios)
Sistema derivado de Mac OS X
Interfaz de usuario basada en
gestos multi-touch
Desarrollo en C, C++ y Objective-C
Hay tres tipos de licencias: Universitaria,
Estándar y Empresarial
iOS 4.2.1
La Universitaria es gratuita y las demás se paga
un porcentaje a Apple
3.2.2 (iPad)
EVOLUCIÓN
3.1 (iPhone 2G)
4.0
4.2
4.1
4.3
4.2
4.3
20. 2 Plataformas Actuales
Compatibilidad con HTML5 en últimas
versiones
Aplicaciones fáciles de portar entre
iPhone, iPod y iPad
No soporta ni Java ni Flash
Primeras versiones no soportan
multitarea
Se necesita un Mac para desarrollar
aplicaciones
iOS en un iPhone 4
3.2.2 (iPad)
EVOLUCIÓN
3.1 (iPhone 2G)
4.0
4.2
4.1
4.3
4.2
4.3
21. 2 Plataformas Actuales
Desarrollado por Samsung
Según Samsung, NO es un Sistema
Operativo
Plataforma con un kernel
configurable
Desarrollo en C++
Bada OS
EVOLUCIÓN
1.0.0.b3
1.2
1.2.1
22. 2 Plataformas Actuales
Compatibilidad con Flash
SDK destinado a los desarrolladores
libres
Poca documentación
Pocos dispositivos
Bada OS 2.0 en un Samsung Wave 2
EVOLUCIÓN
1.0.0.b3
1.2
1.2.1
23. 2 Plataformas Actuales
Sistema patentado por RIM
Soporte nativo para correo
corporativo
BlackBerry Tablet
Desarrollo en C, C++ y Java
Enfocado a servicios profesionales
PlayBook OS basado en QNX
Ejecutará aplicaciones Android 2.2
BlackBerry 8700
EVOLUCIÓN
4.5
5.0
6.0
24. 2 Plataformas Actuales
Sistema Multitarea
Soporte para Java MIDP 1.0 y WAP
1.2
Desarrollo utilizando plugin en
Eclipse
Fragmentación de versiones
Poco atractivo para un
desarrollador multiplataforma
No está destinado al ocio
BlackBerry OS 6
EVOLUCIÓN
4.5
5.0
6.0
25. 2 Plataformas Actuales
Sistema Operativo basado en Linux
Independiente de cualquier equipo
físico
Sistema de código totalmente abierto
Vodafone apostó por él con el servicio
Vodafone 360
Precio Licencias: 0€
Problemas a la hora de conectar con la
red
No hay controladores 100% funcionales
Limo Linux
26. 2 Plataformas Actuales
J2ME no es un Sistema Operativo
Subconjunto destinado a dispositivos móviles
Programación en Java
Está muy extendido
La máquina virtual de J2ME viene integrada con el sistema Symbian
Presente en un amplio abanico de dispositivos sin importar la plataforma
AJUSTES
CLDC 1.0
CLDC 1.1
MIDP 1.0
MIDP 2.0/2.1
27. 2 Plataformas Actuales
Conjunto amplio de APIs diseñadas
Fácil de programar
Mucha documentación y ejemplos
Multiplataforma
Limitaciones de las APIs
Recursos muy bajos en móviles
Incompatibilidad de APIs con algunas
máquinas virtuales
AJUSTES
CLDC 1.0
CLDC 1.1
MIDP 1.0
MIDP 2.0/2.1
28. 2 Plataformas Actuales
Otros, firmware propietarios
Funciones básicas de manejo del
dispositivo
Prácticamente todos disponen de
una máquina virtual de J2ME
Sony Ericsson T610
Características según el fabricante
Algunos firmwares están
desarrollados en Flash
Sony Ericsson W660
LG BL40
30. 3 Librerías gráficas 3D
OpenGL ES
Tiny Graphics Engine
Tiny Graphics Engine
TIGRE
TIGRE
DirectX
Klimt
Klimt
Vincent 3D
Vincent 3D
AndEngine 2D
AndEngine 2D
J2ME
OpenSceneGraph
OpenSceneGraph
OSG
OSG
M3G
M3G
jPCT-AE
jPCT-AE
Direct3D
GApiDraw
GApiDraw
(sólo 2D)
(sólo 2D)
WMGL
WMGL
Balder (Silverlight, Windows
Balder (Silverlight, Windows
Phone 77yyXna)
Phone
Xna)
31. 3 Librerías gráficas 3D
OpenGL ES es una API de bajo nivel para gráficos 2D y 3D en sistemas
avanzados embebidos
Deriva de la API gráfica OpenGL. Se han eliminado módulos y características
que los dispositivos móviles no pueden soportar por su bajo rendimiento
Está muy bien documentado y estructurado, además, los comandos lógicos se
han modificado para facilitar la tarea de programación
Existen varias versiones, las más utilizadas hoy en día son la OpenGL ES 1.1 y la
OpenGL ES 2.0
La principal diferencia entre las dos versiones es el soporte de Shaders en la 2.0
32. 3 Librerías gráficas 3D
OpenGL ES 1.1 Vs OpenGL ES 2.0
iPhone 3GS
OpenGL ES 1.1
OpenGL ES 2.0
OpenGL ES 1.1
OpenGL ES 2.0
SHADER: Procedimiento de sombreado e iluminación que permite especificar el
renderizado de un vertex o de un pixel.
33. 3 Librerías gráficas 3D
Ejemplos en varias plataformas
Qualcomm MSM7x30 con Android y un juego en OpenGL ES
34. 3 Librerías gráficas 3D
Ejemplos en varias plataformas
Demo OpenGL ES 2.0 en un Sony Ericsson Satio
35. 3 Librerías gráficas 3D
Ejemplos en varias plataformas
Demo juego OpenGL ES en un N900
36. 3 Librerías gráficas 3D
Ejemplos en varias plataformas
Demo juego OpenGL ES en HTC HD2
37. 3 Librerías gráficas 3D
Disponibilidad
OpenGL ES es la API oficial para algunos sistemas operativos
38. 3 Librerías gráficas 3D
Basadas en OpenGL ES
Tiny Graphics Engine (TIGRE)
Librería de renderizado gratuita para
Windows Mobile 5, 6, 6.1 y 6.5
Escrita en Managed C# y basada en la
versión 3.5 de FrameWork
Utiliza aceleración por hardware
Máxima flexibilidad: Modelo de cámaras,
texturas, filtros, renderizado de texto, etc.
Actualmente existen dos versiones:
Tigre 1.1 – fixed pipeline OpenGL ES
Tigre 2.0 – dynamic pipeline OpenGL ES
39. 3 Librerías gráficas 3D
Basadas en OpenGL ES
Tiny Graphics Engine (TIGRE)
Windows Mobile tiene un problema con OpenGL ES, ya que no forma parte
del Sistema en si. Se necesitas drivers que comuniquen la parte hardware con
la API
Demo TIGRE en un HTC HD2
40. 3 Librerías gráficas 3D
Basadas en OpenGL ES
Vincent 3D
Librería de renderizado gratuita
Soporte para Symbian y Windows
Mobile
Utiliza aceleración por hardware
Actualmente sigue dos proyectos,
uno basado en OpenGL ES 1.x y el
otro en OpenGL ES 2.0
41. 3 Librerías gráficas 3D
Basadas en OpenGL ES
Librería de código abierto
Soporte para Windows Mobile , Symbian y PalmOS
Está basada en Coin3D que a su vez es una librería basada en OpenGL
Dispone de iluminación, primitivas básicas de OpenGL, vídeo de fondo,
entre otras
No soporta antialiasing
42. 3 Librerías gráficas 3D
Basadas en OpenGL ES
Windows CE PDA using PocketKnife's TGA-export function
43. 3 Librerías gráficas 3D
WMGL - WM PPC Graphics Library
Librería gráfica diseñada para dispositivos con Windows Mobile
Librería basada en DirectDraw
Provista de herramientas para facilitar la programación de Alpha Blending y
varios efectos 3D (Rotaciones, Sliding, etc)
Soporte para transparencia PNG
C++ optimizado para las tareas de pintado transparente
Proyectos en C++ o C#
No tiene aceleración por hardware
43
44. 3 Librerías gráficas 3D
WMGL - WM PPC Graphics Library
Se utilizó en el proyecto Touch Shell
La finalidad del proyecto era
mejorar la interfaz con la que venía
el propio sistema de Windows
Mobile añadiéndole efectos 3D y
una mejor interactuación con el
usuario
Demostración de la intefáz Windows Mobile
44
45. 3 Librerías gráficas 3D
Es una plataforma gráfica para crear aplicaciones que requieren una alta
demanda de procesado gráfico en dispositivos con Windows Mobile
Es un complemento para DirectDraw
Desarrollo en C++
Básicamente está destinada al desarrollo de juegos
Se puede desarrollar aplicaciones en .NET utilizando un C# Wrapper
gratuito disponible en Google Code
Dispone de aceleración por hardware con la librería de DirectDraw
45
46. 3 Librerías gráficas 3D
Juegos diseñados con la librería GapiDraw para móviles con Windows Mobile
47. 3 Librerías gráficas 3D
andEngine
Librería gráfica 2D basada en OpenGL ES gratuita para dispositivos con Android
Contiene muchas herramientas para la animación de objetos 2D tales como
un motor de física, multitouch y conexión entre móviles
No dispone de mucha documentación pero todos los ejemplos vienen con
su código debidamente comentado
Ejemploss de la librería de física y comunicación con otros dispositivos
49. 3 Librerías gráficas 3D
jPCT-AE (android edition)
jPCT ofrece la solución de desarrollar aplicaciones
dentro del mundo de Java
Solucionamos el problema de la máquina virtual de Java
Podemos desarrollar incluso para navegadores web
Carga modelos 3DS, OBJ, XML, MD2 y ASC
Soporta animaciones y está diseñado para multi core
La versión para Android es un port de jPCT donde
algunas características no han sido implementadas
y otras simplificadas
50. 3 Librerías gráficas 3D
jPCT-AE (android edition)
Animación de un modelo con esqueleto
51. 3 Librerías gráficas 3D
Librería de gráficos 3D de alto nivel
Basada en OpenGL y escrita en C++
Sigue una jerarquia de grafo de escena
Soporta OpenGL 1.1 y OpenGL 2.0
Actualmente se está desarrollando
un port para la plataforma Android
utilizando el NDK que proporciona la
propia Google. Los resultados son
bastantes buenos
53. 3 Librerías gráficas 3D
Librerías para J2ME
Mobile 3D Graphics (M3G)
Librería escrita en Java destinada a dispositivos móviles de pocos recursos
Contiene 30 clases para pintar una escena 3D compleja
M3G y Java3D son dos APIs totalmente distintas e incompatibles
Está tecnología está muy extendida. Prácticamente todos los móviles de
soporte M3G y los que no se les puede instalar una máquina virtual de
J2ME
Actualmente M3G tiene dos versiones: La M3G 1.1 (JSR-184) y la M3G 2.0
(JSR-297) con soporte de Shaders para dispositivos potentes
54. 3 Librerías gráficas 3D
Librerías para J2ME
Mobile 3D Graphics (M3G)
Si no se gestiona debidamente y si el dispositivo carece de recursos M3G va
muy lento
Las especificaciones recomiendan no sobrepasar los 1500 polígonos en
pantalla
Se pueden importar modelos creados en Maya, Blender o 3D studio con
un plugin especial
Modelo final en
un Nokia N95
Modelo SketchUp
3D Studio
55. 3 Librerías gráficas 3D
Librerías para J2ME
Mobile 3D Graphics (M3G)
A pesar de las desventajas que presenta M3G podemos ajustarlo a
cualquier dispositivo compatible haciendo que funcione con fluidez
Podemos encontrar multitud de juegos con gráficos excelentes corriendo
en móviles de pocos recursos debido a una buena gestión de la librería
56. 3 Librerías gráficas 3D
Microsoft
Direct3D Mobile
Esta librería deriva de la Direct3D API
basada en sistemas de escritorio y está
optimizada para el uso en sistemas
embebidos
Se han eliminado algunos módulos de
soporte 3D debido a la baja potencia de
los sistemas móviles
Al igual que OpenGL, el dispositivo tiene
que soportar las características que nos
da la API
A diferencia de OpenGL estas librerías son
propietarias
Demo Direct3D con una librería de física
57. 3 Librerías gráficas 3D
Motor gráfico para sistemas Windows
Phone, SilverLight y XNA
Proporciona herramientas para el desarrollo
de aplicaciones 3D de forma sencilla
Dispone de todos los elementos básicos de
una escena 3D (cámaras, luces, modelos,
texturas, etc)
Dispone de una optimización para
Windows Phone
Demostración de Balder en una
aplicación de escritorio
Algunos elementos como las luces no
funcionan correctamente en Windows
Phone
57
59. 4 IDEs de Programación
Multiplataforma
Multiplataforma
SDK Java aunque también acepta
proyectos en C/C++
SDK Java aunque también acepta
proyectos en otros lenguajes.
No necesita instalación
Necesita instalación
Funcionalidad basada en módulos
donde el usuario elige los que
necesita
Funcionalidad basada en módulos
donde el usuario elige los que
necesita
Buena refactorización
Mejor soporte para aplicaciones
Web
60. 4 IDEs de Programación
IDE para sistemas Windows
C, C++, C#, J#, .NET y otros
Interfaz gráfica basada en Windows
Forms
Utiliza frameworks para el
desarrollo de la interfaz
XNA Framework para desarrollar
juegos
Visual Studio 2008
61. 4 IDEs de Programación
IDE de Apple
Compila código C, C++, Objetive-C y
Objetive C++
Destinada a desarrollar interfaces gráficas
IDE organizado en diferentes programas
por separado
Desarrollo obligado en ordenadores MAC
Xcode 4.0
62. 4 IDEs de Programación
Es una herramienta para el desarrollo de
aplicaciones Symbian
Está basada en el IDE Eclipse
añadiendo plugins para Symbian
Gestiona el desarrollo Symbian mejor
que el Visual Studio
Totalmente gratuito
Carbide C++
63. 4 IDEs de Programación
Qt Creator
Desarrollo en C++
Buena gestión y refactorización
Tiene un diseñador de interfaces pero
es muy complejo
Soporte para Windows, Linux y Mac
Contiene un simulador para desarrollar
aplicaciones para móviles
Qt Creator
66. 5
Tipos de aplicaciones
Prácticamente todas las aplicaciones desarrolladas para sistemas de
escritorio pueden ser portadas a dispositivos móviles
Actualmente las compañías intentan sacar el mismo producto tanto
para sistemas de escritorio como para móviles
Algunos Ejemplos:
67. Tipos de aplicaciones
5
¿Qué tengo o debo utilizar para desarrollar mis
aplicaciones?
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
¿
68. 5
Tipos de aplicaciones
Aplicaciones tipo formulario con gráficos 2D y/o gráficos 3D
Formularios simples de introducción de datos
Imágenes estáticas
Información visual muy simple para el usuario
Apoyo con elementos 3D
Feedback - iPhone
Registros - iPhone
Navigation - Android
Palm WebOS
69. 5
Tipos de aplicaciones
Juegos 2D (Ej. Plataformas)
Ideales para dispositivos con pocos recursos
J2ME
Symbian
WebOS
Maemo
70. 5
Tipos de aplicaciones
Juegos 3D
Uso de librerías 3D del dispositivo
Algunos juegos requieren dispositivos potentes
Convivencia entre 2D y 3D en la mayoría de juegos
Windows Phone
iPhone
Android
71. 5
Tipos de aplicaciones
Aplicaciones que utilicen todos los recursos multimedia (Ej. RA)
Uso de todos los recursos del dispositivo debido a la
necesidad de procesar gran cantidad de datos
Algunas aplicaciones se ayudan de internet para actualizar datos
Layar - Android
Urbanspoon - iPhone
Realidad
Aumentada
72. 5
Tipos de aplicaciones
Aplicaciones con servicios web
Intercambio de información con la red
Conexión permanente a la red
Aplicaciones estéticamente simples
Spotify - iPhone
ustream - Android
Qik - Android
73. 5
Tipos de aplicaciones
Aplicaciones que utilicen la cámara, GPS, Acelerómetros, Sensores, etc.
Uso de la cámara para manipular las capturas en tiempo real
Uso del GPS para la localización
Uso de sensores para aplicaciones especificas (niveles, luz, brújula)
Compass Android
Speedometer - WM
Cámara - Symbian
GPS - Symbian
82. 7
Conclusiones
Existen muchas alternativas a la hora de desarrollar aplicaciones
para dispositivos móviles
Actualmente los dispositivos se decantan por utilizar de forma
nativa la librería OpenGL ES
Hay una alta competitividad entre todas las empresas que se
especializan en el desarrollo y nuevas tecnologías para dispositivos
móviles
A pesar de que la temática de todas las plataformas es similar cada
empresa quiere desarrollar su software por separado en un
mercado donde la más original y la que mejor sepa vender será la
beneficiaria
Es necesario saberse la tabla de relaciones (Plataforma-IDE) y las
especificaciones del sistema a desarrollar
83. 7
Conclusiones
Con nuestra experiencia hemos visto que el mercado tecnológico en
desarrollar para tecnología móvil tiene un comportamiento tipo
Onda
Exige un esfuerzo adicional en información continua en el equipo de
desarrollo