miércoles, 24 de enero de 2007

Un ejemplo de implementación real

Hoy nos hemos reunido algunos miembros del Grupo y yo con una persona que trabaja en una conocida operadora de telefonía móvil y que ha hecho algunos pequeños desarrollos a nivel experimental sobre terminales móviles. En este caso concreto nos ha mostrado un sencillo programa que muestra un cubo con texturas girando en la pantalla del teléfono. El sistema operativo de este era Windows Smartphone 2003 y el programa lo ha hecho con Visual Studio 2005. Para programar el cubo 3D lo ha hecho con OpenGL-ES, concretamente con las librerías Vincent Mobile 3D Rendering Library.

Cosas interesantes que nos ha comentado:
  • Él prefiere trabajar con Smartphone a Symbian porque parece ser que la documentación para el primero es más completa, mientras para el segundo, aunque existe también mucha, hay ciertas APIs cerradas para las que hay que pagar si se quieren obtener.

  • El entorno del Visual Studio 2005 es muy potente para trabajar, aunque es necesaria una suscripción al MSDN de Microsoft para tenerlo (previo pago). Sin embargo existe un kit de desarrollo para Windows CE que es gratuito y puede servir también para este proyecto.

  • Ambos entornos llevan un emulador de PocketPC/Smartphone que permiten correr los programas sin tener que conectar un terminal real. Sobre este particular, hay algunas cosas a destacar:

    • El código que se genera para el emulador no es código máquina para procesadores ARM como los que llevan la mayoría de estos dispositivos. Es código Win32/x86, que sirve únicamente para ser ejecutado por el emulador.

    • El emulador dispone de una opción que permite configurar una carpeta cualquiera del PC como si fuera una tarjeta de memoria del dispositivo emulado. De esta forma se puede acceder muy facilmente a los ficheros del proyecto en desarrollo.

    • Un interesante consejo es que cuando se está haciendo el programa, de entre todos los dispositivos que se pueden emular es mejor elegir las PDAs sobre los Smartphones aunque el desarrollo sea para estos últimos. La razón es que las primeras disponen de pantalla táctil y es más rápido moverse por los menús haciendo clic sobre la pantalla. Los móviles, en cambio, al no tener la pantalla táctil hay que manejarlos con el teclado numérico, que es mucho más engorroso.


Así pues se decide que el proyecto se implementará para esta plataforma y usando este entorno, a pesar de estar menos extendida que Symbian. Al tratarse de una "prueba de concepto" y contar con la experiencia de esta persona, se prefiere que el desarrollo sea lo más rápido y simple posible, aunque luego pueda utilizarse en un número menor de dispositivos. Esto último no tiene demasiada importancia porque, como se ha mencionado, por el momento se trata de un experimento y no se va a generar a partir de él un producto comercial ni es necesario que sea estable al 100%.

martes, 23 de enero de 2007

Referencias y enlaces

A continuación todas las referencias y enlaces de las últimas entradas acerca de sistemas operatívos, gráficos y entornos de desarrollo para teléfonos móviles:

[1] Estudio sobre ventas de Smartphones. http://www.canalys.com/pr/2006/r2006071.htm

[2] Resoluciones más habituales en teléfonos móviles. http://news.deviantart.com/article/12488

[3] Hábitos de juego en teléfonos móviles. http://www.nokia.com/A4136001?newsid=1090119

[4] Teléfono Sony-Ericsson W200. http://developer.sonyericsson.com/site/global/products/phonegallery/w200/p_w200.jsp

[5] Tips for JSR 184 hardware accelerated. http://developer.sonyericsson.com/site/global/newsandevents/latestnews/newsjan06/p_jbenchmarks_tips_jsr184_hardware_acceleration.jsp

[6] Intel 2700G. http://www.intel.com/design/pca/prodbref/300571.htm

[7] AMD Imageon. http://ati.amd.com/products/handheld.html

[8] NVidia GoForce. http://www.nvidia.com/object/mobilemedia_platform.html

[9] Estándar OpenGL-ES. http://www.khronos.org/opengles

[10] DirectX y Direct3D en Windows Mobile. http://msdn2.microsoft.com/es-es/library/ms172504(VS.80).aspx

