Java móvil y embebido Jorge Salazar Tovar Venezuela Java User Group jfexart@gmail.com http://jfexart.com JINFOUNEG 2011 4ta Jornadas de Ingeniería en Informática Puerto Ordaz, 11 y 12 de Noviembre 2011
System.out.print( Hola mundo! ); TSU en Informática IBM ACE/ACSE Oracle OCPJP OCAJ OCAM Desarrollador y consultor Java Líder fundador de Venezuela Java User Group Ex líder de Venezuela OpenSolaris User Group Blogger aficionado Conferenciante Entusiasta de tecnologías libres y abiertas
Agenda Un poco sobre Java Java móvil Oracle Java Wireless Client 3.0 (OJWC) Lightweight UI Toolkit (LWUIT) Java ME + Web Evolución de la plataforma Java ME Java embebido Java: La mejor plataforma para embebido Dos configuraciones de Java embebido Java SE y Java ME
Acerca de Java Lenguaje de programación orientado a objeto Creado por Sun Microsystems Lanzado en el año 1995 Su padre creador: James Gosling Adquirido por Oracle Corporation en el año 2010
Acerca de Java Plataformas: Java Card, JavaME, JavaSE: JavaEE y JavaFX Más de 5.000 millones de dispositivos usan la tecnología Java Software libre: OpenJDK Última versión: JavaSE 7 (07.07.2011)
Características de Java Multiplataforma (Windows, Linux, Mac, Solaris) Java Virtual Machine (JVM) Compila código fuente a Java bytecode Portabilidad y seguridad Múltiples usos: Aplicaciones de escritorio, sistemas de servidor, navegadores web, dispositivos móviles, sistemas embebidos
Java en todos lados
El espectro de Java Key APIs Plataforma Lenguaje Servidores Desktop Java EE JavaFX Java SE Embebido TV Móvil Java TV MSA Java ME Lenguaje Java Card Java Card
Plataforma Java ME Objetivos de diseño Modernización de la plataforma ME.next: especificaciones actualizadas de la plataforma Bajo footprint, runtimes de alto rendimiento Integración de tecnologías Web Potenciar el Servicio de Valor Agregado en la pila de Java móvil Permitir al desarrollador servicios como el pago y la publicidad Acceso a los servicios del operador a través de las Network APIs Conjunto de aplicaciones base pre-integradas y optimizadas Transformar la experiencia al consumidor Fácil acceso desde dispositivos a principales tiendas de aplicaciones Soluciones de gestión de contenidos en dispositivos
Java móvil Productos y tecnologías 2011 Modernización del Mobile Java Runtine Oracle Java Wireless Client 3.0 Implementación de Java superior APIs de Oracle para desarrolladores Java + Web Herramientas ME SDK 3.1 LWUIT 1.5 Java ME 6 (ME.next)
OJWC 3.0 Características modernas Características Web UI (JSR 290) Optimizaciones de LWUIT Telefonía, Subsistema Multimedia IP Puente Java/JavaScript APIs de Oracle para desarrolladores Personalización basada en SIM VM multi-tarea, alto rendimiento Componentes opcionales Runtime Web Integrado
OJWC 3.0 Manejando nuevos casos de uso
OJWC 3.0 Código de ejemplo de JSR 290 Embebiendo vista HTML dentro de Java FluidImage fi = FluidManager.createImage( file:///index.html, ); FluidPlayer fp = FluidManager.createPlayer(fI, javax.microedition.lcdui.canvas); FluidComponent fc = (FluidComponent)fluidPlayer.getTargetComponent(); fi.setviewportwidth(width); fi.setviewportheight(height); fluidplayer.play() Display.getDisplay(this)setCurrent((Canvas)fC);
Interfaz de usuario Lightweight UI Toolkit (LWUIT) Crea interfaces de usuario enriquecidas fácilmente para aplicaciones Java Ligero y flexible Footprint reducido, unos 50Kb Modelo de componentes UI avanzados, altamente personalizable Corre en cualquier dispositivo CLDC 1.1 - MIDP 2.0 Se utiliza como librería independiente, incluida dentro de la aplicación Fuerte adopción por desarrolladores Comercialmente usada por Comverse VVM, Emoze email, Telmap, majimob, 8motions, MEP, StoreFront, Micello Integrado en Java ME SDK 3.0.5 Activa comunidad open source en java.net
Lightweight UI Toolkit Características claves Desarrollo rápido MVC al estilo Swing API limpia y clara Consistente y flexible Portable, extendible Soporte de pantallas táctiles Widgets enriquecidos 3D, integración SVG Probado en amplia gama de dispositivos
Lightweight UI Toolkit Código de ejemplo Representación de texto enriquecido/xhtml HTMLComponent htmlc = new HTMLComponent(new HttpRequestHandler()); Form form = new Form(); form.addcomonent(htmlc); form.show(); htmlc.setpage(http://wap.cclol.com/thedailyshow.rbml);
LWUIT 1.5 Principales mejoras Nuevo tipo de List: ContainerList Mejora en la integración de componentes nativos Nuevo componente para el manejo de vídeo Nueva API de audio Nuevo componente de pestañas Componente Slider Botones de activación (toggle buttons) Teclado virtual integrado (VKB) Desempeño de imágenes
LWUIT 1.5 Otras mejoras Nuevas plataformas Java SE Permite creación de prototipos, demostración y depuración de aplicaciones LWUIT en la parte superior de Java SE, incluyendo la posibilidad de embeber aplicaciones LWUIT como un Applet Soporte Blackberry Torch Muchas nuevas características incluyen soporte para dispositivos Blackberry Torch y mejoras en la entrada nativa Mejoras en las herramientas Nuevo constructor de GUI como parte de la herramienta de editor de recursos Rediseño del editor de recursos, incluyendo muchas mejoras de usabilidad
Java ME + Web Descripción de arquitectura Extensiones JavaScript Múltiples modelo de aplicación Integración de sistema de gestión de aplicación Alta portabilidad Beneficios claves Capacidad de acceso a dispositivo y lógica de negocio Java desde aplicaciones web Representación web dentro de aplicaciones Java Perfecta integración entre aplicaciones Java y aplicaciones web
Java ME + Web Código de ejemplo Llamando código Java desde JavaScript function startmusic() { Widget = new bridge.javapackages.com.sun.j2me.jil.widget.widget(); AudioPlayer = Widget.Multimedia.AudioPlayer; var fileurl = "http://localhost/music.mp3"; AudioPlayer.open(fileUrl); AudioPlayer.play(1); }
Java ME + Web Código de ejemplo Llamando código Java desde JavaScript function loadbirthdays() { var PIM = bridge.javapackages.javax.microedition.pim.pim; var Contact = bridge.javapackages.javax.microedition.pim.contact; var result = new Array(); var items = PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_ONLY).items(); while (items.hasmoreelements()) { var item = items.nextelement(); if (item.countvalues(contact.birthday) > 0) { var name = item.getstring(contact.formatted_name, 0); var birthday = item.getdate(contact.birthday, 0); result.push(new Record(name, birthday)); } } return result; }
Java ME 6 Evolución de la plataforma CLDC/CDC Oracle se comprometió con la modernización de la plataforma Java ME Una propuesta para la evolución de Java ME fue enviada al comité ejecutivo del JCP Elementos claves de la propuesta de evolución de Java Adoptar o incorporar las mejoras del lenguaje o plataforma de JDK 1.6 Impulso para una mayor coincidencia entre CDC y CLDC Extender APIs y capacidades de los nuevos o ya existentes paquetes opcionales Oracle tiene la intención de soportar Java ME.next en productos futuros
Java La mejor plataforma para sistemas embebidos 1 2 3 Todas las ventajas del lenguaje Java y la máquina virtual: independencia, multiplataforma, multi-hilo, multi-core, gestión de memoria, seguridad, etc. Plataforma probada, robusta, segura y de alto rendimiento, desplegada en una amplia gama de entornos Aísla tus aplicaciones de las variaciones de lenguaje y plataforma (ej. C/C++, kernel, diferencias de libc) 4 Soporte de las principales características de sistemas embebidos (bajo footprint, gestión de energía, baja latencia, etc) 5 Soporta los procesadores embebidos más populares, permitiendo flexibilidad en el diseño 6 Desacopla el desarrollo de software del ciclo de desarrollo de hardware 7 Totalmente orientado a objetos y altamente productivo, APIs, runtime y herramientas que permiten un rápido desarrollo y despliegue 8 Aprovecha la gran base de desarrolladores Java y su ecosistema 9 Crea fácilmente soluciones integradas end-toend con servicios Java back-end 10 Escalable para crear soluciones desde dispositivos con restricciones a sistemas server-class
Clientes de Java embebido Dos configuraciones Java SE Soporte gráfico completo, incluyendo Swing Incluye todas las APIs de Java SE Java ME SE headless Plataforma Java SE Paquetes opcionales CDC Varios ports completos de Java SE 6 Seguridad, AWT, AGUI/Swing, XML, media Contenedor móvil para MSA Estándares de la industria para TV, OSGi, etc Al día con las APIs de Java y el lenguaje Enfoque: dispositivos de gama media y alta Plataforma Java ME CDC Java SE HotSpot CDC Sistema Operativo Embebido Núcleo basado en un subconjunto de JDK 1.4 Basado en varios entandares de la industria de sistemas integrados Enfoque: dispositivos de gama baja y media
Java SE embebido Características y mercado Características Como Java SE, pero optimizado para sistemas embebidos Reducción de memoria y footprint Optimizado para poca memoria, gestión de energía optimizada, soporte multi-core Mercado ATMs, parquímetros, sistemas de punto de venta Impresoras multifuncionales Módulos de energía inteligente, medidores inteligentes Netbooks, PCs industriales Automatización de fábricas, lectores RFID Comunicación de voz, vídeo conferencia Routers, switches, dispositivos de almacenamiento Imágenes médicas, radares
Java ME embebido Características y mercado Características Líder en la industria Alto rendimiento y fiabilidad con bajos requerimientos Portado a un gran número de procesadores y sistemas operativos, altamente configurable Mercado Reproductores Blu-ray, televisores digitales, decodificadores, reproductores Equipos de red y dispositivos de almacenamiento Telefonía VoIP Lectores de libros electrónicos Medidores inteligentes Automotriz / Telemática Impresoras multifuncionales Terminales de mano / Quioscos
Muchas gracias! Visítame blog.jfexart.com Escríbeme jfexart@gmail.com Sígueme @jfexart