Este blog está orientado a toda la gente que quiera ver y participar en temas de ing. de software, TI, redes y otras áreas de la computación.

lunes, enero 30, 2006

Introducción a la Arquitectura de J2ME

J2ME es muy interesante para aprender porque tiene características muy especiales. Como ya sabemos, J2ME esta dirigido al desarrollo de sistemas para dispositivos móviles y debe seguir manteniendo las cualidades principales de la tecnología Java.
Estas son:
• Soporte multiplataformas mediante la idea de “escríbelo una vez y córrelo en donde sea”.
• El poder de un lenguaje de programación orientado a objetos (Java).
• Reutilización y portabilidad de código.
• Un ambiente seguro de trabajo en la red.

Ahora bien, cuando hablamos de dispositivos móviles tenemos que tomar en cuenta sus limitantes, como por ejemplo:
• Poca capacidad de memoria (128Kb – 2Mb).
• El poder computacional de sus procesadores (16 – 32 bit).
• La importancia del uso de energía ya que los aparatos utilizan baterías.

Como podemos ver, J2ME tiene el reto de proveer todas las cualidades de la tecnología Java e implementarla en aparatos con limitantes considerables.
¿Cómo lo hace? J2ME se divide en 3 bloques principales.

1. Java Virtual Machine (JVM)
2. Configuración (Configuration)
3. Perfiles (Profiles)

El dibujo anterior muestra a grandes rasgos los 3 bloques de la arquitectura de J2ME (1).
El JVM se encuentra encima del sistema operativo y se encarga de interpretar el código de Java para que se pueda ejecutar por el sistema operativo.
Configuración se refiere a una serie de especificaciones mínimas para un grupo de dispositivos que tiene características de memoria y procesamiento similar. La configuración esta compuesta del JVM, el lenguaje de programación Java y un conjunto de bibliotecas de clase especiales para el dispositivo en cuestión.
Perfil. El perfil extiende la configuración agregando bibliotecas de clases más específicas para un dispositivo en particular.

Los 3 bloques conforman toda la ciencia detrás de la arquitectura de J2ME y el poder comprenderla es un gran avance para crear sistemas para dispositivos móviles. En las siguientes publicaciones voy a hablar más a fondo de cada bloque.

Por lo pronto sabemos que J2ME provee todas las cualidades de la tecnología Java a un ambiente en el que las características de hardware de la plataforma final son muy limitadas. ¿Interesante verdad?

domingo, enero 22, 2006

¿J2ME o .NET Compact Framework?

Si buscas tecnologías de desarrollo de aplicaciones para dispositivos móviles te vas a encontrar principalmente con dos opciones: J2ME y .NET Compact Framework.
Vamos a ver de donde proviene cada opción y algunas de sus principales características.

J2ME proviene de la línea Java de Sun. Para entender mejor a J2ME hay que ver como encaja en la plataforma de soluciones de Java. Esta plataforma comprende J2SE, J2EE y J2ME.
Java 2, Standard Edition (J2SE) esta diseñado para hacer aplicaciones en computadoras personales. Corre sobre diferentes sistemas operativos como OS X, Linux, Solaris, o Microsoft Windows.
Java 2, Enterprise Edition (J2EE) esta diseñado para hacer aplicaciones multiusuarios y de tamaño empresariales. Abarca el J2SE y le agrega APIs para trabajar con operaciones del lado del servidor.
Java 2. Micro Edition (J2ME) es un conjunto de tecnologías y especificaciones diseñadas para desarrollar aplicaciones en dispositivos móviles. J2ME utiliza parte de las características de J2SE pero adaptadas a aparatos como celulares, radios, etc.
Con esta información nos damos cuenta que J2ME es Java y que debes de tener las bases de como funciona su armazón. Esto implica saber el lenguaje de programación Java, entender que es Java Virtual Machine y como utilizar las diferentes APIs con los que cuenta la plataforma Java.

Por otro lado, .NET Compact Framework.
Proviene directamente de .NET Framework de Microsoft incluyendo las librerías de clase base y otras adicionales utilizadas específicamente para interactuar con dispositivos móviles. El CLR (Common Language Runtime) del Compact Framework es diferente al del .NET Framework. Esta hecho para manipular eficientemente los recursos de los dispositivos móviles ya que estos tienen características muy particulares que requieren de un cuidado especial. Esto puede ser la memoria limitada de un teléfono celular, la interface del usuarios de una PDA o el consumo de batería de un radio.
De entrada, para aprender Compact Framework concluimos lo siguiente: Es necesario conocer como funciona el armazón .NET (.NET Framework), saber que es el CLR y programar en algún lenguaje soportado por .NET como C# o VB.NET, entre otras cosas.

