Desarrollo de aplicaciones para dispositivos inalámbricos (J2ME)  

Posted by Danny in

Durante los últimos años hemos experimentado, más que en ninguna otra época de la humanidad, un sorprendente avance en la tecnología; tanto en la de las grandes organizaciones: comerciales, militares y educativas, como en la que usamos diariamente.

Indudablemente algunos de los más grandes avances se han dado en el área de las comunicaciones: televisión, radio, satélites, teléfonos celulares; y en la electrónica y computación: computadoras con capacidades que antes eran inimaginadas, dispositivos de tamaños minimizados sorprendentemente, sin sacrificar por esto gran poder de procesamiento.

Hasta hace pocos años estas dos ramas de la tecnología se desarrollaban independiente una de la otra, pero con el surgimiento de Internet, revolucionando la forma de comunicarse, los teléfonos celulares o móviles fueron creciendo en cuanto a capacidad, de forma que han llegado a convertirse -algunos modelos- en computadoras de bolsillo, con las limitantes de poder que sus características suponen, obviamente.

Quién habría de imaginarse hace treinta años que un teléfono podría trasladarse de un lugar a otro, no requerir de cable y tener mayor funcionalidad que las supercomputadoras de aquella época o que no sería necesario sino un bolsillo de 8 x 13 cm para cargar una computadora completa, seguramente nadie. Las nuevas tecnologías utilizadas por los fabricantes de estos aparatos tienden a reducir el tamaño sin sacrificar funcionalidad e incluso aumentarla.

Dentro de las nuevas tecnologías que incorporan los pequeños dispositivos portátiles -PDA (Portable Digital Assistant), teléfonos celulares, etc.- se encuentran primordialmente el acceso a Internet, con todas las ventajas de movilidad e información que proporcionan ambas tecnologías (telefonía móvil e Internet), por un lado y la capacidad para el usuario de crear sus propias aplicaciones o descargarlas de Internet e instalarlas en su equipo.

En cuanto al acceso y navegación en Internet, se utiliza un protocolo llamado WAP (Wireless Application Protocol) que es el encargado de la comunicación y la interpretación de los contenidos; también se utiliza, para la creación de las páginas que se verán en estos dispositivos, el lenguaje WML (Wireless Markup Language), el cual es similar al HTML de las computadoras de escritorio, aunque diseñado especialmente para las características de los dispositivos portátiles. En este documento se tratarán brevemente los fundamentos del diseño de páginas WML.

Por el lado de desarrollo de aplicaciones se tienen lenguajes como C++ y Java en versiones especiales para los equipos en cuestión, el presente reporte de investigación se centrará en el lenguaje Java, ya que ocupa una abrumadora mayoría en el mercado y está demostrando ser la mejor opción disponible para todos los programadores interesados en el tema, ademas de las características de seguridad y estabilidad inherentes a cualquier producto Java.

1.1.Un vistazo a las comunicaciones inalámbricas

Este amplísimo campo abarca desde las señales de radio y televisión hasta teléfonos celulares y comunicación por satélite. Conceptualmente, puede ser dividido en dos tipos:

-LAN (Local Area Network): Operan regularmente en distancias cortas -unos cuantos metros. Pueden ser desde el control de la alarma de un auto, un juguete de radio control o una red BlueTooth.

-WAN (Wide Area Network): Sobrepasan por mucho las distancias de los dispositivos LAN, aunque basan su funcionamiento en una red terrestre excelentemente elaborada: Una red de antenas de radio cuidadosamente colocadas, los aparatos pueden funcionar mientras se encuentren en el rango de al menos una de las antenas. Como los teléfonos celulares y los receptores de radio.

1.2.Introducción a la plataforma Java

Java fue creado por Sun Microsystems en un intento por desarrollar un lenguaje que facilitara la programación de aparatos electrodomésticos conectados a la red de una casa inteligente. Después de un tiempo de desarrollo, la directiva del proyecto vio que las capacidades del lenguaje iban mucho mas allá de una red casera y decidieron enfocarlo hacia las aplicaciones basadas en Internet o con cierto nivel de desempeño requerido en el trabajo de red, además de satisfacer a las empresas que demandaban un lenguaje que se pudiese implementar en todas sus máquinas, sin importar el sistema operativo sobre el que trabajaran.

