Java ME 8 e Internet de las cosas

Los sistemas integrados son sistemas informáticos integrados en dispositivos completos, cuyas funciones dedicadas residen dentro de un sistema mecánico o eléctrico más grande. Usados ​​típicamente en aplicaciones industriales y de consumo, los sistemas integrados están entrando en el centro de atención con el Internet de las cosas (IoT). Para los desarrolladores que recién comienzan con IoT, este artículo es una guía para aprender más sobre las tecnologías que componen la plataforma IoT de Oracle: Java ME 8, Java ME Embedded, Java SE Embedded y Java Embedded Suite.

En 1991, Mark Weiser, entonces director del Centro de Investigación de Palo Alto de Xerox (PARC), intentó capturar la era venidera de la informática ubicua. Observando que "[l] as tecnologías más profundas son las que desaparecen", Weiser describió los diversos experimentos técnicos y de pensamiento llevados a cabo por sus colegas de PARC, mientras buscaban una nueva forma de pensar sobre las computadoras como sistemas integrados. Su visión, que podría haber parecido tan fantástica como un aerodeslizador en 1991, se está volviendo rápidamente más común hoy en día:

Sal se despierta: huele café. Hace unos minutos su despertador, alertado por su inquieto rodar antes de despertar, había preguntado en voz baja "¿Café?" Y ella había murmurado, "Sí". "Sí" y "no" son las únicas palabras que conoce [...]

En el desayuno, Sal lee las noticias. Ella todavía prefiere el formulario en papel, como la mayoría de la gente. Ella ve una cita interesante de un columnista en la sección de negocios. Pasa el lápiz sobre el nombre, la fecha, la sección y el número de página del periódico y luego encierra en un círculo la cita. El bolígrafo envía un mensaje al periódico, que transmite la cotización a su oficina [...]

Una vez que Sal llega al trabajo, la vista frontal (en su automóvil) la ayuda a encontrar rápidamente un lugar para estacionar. Mientras entra al edificio, las máquinas de su oficina se preparan para iniciar sesión ...

Los dispositivos integrados en el escenario de la mañana del día laboral de Weiser usan sensores para rastrear las interacciones de un usuario humano y conectividad inalámbrica para orquestar una respuesta: la cama, el reloj despertador y la cafetera de Sal están todos conectados para garantizar que su primera taza de café esté en marcha antes de que ruede. fuera de la cama. Para Weiser y sus colegas, esto fue computación tranquila ; hoy podríamos llamarlo Internet de las cosas (IoT).

Lea más sobre el trabajo de Weiser en PARC y su teoría de la computación ubicua: "Garantice la calidad de los servicios web en la era de la computación tranquila" (Frank Sommers, JavaWorld, abril de 2001).

Descripción general de IoT

Si hay una característica definitoria de IoT, es la interoperabilidad o la coordinación de múltiples dispositivos. Como se observó en el escenario anterior, IoT usa sensores para recopilar datos (en ese caso, sobre las interacciones de Sal en su entorno) y conectividad inalámbrica para orquestar una respuesta. IoT se basa en una confluencia de tecnologías, incluidas plataformas de hardware nuevas y antiguas, big data, computación en la nube y computación de máquina a máquina (M2M). Las API son el pegamento necesario, uniendo todas estas partes móviles.

Lo más importante para los desarrolladores de Java es que Java ya es clave para muchas de las tecnologías emergentes de IoT, y Oracle se ha comprometido a hacer de Java una plataforma líder (si no la plataforma) para IoT. Java ME 8 da nueva vida a la tecnología de dispositivos pequeños de Java, ampliándola con una línea diferenciada de plataformas Java integradas.

Las siguientes secciones presentarán las tecnologías que componen la plataforma IoT de Oracle; siga los enlaces para obtener más información sobre Java ME, Java ME 8 y los tres marcos integrados: Java ME Embedded, Java SE Embedded y Java Embedded Suite.

Java ME

