ALTERNATIVAS PARA EL DESAROLLO DE APLICACIONES EN J2ME J2ME es una plataforma que permite desarrollar aplicaciones para dispositivos con recursos bastantes limitados tales como Palm, teléfonos celulares, buscapersonas, PDA’s, etc. Las aplicaciones de última generación comprenden tecnologías tales como JINI, Web Services, etc., por lo tanto se abordarán estos temas para el desarrollo de este tipo de aplicaciones. Para el desarrollo de aplicaciones en dispositivos móviles han existido muchas plataformas como KJava, Personal Java, J2ME-CLDC, J2ME-CDC, entre otras. KJava Es la extensión del Perfil MIDP para dispositivos Palm, esta API provee un número amplio de GUI de usuario tales como CheckBox, RadioButton, TextBox, List, etc. Adicionalmente proveen la clase Spotlet la cual es usada para manejo de eventos e incluye algunos llamados al sistema operativo Palm OS y atrapar eventos realizados con el lápiz óptico [1]. También tiene un API que permite el acceso a la base de datos de la Palm, pero estos accesos se realizan de una manera muy primitiva, enviando y obteniendo arreglos de bytes, indexados por un id de registro. Con esta API se puede acceder a la base de datos de clases de la KVM y poder insertar, modificar, remover y modificar el bytecode de algunas clases que se encuentren instanciadas; esta es una forma de poder escribir un classloader sobre CLDC pero no es la forma más elegante. Sobre este API se desarrollo una implementación de AWT para la KVM, este ofrece un API muy similar al que provee J2SE para desarrollar GUI de usuario. Permite el manejo de layouts, listeners para los componentes, botones, paneles, etc. Este API dejó de ser soportado por Sun, y fue absorbido por la especificación MIDP para Palm OS. MIDP-Palm OS Es un API que hace parte de la plataforma J2ME desarrollado para dispositivos Palm OS totalmente compatible con la especificación MIDP 1.0, permite a estos dispositivos ejecutar aplicaciones Java al igual que un teléfono celular. Las aplicaciones desarrolladas para los dispositivos Palm deben ser empaquetadas en archivos de tipo PRC a diferencia de las aplicaciones básicas J2ME las cuales vienen empaquetadas en la pareja de archivos JAR/JAD, por lo tanto esta implementación de MIDP viene con una herramienta que permite convertir estos archivos jad y jar en archivos ejecutables prc. Este API es totalmente compatible con las especificaciones CLDC 1.0 y MIDP 1.0 [2]. PersonalJava Es un entorno optimizado enfocado en dispositivos electrónicos con capacidades gráficas y de conectividad tales como PDAs, Webphones, etc. PersonalJava consiste en una Java Virtual Machina la cual es una versión reducida de la JVM 1.1, y un API el cual proviene de la versión 1.1. de J2SE. PersonalJava introduce un gran número de optimizaciones con respecto a J2SE, las cuales son el uso reducido de memoria, adaptación de GUI de usuario a diferentes pantallas, se divide el API en paquetes principales tales como awt, net, etc., y paquetes opcionales tales como RMI y SQL los cuales deben ser soportados por el proveedor del dispositivo. A partir de 1999 PersonalJava fue absorbido por la especificación completa de J2ME [3]. Jini Jini es una tecnología que tiene la finalidad de soporta la distribución de servicios distribuidos a través de distintos ambientes. Hoy en día existen muchos problemas como lo son las conexiones intermitentes, la latencia de las redes, anchos de banda variables, inseguridad en las redes, topologías de redes variables y costos de comunicación elevados. Jini aborda estos problemas definiendo mecanismos que soportan la federación de máquinas o programas en un sistema distribuido. Los dispositivos que participan pueden entrar y salir en cualquier momento según sus propios intereses. Además, le pueden ofrecer servicios y recursos a otros dispositivos dentro de la federación. El servicio puede ser cualquier cosa que pueda ser ofrecida por un dispositivo de red computacional, incluyendo acceso a la red, procesamiento, almacenamiento, recursos físicos e información [SmL02]. Los dispositivos tienen la capacidad de descubrir y utilizar estos servicios provistos por miembros de la federación. Esto se puede realizar por medio de los siguientes mecanismos [SmL02]: - - - - - Lookup: Este es un servicio de Jini que mapea interfaces indicando la funcionalidad ofrecida por un servicio que es implementado por una serie de objetos. Discovery: El proceso para encontrar el servicio de Lookup adecuado se llama Discovery. Join: Una vez se encontró el servicio de Lookup adecuado, un servicio puede unirse a ese servicio de Lookup. Existe un protocolo definido que permite esto. Leasing: se conoce como el servicio de prestar un recurso por un periodo de tiempo indicado. La duración de este préstamo puede ser establecida por quien provee el servicio o puede ser negociada. Transactions: Una transacción es el mecanismo mediante el cual se garantiza que la prestación de un servicio es consistente y es completado en su totalidad dentro de la federación. La transacción permite agrupar una serie de operaciones de tal forma que todas sena completadas o no se haga ninguna en caso de fallo. Events: un objeto que reside en un dispositivo puede notificar que está interesado en la ocurrencia de algún evento en otro objeto que resida en un dispositivo distinto. Si el evento ocurre, el objeto es notificado. JMatos JMatos es la implementación de Jini de PsiNaptic que le permite a los desarrolladores de software y a los fabricantes de equipos (OEM, Original Equipment Manufacterers) implementar aplicaciones distribuidas en dispositivos con limitaciones de recursos. Esta tecnología permite no sólo que esta clase de dispositivos participen en federaciones de Jini, sino que además puedan ofrecer sus servicios en la red que se encuentran [PsN01]. Para lograr esto, JMatos cuenta con la siguiente arquitectura: Figura 4.1 arquitectura de JMatos [PsN01] JMatos es 100% compatible con Jini, lo que permite poder aprovechar todas las ventajas tecnológicas que esta última ofrece. Es diferente a la versión surrogate de Jini ya que no asume nada acerca del acceso a la red. Dispositivos móviles pueden crear redes de área personal desconectadas y ofrecer sus servicios ahí, sin requerir un acceso a una red más amplia. Además no está basado en RMI aunque se puede soportar clientes que efectúen operación vía RMI. Aún así, JMatos es totalmente transparente con otros servicios que utilizan Jini [PsN01]. JMatos se basa en dos principios básicos. El primero especifica que un servicio de Lookup (LUS, Lookup Service) en un dispositivo está intrínsecamente relacionado con la identidad del dispositvo. Por ejemplo un monitor de corazón EGK ofrece servicios relacionados con su propósito (proveer información cardiaca del paciente), pero no ofrece otra clase de servicios como la tasa de cambio actual. El segundo principio dice que el LUS reside en un dispositivo con menos capacidad que el dispositivo que usa sus servicios [HaSt01]. 1. http://www.onjava.com/pub/a/onjava/2001/03/15/java_palm.html 2. http://java.sun.com/products/midp4palm/ 3. http://www.microjava.com/articles/perspective/personaljava_j2me?conte nt_id=1440