Aunque el lenguaje Java es sintácticamente similar a C++, difiere enormemente en su fundamento:

-Java es un lenguaje puramente orientado a objetos, interpretado, esto significa que los programas realizados con Java no son ejecutables por si solos, existe otro programa que los interpreta cada vez que son requeridos. Esto puede causar disminución en la velocidad de ejecución de las aplicaciones, pero, aunque aun no se alcanza la rapidez de ejecución de los programas hechos en C++ o Visual BASIC, se ha mejorado enormemente con respecto a las primeras versiones del lenguaje, lo que significa que tal vez en un futuro cercano la rapidez deje de ser un impedimento para usar Java.

-C++ utiliza, como característica principal, apuntadores a memoria y delega a los programadores, simples seres humanos, la tarea de localizarla, controlarla y liberarla. Mientras tanto, Java utiliza objetos de tipo seguro, no permite la asignación de memoria dinámica y gracias a su recolector de basura (garbage collector) la memoria sin usar se recicla automáticamente.

La base de la plataforma Java es una máquina virtual, la cual puede ser implementada en los más populares sistemas operativos y en gran variedad de hardware. Por lo que se puede tener aplicaciones binarias Java operando consistentemente a través de diferentes implementaciones.

Las APIs (Application Programming Interface) Java son el conjunto de clases y objetos que permiten, mediante la utilización del lenguaje Java, la interacción entre el programador y la computadora y entre esta y el usuario final.

Juntos, el lenguaje de programación Java, la máquina virtual y las apis, forman la plataforma Java (Fig. 1.1) , la cual, en su versión 2, se puede encontrar en tres ediciones:

-Java 2 Standard Edition (J2SE). Diseñada para computadoras de escritorio, puede trabajar en sistemas operativos como: Windows, Linux, MacOS, Solaris, OS x.

-Java 2 Enterprise Edition (J2EE). Plataforma para aplicaciones multiusuario o empresariales. Se basa en J2SE y agrega apis para trabajo en el servidor.

-Java 2 Micro Edition (J2ME). Conjunto de tecnologías y especificaciones desarrolladas para dispositivos pequeños como los teléfonos celulares y PDA (palm, agendas electrónicas). Utiliza derivados de componentes J2SE, como son una máquina virtual más pequeña y un conjunto de apis menos potentes.

Figura 1.1. La plataforma Java

1.2.1.Introducción a J2ME

A diferencia de J2SE, la micro edición de Java no es sólo una pieza de software ni una simple especificación, J2ME es una plataforma, una colección de tecnologías y especificaciones diseñadas para diferentes partes del mercado de los dispositivos pequeños.

J2ME se divide en configuraciones, perfiles y paquetes opcionales. Las configuraciones son especificaciones que detallan una máquina virtual y un conjunto base de apis que pueden ser usadas en cierta clase de dispositivos. La maquina virtual puede ser completa, como la describe la especificación o algún derivado de ella.

Un perfil trabaja sobre una configuración pero agrega apis específicas para hacer un entorno completo de construcción de aplicaciones. Usualmente incluyen apis para el ciclo de vida de las aplicaciones, interfaz de usuario y almacenamiento persistente.

Un paquete opcional provee una funcionalidad que puede no estar relacionada con alguna configuración o perfil, por ejemplo la API Bluetooh (JSR182).

Actualmente J2ME tiene disponibles dos configuraciones:

-Connected Limited Device Configuration (CLDC). Para dispositivos pequeños con conexiones de red intermitentes, como teléfonos celulares y PDA.

-Connected Device Configuration (CDC). Diseñada para aparatos más grandes (en términos de memoria y poder de procesamiento) con conexiones de red robustas.

