Java móvil y embebido Jorge Salazar Tovar Venezuela Java User Group [email protected] 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 [email protected] Sígueme @jfexart