Universidad de Jaén E.U.P. Linares Dpto. Telecomunicaciones Área de Ingeniería Telemática Sebastián García Galán sgalan@ujaen.es
Creada por Sun Microsystems Presentada oficialmente en 1995 El empujón definitivo Acuerdo con Netscape para la integración de la tecnología en sus navegadores Hasta entonces, las páginas Web no eran interactivas Los applets Java permitían añadir interactividad
J2SE: (Java 2 Standard Edition) Inspirado en C++ incluyendo componentes de alto nivel como soporte nativo de strings y recolector de basura. Código independiente de la plataforma, precompilado a bytecodes intermedio y ejecutado en el cliente por una JVM (Java Virtual Machine). Modelo de seguridad tipo sandbox proporcionado por la JVM. Abstracción del sistema operativo subyacente mediante un juego completo de APIs de programación.
J2EE: (Java 2 Enterprise Edition) Orientada al entorno empresarial. Pensado no para ejecutarse en un equipo, sino para ejecutarse sobre una red de ordenadores de forma distribuida y remota mediante EJBs (Enterprise Java Beans). Edición orientada al desarrollo de servicios Web, servicios de nombres, persistencia de objetos, XML, autenticación, APIs para la gestión de transacciones, etc. En definitiva, se amplia la J2SE para dar soporte a los requisitos de las aplicaciones de empresa.
J2ME: (Java 2 Micro Edition) Enfocada a la aplicación de la tecnología Java en dispositivos con capacidades de computación y gráficas muy reducidas, tales como los teléfonos móviles, PDAs o electrodomésticos inteligentes. Dispone de componentes básicos que la diferencian de las otras versiones, como el uso de una KVM (Kilo Virtual Machine, necesita pocos Kbytes de memoria para funcionar), o como el uso de un pequeño y rápido recolector de basura, etc.
J2ME J2SE J2EE javax.microedition.*
ENTORNO DE EJECUCIÓN: Máquinas virtuales Java con diferentes requisitos, cada una para diferentes tipos de pequeños dispositivos. Configuraciones: conjunto de clases básicas que forman el corazón de las implementaciones para dispositivos con características específicas. CLDC: (Connected Limited Device Configuration) enfocada a dispositivos con restricciones de procesamiento y memoria CDC: (Connected Device Configuration) enfocada a dispositivos con más recursos.
Perfiles: bibliotecas Java de clases específicas orientadas a implementar funcionalidades de más alto nivel para familias específicas de dispositivos.
MÁQUINAS VIRTUALES JAVA Una MVJ es un programa encargado de interpretar código intermedio (bytecode) de los programas Java precompilados a código máquina ejecutable por la plataforma, efectuar las llamadas pertinentes al sistema operativo subyacente y observar las reglas de seguridad y corrección definidas para el lenguaje Java. KVM para CLDC. CVM para CDC.
KVM (Kilobyte Virtual Machine) Es un implementación muy reducida y especialmente orientada a dispositivos con bajas capacidades computacionales y de memoria. Escrita en lenguaje C con las siguientes características: Entre 40 y 80 Kbytes. Alta portabilidad. Modulable. Lo más completa y rápida posible sin sacrificar características para las que fue diseñada.
KVM Limitaciones respecto a la clásica Java Virtual Machine (JVM) No hay soporte para tipos en coma flotante. No existe soporte para JNI (Java Native Interface). No existen cargadores de clases definidos por el usuario. No se permiten los grupos de hilos o hilos daemon. No existe finalización de instancias de clases. Object.finalize(); No hay referencias débiles. Limitada capacidad para el manejo de excepciones. Reflexión....
KVM Limitaciones respecto a la clásica Java Virtual Machine (JVM) Verificación de clases.
CVM (Compact Virtual Machine) Ha sido tomada como la máquina virtual de Java de referencia para la configuración CDC. Soporta las mismas características que la MV de J2SE. Orientada a dispositivos con procesadores de 32 bits de gama alta y en torno a 2 MB o más de memoria RAM.
CONFIGURACIONES Una configuración es el conjunto mínimo de APIs Java que permiten desarrollar aplicaciones para un conjunto de dispositivos. Estas APIs definen las características básicas comunes a todos los dispositivos: Características soportadas del lenguaje de programación Java. Características soportadas por la la Máquina Virtual Java. Bibliotecas básicas de Java y APIs soportadas.
CONFIGURACIÓN CLDC Orientada a dispositivos dotados de conexión y con limitaciones en cuanto a capacidad, cómputo y memoria: Teléfonos móviles. Buscapersonas (pagers). PDAs. Organizadores personales....
CONFIGURACIÓN CLDC Estos dispositivos deben cumplir los siguientes requisitos: Disponer entre 160 y 512 KB de memoria total disponible. 128 KB como mínimo de memoria no volátil para la MVJ y las bibliotecas CLDC, y 32 KB de memoria volátil para la MV en tiempo de ejecución. Procesador de 16 ó 32 bits con al menos 25MHz de velocidad. Bajo consumo, debido a su funcionamiento con baterías. Conexión a alguna red, normalmente sin cable, con conexión intermitente y ancho de banda limitado (9600bps).
Nombre CONFIGURACIÓN del paquete CLDC CLDC Descripción java. io java.lang java.util javax.microedition.io Clases y paquetes estándar de la E/S Subconjunto de J2SE. Clases e interfaces de la MV. Subconjunto de J2SE. Clases, interfaces y utilidades estándar. Subconjunto de J2SE. Clases e interfaces de conexión genérica CLDC
CONFIGURACIÓN CDC Orientada a dispositivos con cierta capacidad computacional y de memoria: Decodificadores de televisión digital. Televisores con Internet. Algunos electrodomésticos. Sistemas de navegación en automóviles.
CONFIGURACIÓN CDC Estos dispositivos deben cumplir los siguientes requisitos: Procesador de 32 bits. Disponer de 2MB o más de memoria total. Poseer la funcionalidad completa de la Máquina Virtual Java2. Conectividad a algún tipo de red.
CONFIGURACIÓN CLDC Nombre del paquete CDC java. io java.lang java.lang.ref java.lang.reflect java.math java.net java.security java.security.cert java.text java.util java.util.jar java.util.zip javax.microedition.io Descripción Clases y paquetes estándar de la E/S. Clases básicas del lenguaje. Clases de referencia. Clases e interfaces de reflection. Paquete de matemáticas. Clases e interfaces de red. Clases e interfaces de seguridad. Clases de certificados de seguridad. Paquete de texto. Clases de utilidad estándar. Clases y utilidades de archivos JAR. Clases y utilidades para archivos ZIP y comprimidos Clases e interfaces de conexión genérica CLDC
PERFILES Definen las APIs que controlan el ciclo de vida de la aplicación, interfaz de usuario, etc. Un perfil es un conjunto de APIs orientado a un ámbito de aplicación determinado y que define las características de un dispositivo. Los perfiles identifican un grupo de dispositivos por la funcionalidad que proporcionan. Para CDC: Foundation Profile Personal Profile RMI Profile Para CLDC: PDA Profile (Mobile Information Device Profile (MIDP)
Entorno de ejecución J2ME
Mobile Information Device Profile (MIDP) Dispositivos con reducida capacidad computacional. Conectividad limitada (9600 bps). Capacidad gráfica muy reducida (mínimo display de 96x54 pixel monocromo). Entrada de datos alfanumérica reducida. 128 Kb de memoria no volátil para componentes MIDP. 8 Kb de memoria no volátil para datos persistentes de aplicaciones. 32 Kb de memoria volátil en tiempo de ejecución para para la pila Java. APIs relacionadas con: La aplicación (semántica y control de la aplicación MIDP). Interfaz de Usuario. Almacenamiento persistente. Trabajo en red. Temporizadores.
Mobile Information Device Profile (MIDP) CONFIGURACIÓN CLDC Nombre del paquete MIDP javax.microedition.lcdui javax.microedition.rms javax.microedition.midlet javax.microedition.io java.io java.lang java.util Descripción Clases e interfaces para GUIs Record Management Storage. Clases de definición de la aplicación. Clases e interfaces de conexión genérica. Clases e interfaces de E/S básica. Clases e interfaces de la máquina virtual. Clases e interfaces de utilidades estándar.
Mobile Information Device Profile (MIDP) Las aplicaciones realizadas utilizando MIDP reciben el nombre de MIDlets. Un MIDlet es una aplicación Java realizada con el perfil MIDP sobre la configuración CLDC. udistribución JAR (Java ARchive) Archivo.ZIP que contiene todas las clases compiladas y los recursos del MIDlet. JAD (Java Archive Descriptor) Información sobre el MIDlet: nombre, descripción, autor, URL de la descarga, requisitos, iconos, etc.
Revisiones más destacadas CLDC 1.0 (2000) : No soporta operaciones en coma flotante 1.1 (2003) : Sí soporta operaciones en coma flotante MIDP 1.0 (2000) : Versión inicial. Parco soporte multimedia Los fabricantes añadieron sus propias clases Java para facilitar la creación de juegos INCOMPATIBILIDADES 2.0 (2002) : Gran soporte multimedia Mejora sustancial de compatibilidad entre terminales Soporte de conexiones seguras (HTTPS) Registro push
Combinaciones más habituales CLDC 1.0 + MIDP 1.0 CLDC 1.0 + MIDP 2.0 CLDC 1.1 + MIDP 2.0 Otras APIs Los fabricantes suelen añadir otras funcionalidades Estándares Java APIs for Bluetooth (JSR-82) Mobile 3D Graphics (JSR-184) No estándares Nokia UI Siemens Color Game API
JSR (Java Specification Requests) Grupos de trabajo que definen estándares en la comunidad Java J2ME Technologies CLDC Technology Connected Limited Device Configuration (CLDC); JSR 30, JSR 139- Mobile Information Device Profile (MIDP); JSR 37, JSR 118- Information Module Profile, (IMP); JSR 195- Java Technology for the Wireless Industry, (JTWI); JSR 185- Wireless Messaging API (WMA); JSR 120, JSR 205- Mobile Media API (MMAPI); JSR 135- Location API for J2ME; JSR 179- SIP API for J2ME; JSR 180- Security and Trust Services API for J2ME, (SATSA); JSR-177- Mobile 3D Graphics; JSR-184- J2ME Web Services APIs, (WSA); JSR 172- Bluetooth API (JSR-82, Motorola, Java Partner Site)- J2ME Content Handler API, (CHAPI); JSR 211 http://java.sun.com/j2me/index.jsp
Ejemplo: SonyEricsson K700i Presentado en marzo 2004 99 x 46.5 x 19.5 mm, 93 gr. 176x220 píxeles, 65536 colores CLDC 1.1 + MIDP 2.0 Memoria Java Heap: 512KB~1.5MB Memoria almacenamiento: 41MB internos Soporte multimedia Reproducción MP3, AAC, MIDI, AMR, WAV Captura de vídeo/imágenes fijas Radio FM Otras Java APIs JSR 120: Wireless Messaging API (WMA) JSR 135: Mobile Media API (MMAPI) JSR 184: Mobile 3D Graphics JSR 185: JTWI
Ejemplo: SonyEricsson K750i Presentado en marzo 2005 100 x 46 x 20.5 mm, 99 gr. 176x220 píxeles, 262144 colores CLDC 1.1 + MIDP 2.0 Memoria Memoria almacenamiento: 32MB internos + MemoryStickDuo Pro ( hasta 4GB!) Soporte multimedia Cámara de 2Mpíxeles con autoenfoque y modo macro Radio FM con RDS Otras Java APIs JSR 75: PIM API (accesoal sist. de ficheros) JSR 82: Java APIs for Bluetooth JSR 120: Wireless Messaging API (WMA) JSR 135: Mobile Media API (MMAPI) JSR 184: Mobile 3D Graphics JSR 185: JTWI