Java Micro Edition se diseñó originalmente para abordar las limitaciones asociadas con la creación de aplicaciones para dispositivos pequeños. Basado en Java SE, Java ME (o J2ME, como lo conocíamos en 1999) era la plataforma para aplicaciones Java que se ejecutaban en dispositivos pequeños con memoria, pantalla y capacidad de energía limitadas. Hoy en día se utiliza para desarrollar sistemas integrados, que van desde controles industriales hasta teléfonos móviles (especialmente teléfonos con funciones), decodificadores y reproductores de Blu-ray.

Los desarrolladores que trabajan en Java ME pueden elegir entre múltiples configuraciones, perfiles y paquetes opcionales:

  • Una configuración proporciona el conjunto más básico de bibliotecas y capacidades de máquina virtual para una amplia gama de dispositivos.
  • Un perfil es un conjunto de API que admiten una gama más reducida de dispositivos.
  • Un paquete opcional es un conjunto de API específicas de tecnología. La API de mensajería inalámbrica es un ejemplo. Consulte el manual de paquetes opcionales de Oracle para obtener más información sobre los paquetes opcionales.

Configuraciones y perfiles

Con el tiempo, han surgido dos configuraciones: Configuración de dispositivo limitado conectado (CLDC) es la configuración para dispositivos pequeños, y Configuración de dispositivo conectado (CDC) es la configuración para dispositivos móviles más capaces, como teléfonos inteligentes y decodificadores.

Los perfiles de Java ME se ubican en la parte superior de las configuraciones, definiendo API de alto nivel que se pueden usar para aplicaciones particulares. El perfil de dispositivo de información móvil (MIDP) , por ejemplo, se encuentra en la parte superior de CLDC y proporciona una interfaz de usuario, redes y API de almacenamiento persistente. Las aplicaciones que se ejecutan en un entorno CLDC / MIDP (como los juegos) se conocen como MIDlets .

Programación de dispositivos con CLDC / MIDP

La "Programación de dispositivos con MIDP" (Michael Cymerman) incluye una demostración práctica para desarrolladores nuevos en CLDC / MIDP. Consulte también "Construcción de MIDlets" (Jonathan Knudsen y Sing Li) y "Grandes diseños para dispositivos pequeños" (Ben Hui).

Para los CDC, hay tres perfiles, Foundation, Personal Basis y Personal:

  • Foundation Profile es un conjunto de API de Java ajustadas para dispositivos de bajo tamaño que tienen recursos limitados y no necesitan una interfaz gráfica de usuario (GUI).
  • Personal Basis Profile es un superconjunto de las API de Foundation Profile y admite dispositivos con requisitos ligeros de GUI. Este perfil viene con un marco para construir componentes de GUI livianos y es compatible con algunas clases de Abstract Window Toolkit (AWT).
  • El perfil personal amplía el perfil de base personal con un conjunto de herramientas GUI basado en el AWT. Proporciona un entorno de aplicaciones Java ME completo con compatibilidad total con AWT y está diseñado para dispositivos de gama alta como PDA, decodificadores, consolas de juegos, etc.

Las aplicaciones que se ejecutan en un entorno CDC / Foundation / Personal Basis / Personal (como los menús de películas Blu-ray) se conocen como Xlets .

Kit de herramientas de interfaz de usuario ligero

¡Usar AWT (Abstract Window Toolkit) de Java para crear aplicaciones móviles multiplataforma con un gran atractivo para los usuarios es un desafío! La fuente, el diseño y otras diferencias hacen que la misma aplicación se vea y se comporte de manera muy diferente en diferentes dispositivos. Además, no existen capacidades de interfaz de usuario avanzadas como animación y efectos. Al reconocer estas deficiencias, Sun Microsystems desarrolló Lightweight User Interface Toolkit (LWUIT) [PDF], un kit de herramientas de UI inspirado en Swing para Java ME que admite CLDC 1.1 con MIDP 2.0 y CDC con Personal Basis Profile. Codename One es una popular implementación de código abierto del LWUIT original.

Java ME 8