MIDP (Mobile Information Device Profile) es el perfil con mayor desarrollo en la plataforma Java, aunque se está investigando el PDA Profile. MIDP incluye apis de interfaz de usuario, de ciclo de vida de aplicaciones y algunas de almacenamiento persistente.

Los dispositivos implementan una "pila" de software completa, la cual consiste usualmente en una configuración, un perfil y apis opcionales.

Figura 1.2. Pila de software para JSR185

JSR185, Java Technnology for Wireless Industyry (JWTI), es la especificación vigente para el desarrollo de aplicaciones inalámbricas en Java, con esta especificación se intenta dejar de lado algunos problemas de compatibilidad entre dispositivos que las anteriores especificaciones dejaron pendientes, así que JSR185 exige que todos los fabricantes que deseen adoptar esta especificación deben incluir en sus dispositivos CLDC 1.0 o 1.1, MIDP 2.0 y WMA (Wireless Messaging API), dejando opcional MMAPI (MultiMedia API), de esta forma el desarrollador puede saber que esperar de una clase de dispositivos y con esto crear aplicaciones altamente portables. En la figura 1.2 se presenta gráficamente esta pila de software.

1.3.Tecnología WAP y WML

1.3.1.WAP (Wireless Application Protocol)

Este protocolo pretende ofrecer a los usuarios de equipos con recursos de memoria, resolución de pantalla y capacidad de procesamiento limitados las mismas funcionalidades que se ofrecen de Internet a través de computadoras personales, pero con las ventajas y limitantes propias de estos dispositivos.

1.3.2.WML (Wireless Markup Language)

WML es un lenguaje de aumento o ganancia (markup) de texto basado en el lenguaje de aumento extensible (XML, Extensible Markup Language) y fue desarrollado para especificar contenidos e interfaces de usuario para terminales de banda estrecha tales como teléfonos móviles e intérpretes de páginas. WML est` diseñado para trabajar con dispositivos inalámbricos pequeños que poseen cuatro características:

-Pantalla pequeña de baja resolución. Al nacimiento de este lenguaje, la resolución de los teléfonos celulares se limitaba a unas cuantas lineas de texto y de 8 a 12 columnas de caracteres, debido al rápido aumento en ese ramo, las nuevas versiones del lenguaje se pueden implementar en equipos con resoluciones de hasta 256 x 256 pixeles..

-Los aparatos de entrada tienen una capacidad limitada o están diseñados para un propósito determinado. Un teléfono móvil tiene comúnmente teclas numéricas y un reducido número de teclas adicionales con funciones especificas. Algunos dispositivos más sofisticados pueden poseer teclas programables de software, pero no un ratón ni otros dispositivos de selección.

-Los recursos computacionales están limitados por una CPU de baja potencia, una memoria reducida y una potencia restringida.

-La red ofrece un reducido ancho de banda y una alta latencia. No son infrecuentes los aparatos con conexiones de red de 300 bit/s a 10 Kb/s y latencia "round-trip" de entre 5 y 10 segundos.

Las características del lenguaje WML pueden agruparse en cuatro áreas principales:

-Ofrece un soporte de texto e imagen y tiene una amplia variedad de formatos y comandos.

-Las cartas (fragmentos de página o pantallas) WML se agrupan en barajas. Una baraja WML es similar a una página HTML identificada por una URL (Universal Resource Location, localización universal de recursos) y es la unidad básica de transmisión de contenidos.

-Ofrece soporte para gestión de navegación entre cartas y barajas, e incluye comandos para su manejo. Estos pueden usarse para navegar o ejecutar scripts, WML también provee de conexiones de anclaje similares a las usadas en el HTML versión 4.

-Se pueden establecer parámetros para todas las barajas de WML usando un modelo establecido. Se pueden usar variables en lugar de cadenas y sustituirse en el tiempo de ejecución. Esta forma de establecer parámetros permite que los recursos de la red sean usados de forma eficiente.

Toda la información de WML se transmite en formato codificado por la red inalámbrica.

Entradas relacionadas:

0 comentarios

Publicar un comentario