[11] JSR 184: Mobile 3D Graphics API for J2ME. http://www.jcp.org/en/jsr/detail?id=184
[12] JSR 239: Java Binding for the OpenGL ES API. http://www.jcp.org/en/jsr/detail?id=239
[13] Direct3D Mobile. http://msdn2.microsoft.com/en-us/library/aa452478.aspx
[14] Vincent Mobile 3D Rendering Library. http://sourceforge.net/projects/ogl-es/
[15] Hybrid Rasteroid Library. http://hybrid.fi/main/download/tools.php
[16] GLBenchmark, página sobre pruebas de rendimiento a OpenGL- ES. http://www.glbenchmark.com
[17] OpenGL-ES 1.1 Plugin. http://www.forum.nokia.com/info/sw.nokia.com/id/36331d44-414a-4b82-8b20-85f1183e7029/OpenGL_ES_1_1_Plug_in.html
[18] PowerVR MBX OpenGL ES SDK. http://www.imgtec.com/PowerVR/insider/toolsSDKs/KhronosOpenGLES1xMBX/index.asp
[19] Sony-Ericsson UIQ SDK. http://developer.sonyericsson.com/site/global/docstools/symbian/p_symbian.jsp
[20] SeeStorm, vídeo sintético con avatares para PCs y móviles. http://www.seestorm.com/home/
[21] Nota de prensa sobre avatares de SeeStorm. http://www.seestorm.com/press/archive/050317.jsp
[22] Cantoche, actores virtuales para varias plataformas. http://www.cantoche.com/
[23] Cantoche AVATARS, actores virtuales en teléfonos móviles. http://www.cantoche.com/english/solutions/index_mobile.html
[24] E. Sandali, F. Lavagetto, P. Pisano. "A 3D character animation engine for multimodal interaction on mobile devices". Proceedings of the SPIE, Volume 5684, pp. 84-92 (2005)
[25] Microsoft Agent, personajes en aplicaciones Windows. http://www.microsoft.com/msagent/default.asp
[26] iClonet, creación y animación de actores 3D. http://www.reallusion.com/iclone/

Avatares en móviles, productos comerciales

En el tema que nos ocupa un avatar es un personaje virtual capaz de interactuar con el usuario de forma inteligente según el contexto, y representado gráficamente en 3D. La representación es animada (no estática) y dinámica, de forma que los movimientos del personaje son consistentes con el estado de su entorno y estado interno, y lo más creibles y realistas posibles. No deben confundirse con los 'avatares' que han popularizado en los últimos tiempos los servicios de mensajería instantanea, que son justamente lo contrario, pues suelen ser en 2D, estáticos, y no interactivos.

En el campo de los gráficos 3D en teléfonos móviles se ha encontrado que existen los siguientes ejemplos:
  • SeeStorm [20]. Es una empresa que cuenta entre su productos con un generador de animaciones 3D de bustos parlantes que sincronizan en tiempo real el movimiento de los labios con el flujo de palabras que pronuncian, utilizando para ello su tecnología de reconocimiento de fonemas. En su página web hay demostraciones y vídeos sobre el funcionamiento de su producto. En una nota de prensa de febrero de 2005 [21] explica cómo un proveedor de contenidos para móviles japonés (Dimps Corporation) ofrece avatares 3D utilizando su tecnología. Los usuarios pueden personalizar sus terminales con personajes animados "vivos" y "emocionales", que "viven" en la pantalla y muestran los eventos del teléfono. Los avatares son humanos y mascotas, así como imágenes divertidas y personajes de dibujos animados, de forma que cada suscriptor pueda encontrar el que más le guste y pueda con él conseguir que su teléfono sea más "amigable". Ejemplos de ellos son un gato sonriente, un bebé somnoliento o un autobús triste. Los usuario pueden también crear su propio personaje 3D a partir de una foto hecha directamenta con la cámara del móvil. El proceso es sencillo, basta tomar la foro, esta se envía al servidor y se recibe el personaje generado. La foto del usuario se puede combinar con una imagen de fondo o añadirle efectos animados para conseguir que el avatar sea todavía más personal. Los personajes pueden expresar emociones y cambios de humor, y su comportamiento son reacciones a los eventos del terminal de teléfono. Por ejemplo, si es un perrito llorará si la batería está baja, o tendrá una aureola alrededor de la cabeza si alguien está llamando o se ha recibido un mensaje, etc.
  • Cantoche [22]. Es una empresa especializada en la creación, comportamiento e integración de personajes 3D animados en aplicaciones y dispositivos multimedia. Comercializa una suite llamada Living Actor que permite controlar todo el proceso de creación de un personaje, incluyendo su modelado en 3D, su aspecto físico, su entorno y su iluminación, su comportamiento, etc. Cuenta además con varios productos adicionales que son interesantes para hacer al actor más rico, como LA_VoiceManager, para síntesis y reconocimiento de voz en varios idiomas; y como LA_AIManager, que dota al actor de una base de conocimientos de forma que pueda "dialogar" con el usuario de formá más o menos coherente y responder sus preguntas, o dar consejos. Cuenta también con otro producto, llamado AVATARS [23] que permite integrar en teléfonos y aplicaciones móviles los actores generados con Living Actor, y crear así por ejemplo asistentes para ayudar en el manejo del teléfono, o juegos tipo "tamagochi".