A finales de 2012, Oracle se embarcó en un ambicioso proyecto para ofrecer una actualización importante del estándar de la plataforma Java ME. Se diseñaron dos solicitudes de especificación de Java (JSR) para cumplir con los requisitos actuales del mercado para dispositivos integrados y preparar Java ME para futuras especificaciones de la plataforma Java: JSR 360 (CLDC 8), una actualización evolutiva de CLDC 1.1.1, traería la máquina virtual, Java lenguaje y bibliotecas actualizadas con Java SE 8. JSR 361 (Java ME Embedded Profile / MEEP 8) actualizaría el Perfil del módulo de información - Próxima generación (IMP-NG).

CLDC 8 y MEEP 8

CLDC 8 se basa en JSR 139 (CLDC 1.1) y alinea la máquina virtual principal de Java ME, el soporte de idiomas, las bibliotecas y otras características con Java SE 8:

  • La máquina virtual se ha actualizado para cumplir con la versión 2 de la especificación JVM.
  • Las funciones más nuevas del lenguaje Java SE, como genéricos, aserciones, anotaciones y pruebas con recursos, ahora son compatibles.
  • Ahora se admiten nuevas bibliotecas como Colecciones, subconjunto de NIO y subconjunto de API de registro.
  • Se admite un marco de conexión genérico consolidado y mejorado para E / S multiprotocolo.

MEEP 8 actualiza la especificación IMP-NG original para proporcionar un entorno de aplicación potente y flexible para pequeñas plataformas Java integradas. La especificación se basa en CLDC 8 con las siguientes características:

  • Un modelo nuevo y ligero de componentes y servicios
  • Bibliotecas compartidas
  • Simultaneidad de múltiples aplicaciones, comunicación entre aplicaciones y sistema de eventos
  • Gestión de aplicaciones
  • Opcionalidad de API para abordar casos de uso de huella baja

MEEP 8 brinda a los desarrolladores de aplicaciones integradas un entorno de aplicaciones moderno que facilita el desarrollo y la implementación de soluciones integradas que son soluciones modulares, robustas y sofisticadas que han sido optimizadas para una amplia gama de casos de uso y dispositivos.

Más acerca de Java ME 8

La introducción de Terrence Barr a sus 10 características principales de Java ME 8 identifica los componentes incluidos en la versión de abril de 2014. Consulte también la página de descarga de Java ME SDK 8 para obtener más documentación.

Java incrustado

Java Embedded es una consecuencia de Java ME y Java SE, un conjunto de tres plataformas que se dirigen específicamente a dispositivos integrados. Cada uno de estos productos ofrece una máquina virtual Java muy especializada y optimizada y proporciona los medios para actualizar el software y los servicios instalados (por ejemplo, utilizando OSGi). A continuación, describo Java ME Embedded, Java SE Embedded y Java Embedded Suite.

¿Java para sistemas integrados?

Si bien no se tratan en este artículo, los desafíos y técnicas específicos están asociados con la programación integrada. No todos los desarrolladores están de acuerdo en que Java es la mejor opción para resolverlos.

Java ME integrado

Java ME Embedded en realidad consta de dos versiones: Java ME Embedded y Java ME Embedded Client.

Java ME Embedded es una implementación de Java ME CLDC que proporciona una plataforma de aplicaciones robusta y flexible con funcionalidad integrada dedicada para dispositivos siempre encendidos, sin cabeza (es decir, sin gráficos / interfaz de usuario) y dispositivos conectados. Los diseñadores y desarrolladores de sistemas pueden utilizar Java ME Embedded para crear pequeñas y sofisticadas soluciones integradas que aprovechan los beneficios del lenguaje, el tiempo de ejecución y el ecosistema de Java mientras cumplen con los estrictos objetivos de recursos del sistema. Oracle Java ME Embedded puede ser utilizado por dispositivos con menos de un megabyte de memoria.