Ahora bien, ya tenemos suficiente información para escoger una opción y empezar a desarrollar nuestra aplicación. Eso creemos, pero hace falta un último análisis. Debemos ver la compatibilidad de cada opción para los diferentes dispositivos móviles.
A grandes rasgos, las aplicaciones hechas en J2ME corren en casi todos los dispositivos de teléfonos celulares ya que J2ME esta hecho muy pegado a las especificaciones del hardware de los dispositivos y Compact Network solo corre en PocketPC u otros dispositivos que tengan Windows CE o se le pueda instalar el Compact Framework.

De entrada podemos asumir que si quieres desarrollar una aplicación para un teléfono celular Nokia es muy probable que utilices J2ME y si quieres hacer una aplicación para una PocketPC de Hewlett-Packard debes utilizar Compact Framework.

Para empezar, me he decidido por aprender J2ME y realizar en un teléfono celular mis primeras aplicaciones. En los siguientes posts voy a hablar de J2ME más a fondo y espero pronto hacer mi primer programa.

jueves, enero 19, 2006

Dispositivos Móviles

Muchos de nosotros nos encontramos enganchados a los teléfonos celulares. Vemos personas caminando por ahí con 2, 3 o hasta 4 teléfonos colgados de su cinturón. Es muy común ver a alguien jugando con su celular en la parada del camión, mientras espera a que empiece su clase en la universidad o al hacer la fila del banco. El teléfono celular es sin lugar a duda el dispositivo móvil mas común hoy en día pero no es el único.

Existen varios dispositivos móviles como los Beepers, PDAs (Personal Digital Assistant, sirven como organizadores electrónicos), PocketPCs (son más como una computadora de bolsillo), Email portátil blackberry, teléfonos celulares, Reproductores de MP3 y las Laptop por mencionar algunos.

De entre todos estos, ¿porqué es el teléfono celular el más común y fácil de entender? Para empezar es obvio que el precio de un teléfono celular no se puede comparar con el de una Laptop o PDA. Ahora puedes comprar celulares desechables o de fichas prepagadas a un precio muy bajo. Pero es la simplicidad de uso y la adaptación de complejos conceptos de comunicación a un nivel en el que un usuario promedio pueda entender lo que en realidad hace que el teléfono celular tenga tanto éxito.

Recientemente compre un celular y platicando con Gerardo mi primo estábamos viendo todas las cosas que traía y vimos que soporta conectividad mediante Bluetooth. Casualmente mi sobrino Germán de 11 años también tiene un celular que soporta Bluetooth. Para experimentar le preguntamos a Germán: ¿Oye, tu cel tiene algún protocolo de comunicación que le permita transmitir voz y datos simultáneamente a una frecuencia de radio determinada y que lo haga de una forma segura e inalámbrica? El nos ve perplejo por unos segundos y luego contento responde: ¡No, pero puedo pasar tonos y canciones a la computadora de mi papá y hasta puedo utilizar mi teléfono como control remoto aunque solo funciona con algunas Teles (TVs)! Y se va corriendo muy orgulloso de su celular. Sin saber, Germán nos dijo varios ejemplos de cómo utilizar Bluetooth y demostró que entiende a grandes rasgos varios conceptos de comunicaciones.

¿No es genial, que cosas como protocolos de comunicación, compatibilidad entre dispositivos, soporte de transferencia de diferentes tipos de datos y otros conceptos que solían usar exclusivamente profesionales de TI, Sistemas o Redes estén hoy en día comprendidos por niños de 11 años aún cuando éstos no lo sepan? Esto se da gracias a la diversificación de aparatos como el celular que a parte de barato es muy fácil de entender y manipular. El teléfono celular no es el único aparato que cuenta con tecnología Bluetooth pero sí es el más fácil de entender.

Un teléfono celular puede realizar muchas tareas diferentes pero es la de correr aplicaciones como alarmas, agendas, buscadores de Internet y claro juegos, la que más me llama la atención. Por esto, he decidido aprender a desarrollar aplicaciones para teléfonos celulares y en los próximos días voy a platicarles cosas útiles de J2ME de Java y Compact Framework de .NET.

La meta es aprender los conceptos básicos, herramientas para la programación móvil y desarrollar aplicaciones para celulares u otros dispositivos parecidos. Acompáñenme, será divertido y podemos aprender cosas interesantes. Sus comentarios y participación son bienvenidos.
Saludos!