Otros. No se han encontrado más desarrollos (comerciales o no) que sirvan para generar actores virtuales que funcionen sobre teléfonos móviles, aunque sí que se ha encontrado alguna referencia a artículos publicados sobre este tema (por ejemplo [24]) o soluciones orientadas a la plataforma PC (como Microsoft Agent [25], o iClone [26] ).

domingo, 21 de enero de 2007

Librerías para desarrollos de gráficos

Las librerías son la implementación en código de las funciones o clases descritas en una API, y se utilizan junto con los compiladores, que las enlazan con el código escrito para dar lugar a la aplicación final. Pueden existir varias librerías que implementen una API, o puede haber solo una. Existen librerías propietarias o abiertas, de pago o gratuitas, desarrolladas por grandes empresas o por particulares. Entre todas ellas, se han seleccionado las siguientes:
  • Vincent Mobile 3D Rendering Library, implementa OpenGL-ES 1.1 y funciona en las plataformas Windows Mobile, Symbian y Linux sobre procesadores ARM e Intel XScale. Es Open Source y puede descargarse libremente desde la página del proyecto. [14]
  • Hybrid Rasteroid, implementa OpenGL-ES 1.1. Es propietaria, pero está disponible gratuitamente para evaluación y desarrollos no comerciales. Funciona en Windows XP, Windows Mobile y Symbian, sobre procesadores ARM, x86 e Intel XScale. [15]
  • Nokia OpenGL-ES Plugin. Es un añadido para el SDK de Nokia que permite programar en C la versión 1.1 de OpenGL-ES. Funciona para el sistema Symbian, concretamente la serie S60 de teléfonos, cuyos más recientes modelos incorporan aceleración 3D por hardware. [17]
  • PowerVR MBX OpenGL ES SDK. Implementa la versión 1.x de OpenGL-ES y funciona en todas las plataformas (Windows Mobile, Linux, Symbian) sobre procesadores ARM, Intel XScale y otros. Parece que es gratuita, al menos para uso no comercial. [18]
  • Sony-Ericsson UIQ SDK. Kit de desarrollo para teléfonos Sony-Ericsson de la serie UIQ, que incluye una implementación de OpenGL-ES 1.1 sobre esa plataforma, para sistema Symbian. [19]

viernes, 19 de enero de 2007

Entornos de desarrollo para móviles