Java ME Embedded Client es una implementación de Java ME CDC que se ha reducido para adaptarse a las limitaciones de los dispositivos con recursos limitados y se ha optimizado para sistemas integrados de rango bajo a medio. Aunque este producto ocupa poco espacio, todavía ofrece la mayor parte del lenguaje Java y las funciones de tiempo de ejecución que los desarrolladores de Java conocen y a las que están acostumbrados con Java SE. Java ME Embedded Client puede ser utilizado por dispositivos con menos de 10 megabytes de memoria y sin gráficos.

Obtenga Java ME 8 Embedded

Puede descargar Java ME Embedded 8 para varios dispositivos ARM o Java ME Embedded Client 1.1.1 para entornos ARM, MIPS y x86. Deberá instalar Java ME SDK 8 para ejecutar esta plataforma. Consulte también la Guía de migración de Java ME CDC a Java SE Embedded 8 de Oracle.

Java SE integrado

Java SE Embedded es una implementación con todas las funciones de la plataforma Java SE que ha sido optimizada para sistemas integrados. La versión 8, la última versión actual de esta plataforma, incluye las siguientes características:

  • Nuevas funciones del lenguaje Java SE 8 para mejorar la productividad de los desarrolladores
  • Perfiles y herramientas compactos para crear máquinas virtuales personalizadas y con espacio optimizado
  • Rendimiento 50% mejor que versiones anteriores gracias a Java SE 8
  • Aplicaciones GUI de gran apariencia con JavaFX acelerado por GPU
  • Herramientas para la supervisión detallada del tiempo de ejecución y el análisis de incidentes después de los hechos

Tenga en cuenta que los dispositivos con un mínimo de 11 megabytes de almacenamiento pueden utilizar Java SE Embedded 8. Descargue Java SE Embedded 8 para plataformas ARM, Power Architecture y x86.

Integrador de plataforma Java

Oracle ha introducido el programa Java Platform Integrator para brindar a los socios la capacidad de personalizar los productos Java Embedded, incluidos Java ME Embedded, Java ME Embedded Client y Java SE Embedded para llegar a diferentes tipos de dispositivos y segmentos de mercado.

Suite Java Embedded

Java Embedded Suite es la oferta final de la familia Java Embedded. Este conjunto de herramientas agrega características de tipo empresarial al tiempo de ejecución de Java SE Embedded, lo que permite que las aplicaciones hagan lo siguiente:

  • Almacene datos en una base de datos relacional Java DB.
  • Aloje aplicaciones web basadas en servlets GlassFish, por ejemplo, para brindar acceso remoto seguro a los datos y operaciones del dispositivo.
  • Aloje y acceda a servicios web RESTful con la implementación de Jersey de Oracle de la especificación JAX-RS.

Esencialmente, Java Embedded Suite combina Java SE Embedded 7 (que proporciona un tiempo de ejecución para aplicaciones Java) con Java DB (que proporciona una base de datos para almacenar contenido local de forma segura), GlassFish para Embedded Suite (que proporciona un servidor de aplicaciones para páginas web), Jersey Marco de servicios web (para alojar y acceder a servicios web) y Procesamiento de eventos para Java Embedded (que maneja el procesamiento de eventos en tiempo real y que es un componente opcional).

Descargue Java Embedded Suite para ARM o x86.

Conclusión

Oracle ha posicionado Java ME y tecnologías relacionadas para enfrentar los desafíos del desarrollo para dispositivos integrados, con IoT como su objetivo final. Este artículo presentó una breve introducción a Java ME y luego le presentó los productos Java ME 8, Java ME Embedded, Java SE Embedded y Java Embedded Suite de Oracle.

Para obtener tutoriales de programación y mejores prácticas que lo ayudarán a comenzar con los fundamentos de IoT, visite las páginas de programación Java ME, MIDP y Java integrado en JavaWorld. Para obtener más información sobre la estrategia de Oracle para IoT y el lugar de Java en esta estrategia, consulte los diversos artículos, videos, informes técnicos y folletos en la página de información de Oracle Internet of Things.

Esta historia, "Java ME 8 e Internet de las cosas" fue publicada originalmente por JavaWorld.