El documento describe diferentes sistemas operativos y entornos de desarrollo para aplicaciones móviles, incluyendo Symbian, BlackBerry, Windows Mobile, Android e iOS. Explica las herramientas, lenguajes de programación y APIs soportadas por cada plataforma, así como las diferentes versiones de sus sistemas operativos respectivos a lo largo del tiempo. También define conceptos clave como interfaz de programación de aplicaciones y protocolo de interfaz entre aplicaciones.
3. Ambientes de las aplicaciones
En los últimos años los dispositivos móviles se han establecido como una parte importante del
acceso a la información y aplicaciones. Estos dispositivos han dejado de ser simples agendas
electrónicas o teléfonos celulares para convertirse en pequeñas computadoras con
capacidad de ejecutar aplicaciones, juegos con gráficos 3D e incluso con capacidades de
acceder a Internet a través de diferentes tecnologías de red inalámbrica de alta velocidad
tales como 3G o WiFi.
4. El ambiente de desarrollo
Las aplicaciones móviles se pueden adecuar al tamaño de la pantalla y a las características
de las interfaces de usuario de los dispositivos móviles que estos despliegan o soportan. Pero
esto quizá no sea la mejor opción, si significa que se requerirán diversas versiones de las
aplicaciones para cada ecosistema móvil (BlackBerry, Apple iOS, Android, Symbian, Windows
Mobile, Windows Phone 7, Web OS, etc.).
Las plataformas para aplicaciones móviles empresariales (MEAP, por sus siglas en inglés)
pueden aligerar la dificultad del desarrollo, permitiendo desarrollar una aplicación que
funcione en múltiples plataformas. La alternativa es desarrollar una aplicación basada en web
y usar el navegador móvil. Las tabletas han introducido el potencial para la integración del
escritorio virtual, usando herramientas de fabricantes como Citrix y VMware; ambas empresas
tienen clientes móviles.
6. Symbian
Symbian: corre exclusivamente en procesadores ARM S.O basado en ROM para ahorrar
energía, consta de un micro kernel. En Symbian cada aplicación corre en sus propios
procesos y tiene acceso solo a su propio espacio de memoria, esto hace que las
aplicaciones sean orientadas a “single threads” y no a “multi threads”.
Posee componentes que permiten el diseño de aplicaciones multiplataforma (diferentes
tamaños de pantalla, color, resolución, teclados, etc.). La mayoría diseñados en C++. Existen
múltiples SDK (Software Development Kit) para el desarrollo de aplicaciones, siendo los
principales UIQ y S60.
Muchos de los dispositivos con Symbian OS además de C++ pueden ser programados en
OPL, Python, Visual Basic, Simkin y Perl, así como en Java ME.
También existe una versión del IDE de Borland para Symbian, así como herramientas o
técnicas desarrolladas por la comunidad para programar en Linux o MacOS.
7. Symbian OS 6.0
Primera versión de Symbian destinada a teléfonos móviles,
añadió soporte para Bluetooth.
Symbian
OS 9.5 Symbian^3
Se considera la nueva generación del sistema operativo Symbian.
Usada en los smartphones de nueva generación de Nokia, como
el N8, C7, C6-01, y E7.
Entre sus nuevas características destacadas están:
Soporte para gráficos acelerados con la aceleración de
hardware en 2D y 3D.
Soporte para HDMI.
Entrada USB (USB On The Go).
Hasta 3 pantallas de inicio personalizables con widgets.
Mejoras estéticas notables gracias a la aceleración de
gráficos y muchas mejoras generales en estabilidad, entre
ellas la consistencia.
Symbian
OS 9.5 Symbian
Anna
Actualización de Symbian^3 con:
Nuevos iconos.
Soporte básico para NFC.
Una nueva versión del navegador.
Mejoras en el rendimiento general, de la batería y en la
pantalla de inicio.
El sistema venía instalado de fábrica en una versión casi final en
los Nokia X7 y E6.
Symbian
OS 10.1 Nokia
Belle
Nokia cambió la nomenclatura hacia el público de Symbian
Belle a Nokia Belle, sin embargo internamente y de cara a los
desarrolladores el sistema operativo todavía se denomina en
realidad Symbian. Esta versión viene instalada por defecto en
los nuevos Nokia 603, 700 y 701, y también estaría disponibles
para los teléfonos que funcionan con Symbian^3 y Symbian
Anna.
Nokia Belle es una actualización mayor de Symbian OS: 10.1.
Entre sus mejoras están:
Mejoras en la estabilidad y el consumo y la gestión de
memoria RAM del sistema operativo.
Nueva interfaz gráfica de usuario con un nuevo menú,
widgets totalmente nuevos y de diferentes tamaños.
Nueva barra de navegación.
Menú de notificaciones deslizable.
Nueva barra de notificaciones entre otras que deja más
espacio para las aplicaciones.
Esta versión fue lanzada para todos los terminales compatibles el
7 de febrero de 2012 menos el Nokia 500 que tuvo un retraso por
8. Arquitectura
de Mac
CORE OS: Los
pilares de
este sistema
operativo de
iPhone
residen aquí
MEDIA: Capa
de gestión
multimedia
(gráficos,
audio, videos,
etc.
Cocoa Touch:
El framework
de desarrollo
para
iPhone/iPod
Touch
CORE
SERVICES: Son
los servicios
básicos del
sistema
kernel de OSX,
sistema de bibliotecas
la pila TCP / IP
sockets
seguridad
gestión de energía
keychain
certificados
sistemas de archivos
Bonjour
• colecciones
• agenda de direcciones
• redes
• acceso a archivos
• sqlite (base de datos)
• core location
• net services
• threading
• preferencias
• utilidades de URL
• Core Audio
• openAL,
• mezclador de sonido,
• grabación de audio
• reproducción de video
• manejo de jpg, png, tiff, PDF
• quartz (2d)
• Core Animation
• OpenGL ES
• eventos y controles multi
touch
• soporte del acelerómetro
• vista jerárquica
• localización de aplicaciones
• alertas
• vista web
• selector de contactos
• selector de imágenes
• soporte de la cámara
9. Herramientas que forman parte del entorno
de desarrollo de la plataforma
Xcode: Xcode es la pieza esencial del entorno. También es una
aplicación que se encarga de la mayoría de los detalles del proyecto
desde el inicio hasta el despliegue
Instruments: Instruments sirve para monitorear la aplicación en desarrollo y sintonizar
finamente su performance en un entorno gráfico. Basado en DTrace, una herramienta
Open Source desarrollada por Sun Microsystems. Es esencial a la hora de identificar
pérdidas de memoria y otros bugs difíciles de rastrear.
Dashcode: Dashcode fue diseñada para desarrollar widgets para el Dashboard de
Mac OS X. incluida para facilitar el desarrollo de aplicaciones Web para el iPhone.
Simulator: el simulador de iPhone permite probar las
funcionalidades básicas de la aplicación en desarrollo.
Interface Builder: Su uso elemental es el desarrollo de la
Interface Humana (GUI). IB es donde los diferentes módulos se
conectan, y es también donde se le da vida a muchos de los
módulos pre compilados que se verán en la pantalla.
10. RIM (Research in motion)
BlackBerry RIM SDK (BlackBerry Research In Motion Software
Development Kit)
Es el entorno para construir aplicaciones para los dispositivos inalámbricos BlackBerry. El
lenguaje de programación utilizado es J2ME, esta es la plataforma de java para dispositivos
móviles. El uso de los dispositivos Blackberries el SDK está orientado fuertemente al desarrollo de
negocio.
RIM provee algunas librerías muy útiles como: net.rim.device.api que provee acceso a
funcionalidades específicas para el hardware RIM. Dentro de este paquete hay clases para
monitorear los puertos COM, la radio, el teclado etc.
EL paquete net.rim.device.api.util incluye construcciones muy útiles como vectores ordenados,
vectores clonables, buffers de datos y otros.
La librería net.rim.device.api.system.mobitex es usada para obtener información de la red
Mobitex (red usada por los dispositivos BlackBerry).
El SDK también incluye un IDE que soporta debugging y el emulador necesario para esto.
11. Desarrollando para RIM
RIM provee un sistema operativo propietario, multitarea para los dispositivos BlackBerrys que
hace uso intensivo de los dispositivos de entrada como el teclado y el trackball
Cualquier desarrollador puede escribir software usando las APIs propietarias de BlackBerry,
pero para que una aplicación pueda acceder a ciertas funcionalidades restringidas debe
estar firmado digitalmente con un certificado asociado a una cuenta de desarrollador en
RIM, este proceso garantiza la procedencia de las aplicaciones, no así la calidad del
código.
12. Windows Mobile
Windows Mobile es el sistema operativo de Microsoft destinado a dispositivos móviles.
“Windows Mobile 6 Professional and Standard Software Development Kits Refresh” SDK para el desarrollo
de aplicaciones en la plataforma Windows Mobile Una vez descargado e instalado el SDK tendremos
todo lo necesario para realizar aplicaciones para WM6 incluyendo emuladores (imágenes ROM) para los
distintos tamaños de pantalla de los dispositivos en mercado.
Se pueden desarrollar dos tipos de aplicaciones para Windows Mobile: con código nativo o con código
administrado (managed code).
Llamamos código nativo al código C++ que utiliza directamente la API de Windows Mobile, y código
administrado al que utiliza las clases del .NET Compact Framework con C# o .NET. (Windows Mobile
es la única plataforma móvil importante que no soporta J2ME).
¿Las diferencias entre ambas? El código nativo es más rápido y ocupa menos recursos, además de
proporcionar acceso a algunas características del hardware que son inaccesibles desde el Compact
Framework. Sin embargo, en la mayor parte de los casos desarrollar código administrado es la mejor
opción. El tamaño del ejecutable es cada vez menos importante, y si la velocidad es un factor crítico
siempre se puede optar por programar en código nativo las partes de la aplicación que supongan un
cuello de botella. Por lo demás, el desarrollo en .NET resulta mucho más fácil y cómodo.
13. Versiones de Windows Mobile
Microsoft Windows CE 1.0
Microsoft Windows CE 2.0
Microsoft Windows CE 2.01
Microsoft Windows CE 2.02
Microsoft Windows CE 2.1
Microsoft Windows CE 2.11
Microsoft Windows CE 2.12
Microsoft Windows CE 2.11 H/PC PRO
Microsoft Windows CE 3.0 H/PC 2000
Microsoft Pocket PC 2000 (WinCE 3.0)
Microsoft Pocket PC 2002 (WinCE 3.1)
Microsoft Windows Mobile 2003 para Pocket
PC (WinCE 4.2)
Microsoft Windows Mobile 2003 Second
Edition (WinCE 4.21)
Microsoft Windows Mobile 2005 (WinCE 5.0)
Microsoft Windows Mobile 5
Microsoft Windows Mobile 6
Microsoft Windows Mobile 6.1
Microsoft Windows Mobile 6.5
Microsoft Windows Phone 6.5
Microsoft Windows Phone 7
Microsoft Windows Phone 8
14. Android
Es una plataforma de software basada en Linux para dispositivos móviles que incluye un sistema
operativo, middleware y aplicaciones clave. Esta plataforma está siendo desarrollada por Google y el
Open Handset Alliance. Permite a los desarrolladores escribir código en Java usando librerías de
software desarrolladas por Google, pero no soporta programas en código nativo.
Android proporciona un paquete completo de software a todos los niveles:
o Un kernel Linux que sirve como base de la pila de software y se encarga de las funciones más básicas
del sistema: gestión de drivers, seguridad, comunicaciones, etc.
o Una capa de librerías de bajo nivel en C y C++.
o Un framework para el desarrollo de aplicaciones, dividido en subsistemas para gestión del sistema
como el "package manager"; gestión del hardware del teléfono anfitrión ("telephony manager") o
acceso a APIs sofisticadas de geo localización o mensajería XMPP. También incluye un sistema de
vistas para manejar el interfaz de usuario de las aplicaciones, que incluyen posibilidad de
visualización de mapas o renderizado HTML directamente en el interfaz gráfico de la aplicación.
o Una suite de aplicaciones (navegador, agenda, gestión del teléfono).
Las aplicaciones Android están programadas en Java, pero no corriendo sobre Java ME, sino sobre
Dalvik, una máquina virtual Java
15. Desarrollando para Android, Anatomía de una aplicación
Android
Activity
•es una pantalla
individual en tu
aplicación. Cada
"actividad" se
implementa como
una clase que hereda
de "Activity", lo que
hará que la clase
despliegue una UI
compuesta de "Views”
y responda a eventos
Intent y IntentFilter
Un "Intent" describe lo
que una aplicación
desea hacer. Las dos
partes más importantes
de la estructura de datos
de un "Intent" son la
acción y los datos sobre
los cuales se actuará
"IntentFilter" es una
descripción de lo que
intenta hacer una
"Activity"
IntentReceiver
-Se puede utilizar un
"IntentReceiver" cuando
queramos programar
una aplicación para
que se ejecute como
respuesta a un evento.
-no despliegan UI
-son registrados en el
archivo
"AndroidManifest.xml"
Service:
• es una aplicación
que se mantiene
activada por un
largo tiempo y no
despliega una UI
Content Provider
•Las aplicaciones
pueden almacenar
sus datos en archivos,
una base de datos
"SQLite" o cualquier
otro mecanismo. Sin
embargo, un "Content
Provider" es de utilidad
cuando los datos de
tu aplicación deben
ser compartidos con
otras aplicaciones.
Se puede desarrollar una aplicación Android con las mismas herramientas utilizadas para desarrollar en
Java. Las "Android core libraries" proveen las funcionalidades necesarias para construir impresionantes y
poderosas aplicaciones para dispositivos móviles.
El "Android SDK" soporta Windows XP, Windows Vista, Windows 7, Linux y Mac OS y utiliza como IDE de
desarrollo a Eclipse mediante el plug in "Android Development Tools (ADT)” aunque es posible utilizar
Apache Ant para entornos Mac o Linux
16. Protocolo de Interfaz entre aplicaciones
Interfaz de programación de aplicaciones
Es el conjunto de funciones y procedimientos (o métodos, en la programación orientada a
objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de
abstracción.
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.
17. EJEMPLO
Haciendo todo el trabajo desde el principio:
Traza, sobre papel milimetrado, la forma de las letras (y espacio) "H,o, l, a,M,u, n, d, o".
Crea una matriz de cuadrados negros y blancos que se asemeje a la sucesión de letras.
Mediante instrucciones en ensamblador, escribe la información de la matriz en la memoria
intermedia ("buffer") de pantalla.
Mediante la instrucción adecuada, haz que la tarjeta gráfica realice el volcado de esa información
sobre la pantalla.
Por medio de un Sistema operativo para hacer parte del trabajo:
Carga una fuente tipográfica proporcionada por el sistema operativo.
Haz que el sistema operativo borre la pantalla.
Haz que el sistema operativo dibuje el texto "Hola Mundo" usando la fuente cargada.
Usando una aplicación (que a su vez usa el sistema operativo) para realizar la mayor parte
del trabajo:
Escribe un documento HTML con las palabras "Hola Mundo" para que un navegador WEB como
Firefox, Chrome, Opera, Safari, Midori, Ice weasel, Web o Internet Explorer pueda representarlo en el
monitor.
18. La plataforma Android ofrece una API de marco en el que las aplicaciones pueden utilizar
para interactuar con el sistema Android subyacente. La API de marco consiste en:
Un conjunto básico de paquetes y clases
Un conjunto de elementos y atributos XML para la declaración de un archivo de manifiesto
Un conjunto de elementos y atributos XML para la declaración y el acceso a los recursos
Un conjunto de Intenciones
Un conjunto de permisos que pueden solicitar aplicaciones, así como refuerzos de permiso
incluido en el sistema
Cada versión sucesiva de la plataforma Android pueden incluir actualizaciones de la
aplicación de Android API de marco de trabajo que se ofrece.
19. En programación orientada a objetos lenguajes, una API por lo
general incluye una descripción de un conjunto de clase las
definiciones, con un conjunto de comportamientos asociados
con esas clases. Un comportamiento es el conjunto de reglas
sobre cómo un objeto, derivado de esa clase, actuará en una
circunstancia
20. Fuentes de Consulta
Belatrix Software Factory BSF S.A. 2008. Documento de Investigación y
Análisis de las Características de los Dispositivos Móviles Inteligentes (Smart
Phones). Mayo, 18, 2013.
http://www.belatrixsf.com/index.php/spdesarrollosmoviles.
Barrera, Embi y otros. Versiones de Symbian. Mayo, 18, 2013. http://smart-
essential.jimdo.com/symbian/versiones-de-symbian/
Anónimo. 2013. Mac OS X. Mayo, 18, 2013.
https://es.wikipedia.org/wiki/Mac_OS_X
http://en.wikipedia.org/wiki/BlackBerry_OS_version_history
http://es.wikipedia.org/wiki/Android