Un entorno de desarrollo es el conjunto de herramientas (compilador, intérprete, librerías, sistema operativo, editor, etc.) necesarias para crear programas de software.
Cada plataforma cuenta con uno o varios que son los más utilizados:
  • Symbian: Los dos principales entornos son Java y Carbide.c++.
    • Java es el lenguaje orientado a objetos creado por Sun que genera código intermedio que ha de ser interpretado por una máquina virtual. En teléfonos móviles y otros dispositivos pequeños se utiliza una versión reducida denominada J2ME (Java 2 Micro Edition) adaptada a sus particularidades. La mayoría de los teléfonos móviles medianamente avanzados de los últimos años están preparados para J2ME, incluido el sistema Symbian. Para Java existen compiladores en plataformas Windows, Linux y Solaris, así como diversos editores e IDEs, como Eclipse.
    • Carbide es un entorno derivado del CodeWarrior para MacIntosh que actualmente es propiedad de Nokia. Es también un IDE y hay versiones para programar en C++, Java, y como plugin de Visual Studio. Genera código nativo para procesadores ARM (y otros) usando una versión modificada del GCC. La versión oficial funciona sobre Windows, aunque hay adaptaciones para MacOS-X y Linux.
    • Nokia SDKs, para cada serie de modelos de Nokia (S40, S60, S80) se ofrece un kit de desarrollo basado en Java y C/C++, que incluye facilidades para acceder a las características propias de cada serie y proporciona herramientas extra como debuggers y emuladores.
    • Otros. Por ser el sistema más popular hay multitud de entornos y utilidades adicionales (Borland, Python), pero están poco extendidos y no está claro que puedan utilizarse para desarrollar programas gráficos de 3D.
  • Windows Mobile: Los dos principales entornos son .NET Compact Framework y Java.
    • Visual Studio (.NET), es la herramienta de Microsoft para los desarrolladores. Cuenta con varios lenguajes con los que programar (Visual Basic .NET, Visual C++ .NET, C#) que generan código intermedio para ser interpretado por el llamado ".NET Compact Framework". Este intérprete está disponible únicamente para Windows Mobile.
    • Java, como se ha comentado anteriormente, existen muchas herramientas para desarrollar, y ha de contarse también con una máquina virtual para interpretar el código generado. Microsoft no incluye máquina Java en sus versiones, pero sí que suelen hacerlo los fabricantes de los teléfonos y los operadores, que le incorporan una que normalmente está implementada por terceros.
  • PalmOS.
    • Java, de forma similar al resto de plataformas. Existe máquina virtual pero no viene de serie con el sistema, sino que hay que obtenerla de un tercero e instalarla.
    • Palm SDK. Kit de desarrollo oficial, que cuenta con compilador de C, debugger y emulador.
    • prc-tools. Conjunto de utilidades que llevan de serie muchas distribuciones de Linux para desarrollar para Palm, que incluyen el compilador gcc para producir código cruzado, el debugger gdb y un emulador.
  • Linux.
    • Java, de forma similar al resto de plataformas. Existen máquinas virtuales.
    • GCC, el compilador oficial de Linux, portado a la plataforma donde corra (ARM, normalmente). Además están portadas el resto de utilidades GNU típicas de un Linux de PC, como el debugger gdb, varias librerías, varios editores, e incluso el shell.

miércoles, 17 de enero de 2007

APIs para desarrollo de gráficos en teléfonos móviles

Entendemos por API la especificación o descripción de un conjunto de clases o funciones que se usan para un fin determinado; en nuestro caso la creación de gráficos 3D en dispositivos móviles. Existen varias, algunas de ellas entremezcladas entre sí:
  • Direct3D Mobile [13], forma parte de las DirectX de Microsoft, y proporciona soporte para aplicaciones gráficas 3D en plataformas basadas en Windows CE. Deriva del API Direct3D de los sistemas Windows de escritorio, pero está optimizada para sistemas embebidos. Los aspectos más importantes son: El uso de recursos es menor comparado con los sistemas de escritorio como resultado de eliminar el soporte para aquellas capacidades gráficas que no están disponibles en dispositivos móviles por si limitado hardware y batería. Su arquitectura permite implementar soluciones basadas solo en software, solo en hardware, o una mezcla de ambos. Está construida para soportar diferentes arquitecturas, de forma que además de usar números en coma flotante puede operar también con valores en coma fija.
  • Mobile 3D Graphics (M3G), también denominada JSR-184 [11]. Diseñada para crear gráficos 3D en dispositivos móviles de manera escalable, interactiva y eficiente en el uso de los limitados recursos. Se propone como una extensión de la J2ME de Java, que se integre en esta como un conjunto adicional de clases. Entre sus características caben destacar la posibilidad de hacer posible el uso de 3D en diferentes aplicaciones, no asumir la existencia de capacidades hardware de alto nivel pero sacar partido de él si existe, no imponer límites arbitrarios a la complejidad o tamaño del contenido 3D, soporta características avanzadas en plataformas de pocas prestaciones, o mantener un uso reducido de memoria RAM y ROM.
  • OpenGL-ES, de la que se ha hablado anteriormente, es una especificación de funciones de bajo nivel, subconjunto de OpenGL, para la creación de gráficos en 3D utilizando un interfaz común y multiplataforma.
  • Java binding for OpenGL-ES, también denominada JSR 239 [12]. Proporciona a los programadores de Java acceso casi directo a la implementación de OpenGL-ES que haya por debajo. Esta se diferencia de la JSR-184 en que no está orientada a objetos, ni estructurada en clases ni ligada a ninguna extensión de Java. Se creó para facilitar la traducción a Java de programas ya existentes que usasen OpenGL, o para desarrolladores que ya estén familiarizados con esa API.

Existe una página web [16] que realiza benchmarks sobre implementaciones de estas tres últimas APIs en diversos teléfonos móviles existentes en mercado, dando como resultado una calificación entre 1 y 6 sobre las prestaciones obtenidas en cada uno de ellos.

lunes, 15 de enero de 2007

Estándares gráficos en teléfonos móviles

OpenGL-ES

Es un subconjunto de la librería estándar OpenGL para ser usado en entornos embebidos, como teléfonos móviles o PDAs. Existen varias versiones y perfiles de uso:

  • OpenGL-ES 1.0: Basada en la especificación 1.5 de OpenGL. Debido a que está orientada a ser usado en procesadores embebidos de capacidad limitada, se han quitado algunas funcionalidades (manejo de texturas 3D, operaciones complejas con polígonos, etc) y añadido funciones capaces de operar en coma fija para aumentar la velocidad y reducir el ancho de banda y consumo de energía. Tiene una extensión, la versión 1.1 con algunas mejoras.
  • OpenGL-ES 2.0: Basada en la especificación 2.0 de OpenGL, permite usar un lenguaje de definición de shaders derivado del del estándar original, programar la línea de transformación y algunas operaciones con texturas. No es totalmente compatible con la versión 1.0.
  • OpenGL-ES-SC: Basada en la especificación 1.3 de OpenGL, destinada a su uso en sistemas de tiempo real, por lo que se han simplificado algunos aspectos del estándar original para que sea más claro y menos complejo.

Es la API oficial escogida para el sistema operativo Symbian. La han adoptado diversos fabricantes, como Nokia, Sony Ericsson, LG, Fujitsu, ARM, y otros. También está soportada en los sistemas Windows Mobile y Linux.

Más información sobre este y otros estándares adicionales en la página web de Khronos [9].


Windows Mobile DirectX and Direct3D

A partir de la versión 5.0 de Windows Mobile vienen implementadas en ese sistema las librerías DirectX y Direct3D, basadas en la versión 9 de su equivalente en sistemas de escritorio Windows. Las diferencias son que no se implementan algunas funciones de shading de vértices y píxeles, y que se añaden algunas otras para operar con números en coma fija, más eficiente (y a veces única opción) en dispositivos móviles.
Del mismo modo que ocurre con los sistemas de escritorio, estas librerías son propietarias de Microsoft y solo están disponibles para sus sistemas operativos.
Más información en las páginas web de MSDN de Microsoft [10].

martes, 9 de enero de 2007

Sistemas gráficos en teléfonos móviles

La gran mayoría de modelos de teléfono móvil aparecidos en los últimos años cuentan con una pantalla gráfica donde se muestra el interfaz de usuario, existiendo una gran variedad de resoluciones y profundidades de color, que van desde los 96x64 en blanco y negro de los modelos más básicos hasta los 230x240 (QVGA) con 262000 colores. Estos son los valores más extremos y probablemente menos frecuentes; según una rápida encuesta realizada en el portal de arte digital devianART [2] las resoluciones más extendidas parecen ser 128x128 y 128x160 con 4096, que en el futuro irán aumentado a medida que aparezcan en el mercado terminales más avanzados.

Las tecnologías que utilizan las pantallas son básicamente dos, la de cristal líquido (LCD) y las TFT. Las primeras son más antiguas y tienen menor calidad de imagen y tiempos de respuesta más lentos, y aunque tienen un menor coste económico la tendencia es que desaparezcan. La tecnología TFT en cambio es más moderna y tiene mejores prestaciones en cuanto a reproducción del color y velocidad de respuesta, llegando incluso a utilizarse para ver la televisión en los terminales más modernos de tercera generación (3G) con velocidades de refresco mínimas de 15 FPS. Existe otra tecnología que todavía está dando sus primeros pasos, la OLED, basada en el uso de LEDs de pequeño tamaño y que prometen mayor calidad de imagen con menor consumo de batería. Todavía no está desarrollada, y no existen el mercado terminales que hagan uso de ella.

En el aspecto de la aceleración hardware de las representaciones gráficas, están comenzando a aparecer soluciones tanto para imagen 2D como para 3D. Si nos centramos en esta última el principal impulsor es el desarrollo de videojuegos similares a los de las consolas de salón, pero adaptados al pequeño tamaño y a las prestaciones de un teléfono móvil. En este sentido Nokia fue la pionera cuando lanzó en 2003 su modelo N'Gage con gran éxito de ventas, y sus planes para el futuro son los de continuar en ese campo, según se concluye en un estudio realizado para conocer los hábitos de juego con teléfonos móviles [3]. Otro fabricante que también ha apostado por esta línea es Sony-Ericsson, que próximamente presentará su modelo W200 [4] con capacidades 3D. Incluso cuenta con un portal web dedicado a desarrolladores donde ofrece información sobre las prestaciones de algunos de sus equipos y cómo aprovecharlas para sacarles el máximo rendimiento [5].

Los fabricantes de teléfonos móviles integran en sus dispositivos una serie de componentes electrónicos y de procesamiento que en muchos casos son diseñados y fabricados por terceros. Las grandes compañías del sector de la microelectrónica (Intel, AMD, NVidia, ATI) cuentan casi todas con algún procesador diseñado para ser utilizado en dispositivos móviles. Como ejemplos se podrían nombrar el 2700G de Intel [6], el Imageon de ATI/AMD [7] o la gama GoForce de NVIDIA [8]. Motorola, Samsung o LG cuentan con varios modelos que integran alguno de estos chips.

jueves, 4 de enero de 2007

Sistemas operativos en teléfonos móviles

Los diversos sistemas operativos que existen permiten al programador de aplicaciones móviles abstraerse del hardware que hay por debajo para que puedan centrarse en aspectos de más alto nivel. En particular los teléfonos móviles se caracterizan por tener un hardware de capacidades muy limitadas en comparación con el de los ordenadores personales, igualmente variado en cuanto a configuraciones (velocidad de proceso, capacidad de memoria, tamaño de pantalla, capacidades sonoras, etc.), y que se espera que esté funcionado durante largos periodos de tiempo al mismo tiempo que se ha de conservar al máximo la carga de las baterías. Además las tecnologías en este campo evolucionan también a mucha velocidad, aumentando casi día a día tanto las capacidades del hardware como de lo que hay a su alrededor (ancho de banda, cobertura, servicios ofrecidos por los operadores, número de usuarios, etc.), haciendo que los diversos modelos de teléfono se vayan quedando desfasados casi inmediatamente después de salir al mercado. Es por ello necesaria la existencia de la capa del sistema operativo, para poder hacer un uso del hardware flexible y económicamente viable (sería muy costoso e ineficiente desarrollar partiendo de cero el interfaz de uso de cada modelo nuevo).

En el mundo de los teléfonos móviles existen varios sistemas operativos, algunos de ellos creados propiamente para estos dispositivos y otros que son adaptaciones de los que corren en los ordenadores personales. Entre ellos podemos destacar:

  • Symbian: Creado y diseñado especialmente para su uso en teléfonos móviles por la alianza de varios fabricantes como Nokia, Sony Ericsson, Motorola, Fujitsu, Panasonic, Samsung, y otros. Corre únicamente en procesadores ARM y cuenta con muchas de las características propias de los sistemas de escritorio, como multitarea preemptiva, multithreading y protección de memoria. Para desarrollar sobre él cuenta con librerías y marcos de desarrollo para interfaces gráficos propios del fabricante. Para programarlo se usa una versión muy especializada de C++, pero para algunos dispositivos es también posible hacerlo con Python, Visual Basic, Perl o Java. Se contemplan cuatro tipos de dispositivos o perfiles de hardware, denominados Serie60, Serie80, Serie90 y UIQ. La mayoría de Nokia son Serie60, todos los de Sony Ericsson trabajan bajo UIQ, así como también Motorola.
  • Windows Mobile: Desarrollado por Microsoft y utilizado por muchos fabricantes que también usan otros sistemas, como Motorola, Palm, Qtek o Samsung. Derivado de Windows CE, cuenta con dos variantes: Windows Mobile PocketPC, para PDAs y Windows Mobile Smartphone, para teléfonos. Corre en procesadores x86, ARM y MIPS, y cuenta también con características propias de los sistemas de escritorio como la multitarea, la ejecución en varios hilos y la protección de memoria para los procesos. Para desarrollar software se pueden usar los entornos propios de Microsoft (Compact Framework .NET), Java (J2ME) y otros.
  • Linux: La flexibilidad de su licencia Open Source ha permitido que sea adaptado por diversos fabricantes para que funcione en PDAs y teléfonos móviles. Existe una especificación denominada "Linux for embedded devices" desarrollada por un consorcio de empresas como IBM, Intel, Motorola, Siemens, Sharp, Sony, Nec o Samsung cuyo fin es ponerse de acuerdo en la creación de normas para que se puedan hacer desarrollos sobre esta plataforma. Los procesadores sobre los que corre son los habituales: ARM, MIPS y x86. Para desarrollar software se puede usar el lenguaje C de forma nativa que cuenta con numerosas librerías, y también se pueden usar lenguajes interpretados como Perl y Python. En algunos modelos se puede correr la máquina virtual de Java y es posible también desarrollar en ese entorno.
  • PalmOS: Desarrollado originalmente para agendas electrónicas (PDAs) e incorporado posteriormente a algunos teléfonos móviles de gama alta, lo utilizan bajo licencia de PalmSource Inc, algunos fabricantes como LG, Samsung o Kyocera. Las versiones más recientes corren sobre procesadores ARM, pero en el pasado lo hacía también sobre otros dispositivos. Al llevar mucho tiempo en el mercado han surgido varios compiladores y librerías para desarrollar software, siendo los más numerosos los de C/C++ y en menor medida Java y lenguajes de más bajo nivel específicos. La gama de teléfonos más conocida que lo usan son los Treo, fabricados por la propia Palm.
  • Otros: Además de los anteriores existen otros sistemas que actualmente ya no se desarrollan y subsisten en teléfonos antiguos (NokiaOS), son demasiado nuevos y poco extendidos (por ejemplo el reciente iPhone de Apple, que usa una versión de MacOSX) o demasiado cerrados y específicos (por ejemplo RIM, que lo llevan los Blackberry, muy famosos como lector de mail sobre todo en USA pero muy poco extendidos en Europa).
Se puede observar pues que existen varios sistemas operativos de características técnicas muy similares, que corren prácticamente en las mismas arquitecturas de hardware (todas soportan ARM, la más extendida) y con entornos de desarrollo disponibles para crear software. A la hora de crear una aplicación, hay que tener en cuenta cual de todos ellos es más adecuado para el objetivo que se persiga (menor coste de desarrollo, mayor difusión posible, mejor rendimiento, mayor portabilidad, etc.). Según un estudio de la consultora Canalys [1] sobre las ventas de dispositivos móviles el más difundido es Symbian (67%), debido a que su principal valedor, Nokia, es también quien lidera las ventas de terminales. En segundo lugar se sitúa Microsoft, con un 16,9% y RIM (Blackberry) con un 6%.
La siguiente tabla muestra las ventas por fabricante en el tercer cuatrimestre de 2006, que dan cifras similares (aunque no se muestran cifras de los sistemas operativos):


EMEA smart mobile device market

Q3 2006 Q3 2005 Growth
Vendor Shipments Share Shipments Share YTY
Nokia 5,500,830 75.2% 4,848,450 74.0% 13.5%
HTC 298,730 4.1% 78,740 1.2% 279.4%
RIM 253,420 3.5% 230,190 3.5% 10.1%
Sony Ericsson 219,010 3.0% 116,640 1.8% 87.8%
HP 186,390 2.5% 308,280 4.7% -39.5%
Others 861,310 11.8% 970,550 14.8% -11.3%
Fuente: http://blogs.zdnet.com/ITFacts/?p=12172

miércoles, 3 de enero de 2007

Sistemas gráficos en teléfonos móviles

En las entradas que viene a continuación se hace una recopilación de los sistemas operativos, estándares gráficos y entornos de desarrollo que existen actualmente para teléfonos móviles, con el fin de conocer el estado del arte en este tema para desarrollar un software consistente en un personaje gráfico (avatar) que interactúe con el usuario de forma amigable e inteligente.