Java ME Embedded 3.2 und Java Embedded Suite 7.0 als Wegbereiter für M2M-Lösungen

Mit verbundenen Dingen

Wolfgang Weigend

Unmittelbar vor der JavaOne 2012 ist die neue Version Java Micro Edition Embedded 3.2 (Java ME) erschienen, mit einer aktualisierten Version vom Oracle Wireless Client und dem Oracle Java ME Software Development Kit, in dem ein Eclipse Plug-in enthalten ist. Die Zielumgebung der Java ME Embedded 3.2 ist eine komplette Java-Client-Ablaufumgebung, optimiert für Micro-Controller und Geräte mit begrenzten Prozessor- und Speicherressourcen, die wir in der wunderbaren neuen Welt mit verbundenen Dingen vorfinden, dem Internet der Dinge.

Mit den Java-Embedded-Produkten wird den Geräteherstellern und Partnern ein Zugang zum weltweiten Java-Ökosystem mit mehreren Millionen Java-Entwicklern eröffnet, die wiederum Softwareprogramme für die unterschiedlichen Geräte mit ihren Entwicklungsumgebungen erstellen. Mit der zunehmenden Vernetzung bei Machine-to-Machine-(M2M-)Anwendungsfällen wurde die Java-ME-Technologie als eine strategische Kernkomponente von Oracle eingestuft, mit dem Ziel eine komplette Plattform vom Gerät bis zum Rechenzentrum anzubieten und die Entwicklung von M2M-Lösungen zu vereinfachen. Mit einem prognostizierten hohen Wachstum von M2M-fähigen Geräten eröffnet sich ein zunehmend lukrativer Markt für Java Embedded und sorgt für eine steigende Nachfrage der Java-Technologie. Der definierte Zielmarkt für Java ME Embedded 3.2 besteht aus M2M-Wireless-Modulen, Industrie- und Gebäudesteuerung, Smart-Grid-Infrastruktur, Haus- und Gebäudeautomatisierung, Sensorik sowie Nachverfolgung und Medizintechnik.

Oracle Java ME Embedded 3.2

Oracle Java ME Embedded 3.2 wurde an die speziellen Anforderungen von embedded Geräten mit niedrigem Energieverbrauch, wie Micro-Controller und andere ressourcenabhängige Hardware ohne Display oder Benutzerschnittstelle angepasst und optimiert. Dabei können Anwendungen jederzeit nachgeladen oder aktualisiert werden, remote Operationen ausgeführt werden und neue Fähigkeiten hinzugenommen werden, ohne die vorhandene Funktionalität zu beeinträchtigen. Anwendungs-Upgrades der verwendeten Gerätekomponenten können direkt und sicher ausgeführt werden und verlängern damit die gesamte Lebensdauer der Embedded-Lösung.

Die Oracle Java ME Embedded 3.2 ist eine Java-ME-Ablaufumgebung, basierend auf der CLDC 1.1 (Connected Limited Device Configuration nach JSR-139) und der IMP-NG (Information Module Profile – Next Generation nach JSR-228). Die im Kasten „Oracle Java ME Embedded“ aufgeführten Spezifikationen und Oracle-Schnittstellen sind im Oracle-Java-ME-Embedded-3.2-Produkt enthalten. Weitere Features sind im Kasten „Zusätzlich enthaltene Embedded-Funktionsmerkmale“ dargestellt.

Oracle Java ME Embedded mit optionalen Spezifikationen und Oracle APIs
– File I/O API’s (JSR-75)
– Wireless Messaging APIs (JSR-120)
– Web Services (JSR-172)
– Security and Trust Services Subset (JSR-177)
– Location APIs (JSR-179)
– XML APIs (JSR-280)
– Device Access API
– Application Management System (AMS) API
– AccessPoint API
– Logging API

Zusätzlich enthaltene Embedded-Funktionsmerkmale
– Remote-Anwendungsmangement
– 7 x 24 Stunden Betrieb
– Anwendungs-Monitoring
– Automatsicher Start und Systemwiederherstellung
– Anwendungszugriff zu Peripherieschnittstellen (GPIO, I2C, SPIO, Memory-Mapped-I/O)
– Anwendungs-Level-Logging-Framework mit Option für remote Logging
– Headless Geräte-Debugging (Source-Level-Java-Anwendungs-Debugging über IP-Verbindungen)
– Remote-Konfiguration der Java VM

Die Voraussetzungen der Hardwareunterstützung liegt bei mindestens 130 kB RAM und 350 KB ROM bis maximal 700 KB RAM und 1500 KB ROM. Eine kommerzielle Java-Implementierung für so genannte Small-Footprint-Geräte basiert auf der ARM-Prozessorarchitektur einschließlich ARM Cortex-M (Micro-Controller) und ARM Cortex-A (Applikationsprozessoren) und wird über Quell- oder Binärformat von Oracle lizensiert. Die Standard-Binärdatei der Oracle Java ME Embedded 3.2 für ARM KEIL Entwicklungs-Boards, basierend auf ARM Cortex M-3/4 (KEIL MCBSTM32F200 mit ST Micro SOC STM32F207IG), wird in Kürze über das Oracle Technology Network verfügbar sein. Die Installation der Binärdatei erzeugt eine komplette Java-ME-Ablaufumgebung auf dem ARM KEIL Entwicklungs-Board und ermöglicht den Rapid-Prototyping-Ansatz mit einer Java-Entwicklungsumgebung (Eclipse und NetBeans IDE). Unterstützung von weiteren vorgefertigten Binärdateien ist für kommende Versionen geplant.

Oracle Java Wireless Client 3.2 und Java ME SDK 3.2

Der neue Oracle Java Wireless Client 3.2 basiert auf einer optimierten Java-ME-Implementierung und richtet sich an den Massenmarkt der mobilen Endgeräte. Das Release benutzt Standard-Java-Spezifikationen (JSR), Oracle-Optimierungen/APIs, flexible Portierungsschichten für gerätespezifische Anpassungen, die in die Verbesserung der Geräte/Chipset-Anforderungen eingeflossen sind. Unterstützung für umfassende Tooling-Funktionen wird angeboten, zur Speicher- und Netzwerküberwachung und lokales Tooling direkt am Gerät. Ebenfalls wird die Dual-SIM-Funktionalität unterstützt, für den Geräteeinsatz bei mehreren Telekommunikationsunternehmen mit mehrfachen Telefonverbindungen. Im M2M-Geschäftssegment hat die Firma Cinterion, eine Gemalto-Firmierung, ein extrem kompaktes, schnelles und mit sicherer Wireless-Anbindung ausgestattetes M2M-Kommunikationsmodul auf Basis Oracle Java ME Embedded 3.2 Anfang Oktober 2012 vorgestellt.

Die komplette Entwicklungsumgebung für Oracle Embedded 3.2 und den Oracle Java Wireless Client 3.2 wird mit dem Oracle Java ME Software Developer Kit (SDK) 3.2 angeboten. Die Version Java ME SDK 3.2 unterstützt die Small-Embedded-Geräte, lokale als auch Remote-Wartung sowie Debugging und ein neues Java ME SDK Plug-in für die Eclipse IDE und NetBeans-Entwicklungsumgebung. Die existierenden Skin-Maker-Werkzeuge der Gerätehersteller für die Java-ME-Plattform werden durch den neuen Geräte-Skin-Creator im Java ME SDK 3.2 ergänzt, um eigene Oberflächen (Custom Skins) zu erstellen und zum Testen der Anwendung.

Oracle Java Embedded Suite 7.0

Zeitgleich wurde die Oracle Java Embedded Suite 7.0 (JES 7.0) veröffentlicht. Basierend auf der Oracle-Java-Plattform enthält sie Java SE Embedded 7, Java DB, eine Version vom GlassFish für die Embedded Suite und dem Jersey Web Services Framework. Das Bundle ist mit Hinblick auf einen reduzierten Ressourcenverbrauch optimiert worden, um die leistungsstärkeren Geräte und Standard-Middleware-Komponenten besser zu verzahnen. Dafür wurden vorintegrierte Webserver, Web Services und Datenbanktechnologie mit einem Anwendungsframework verbunden, um eine optimierte Standardlösung für embedded Geräte anzubieten. Die schlanke Java-Ablaufumgebung ist vollständig kompatibel mit der Java SE 7 und eröffnet den Zugang für Java-Entwickler zur Erstellung von aktuellen M2M-Lösungen mit gewohnten Entwicklungsverfahren und existierenden Entwicklungsumgebungen (Eclipse und NetBeans IDE). Die JES 7.0 bietet Unterstützung zur Speicherung strukturierter Daten mit SQL, eine vollständige Kompatibilität zur Java-Servlet-3.0-Spezifikation, die Bereitstellung von Web Services, statischen- und dynamischen Web-Content und den Clientzugriff über RESTful Web Services.

Java SE Embedded auf dem Raspberry-Pi-Computer

Die Java SE Embedded wurde aus einer Java Standard Edition für Embedded Geräte implementiert und optimiert. Der statische Ressourcenbedarf ist gegenüber einer Standard-JRE um ca. 60 % reduziert: 42MB vs. 140MB der Java SE 7update6 mit Linux-Betriebssystem auf x86 CPU-Basis. Die Speicheranforderung beträgt in der Headless-Variante 32MB und in der Headful-Variante 64MB. Die Java-SE-Embedded-Architektur unterstützt ARM, PowerPC und x86 Prozessoren und ist vollständig Java SE kompatibel (Tabelle 1).

Eine praktische Anwendungsumgebung beispielsweise für das Debian-Linux-Betriebssystem für ARM-Prozessoren und Java SE Embedded bietet der Raspberry-Pi-Computer an. Dieser kleine Rechner, ausgestattet mit einer Low-Power-Hauptplatine inklusive 700mHz ARMv6 Prozessor mit Hardware-Fließkommaverarbeitung und integriertem Grafikprozessor auf einem Chip, teilen sich 256MB RAM. Er verfügt über einen USB-Port, Ethernet-Netzwerkzugang, hochauflösende Grafik, Audioschnittstelle, eine SD-Karte zum Booten und eine I/O-Schnittstelle. Im ersten Schritt booted der Raspberry Pi das Debian-Squeeze-Linux-Betriebssytem für ARM von der SD-Karte. Ungenutzter Speicherplatz wird noch dem Linux-Dateisystem zugewiesen, damit mehr Speicherplatz für Java SE Embedded mit Anwendungen verfügbar ist und der Raspberry-Pi-Computer wird danach mit dem veränderten Dateisystem erneut gestartet. Im nächsten Schritt wird Java SE Embedded 7 (ARMv6/7 Linux – Headless) per Download über das Netzwerk in das Raspberry-Pi-Linux-Dateisystem kopiert und dort mit tar –zxvf *gz ausgepackt. Der Aufruf von ./bin/java –version liefert am Systemprompt folgende Meldung:

java version "1.7.0_04-ea" 
Java (TM) SE Runtime Environment for Embedded (build 1.7.0_04-ea-b20, headless) 
Java Hotspot (TM) Embedded Client VM (build 23.0-b21, mixed mode)

Nach Wunsch kann das Linux-Betriebssystem optimiert werden: Die Konfiguration einer statischen IP-Adresse am Raspberry Pi ist sinnvoll, um einen remote-Zugriff per ssh unter einer konstanten IP-Adresse durchführen zu können, das Einschalten von Swapping auf der SD-Karte ist zwar langsam, aber es erhöht den verfügbaren Speicher (RAM). Standardmäßig verwaltet das Dateisystem die Zugriffszeiten (last-accessed-time) für jede Datei, die bei Embedded-Anwendungen eine untergeordnete Rolle spielen. Durch das Setzten der Optionen noatime (Do not update inode access times on the filesystem) und nodiratime (Do not update directory inode access times on the filesystem) in der Datei /etc/fstab verbessern sich die Dateizugriffszeiten und die Lebensdauer der SD-Karte verlängert sich ebenfalls. Im letzten Schritt erfolgt die Raspberry-Pi-Konfiguration für: Region/Zeit, Zeichensatz, Time-Server, Internet-Proxy, Tastatur-Layout, Debian Linux Package-Update, Grafik-Setup, Webbrowserinstallation (iceweasel) und Sound-Setup – Fertig, Datei speichern und neu starten.

Prozessor Betriebssystem       Headless/Headful    Java-SE-Version    
ARMv6/v7 Linux Headful JDK 7u6
ARMv5 Linux Headless JDK 6u34, JDK 7u6
ARMv6/v7 Linux Headless & Headful (v7) JDK 6u34, JDK 7u6
ARMv7 (Server JIT) Linux Headless JDK 7u6
PowerPC e600 Core Linux Headless JDK 6u34, JDK 7u6
PowerPC e500v2 Core Linux Headless JDK 6u34, JDK 7u6
x86 Linux Headless JDK 6u34, JDK 7u6

Tabelle 1: Java-SE-Embedded-Plattform- und Versionsunterstützung

Ausblick: Java SE Embedded wird modular

Die Konvergenz von Java ME und Java SE soll langfristig mit Unterstützung vom OpenJDK-Projekt Jigsaw vollzogen werden, aber die Java-Modularisierung mit Jigsaw wird erst für Java SE 9 erwartet. Auf der JavaOne 2012 wurde eine mit JavaFX (JavaFX.profile.embedded@8-ea) entwickelte Konferenzplaneranwendung (j1_2012_scheduler) auf einem Raspberry-Pi-Computer gezeigt. Die zum Aufbau notwendigen Java-Module der Java-SE-Embedded-Runtime-Environment-Version (build 1.8.0-ea-b00, headless) für den Raspberry Pi wurden mit einem Jigsaw-Prototypen erstellt. Bis zur tatsächlichen Verfügbarkeit der Java-Plattform-Modularisierung konzentriert man sich bei Java SE 8 Embedded auf die Verwendung von so genannten Compact-Profilen (Abb. 1) mit festgelegten Speicheranforderungen für die Compact-Profile 1 bis 3 und der vollständigen Java-SE-Embedded-Ablaufumgebung (JRE). Die jeweiligen Java-Ablaufumgebungen bauen aufeinander auf, wie in Abbildung 2 dargestellt und bieten mit dem Compact-Profil 1 den minimalen Funktionsumfang (Hotspot VM mit Basis Tier 1 Klassen), mit dem Compact-Profil 2 zusätzliche Tier-2-Klassenbibliotheken und dem Compact-Profil 3 weitere Tier-3-Klassenbibliotheken sowie optionale Komponenten an. Die vollständige Java SE Embedded JRE beinhaltet Hotspot VM, Java-Lang-&-Util-Basisbibliotheken, sowie Basis- als auch Integrationsbibliotheken und UI & Tookits für den maximalen Funktionsumfang. In Tabelle 2 ist dargestellt, wie sich die einzelnen Compact-Profile und die JRE mit den enthaltenen Packages zusammensetzen.

Abb. 1: Java SE 8 Compact Profile mit Speicherbedarf

Abb. 2: Java-SE-8-Ablaufumgebungen (Runtimes)

Compact1-Profil Compact2-Profil Compact3-Profil Vollständige JRE
java.lang java.sql java.lang.management java.applet
java.io jvax.sql javax.management java.awt
java.nio javax.xml javax.naming java.beans
java.text org.w3c.dom java.sql.rowset javax.activity
java.math org.xml.sax javax.security.auth.kerberos javax.rmi
java.net java.rmi org.ietf.jgss javax.rmi.CORBA
javax.net javax.rmi javax.script org.omg
java.util.logging javax.transaction javax.xml.crypto javax.accessibility
java.security java.util.prefs javax.imagio
javax.security.sasl javax.print
javax.security.acl javax.sound
javax.lang.instrument javax.swing
javax.annotation.processing javax.activation
javax.lang.model javax.jws

javax.lang.model.element

javax.xml.bind

javax.lang.model.type

javax.xml.soap

javax.lang.model.util

javax.xml.ws

javax.tools javax.annotation

Tabelle 2: Java SE 8 Compact Profile mit Packages

Fazit

Nach der erfolgreichen Java-Embedded-Konferenz, die auf der JavaOne 2012 eingebunden war (Java Embedded @ JavaOne), konnte eine Vielzahl von interessierten Besuchern, Kunden und Partnern sich intensiv mit Oracle Java ME Embedded 3.2 und der Java SE Embedded Suite 7.0 beschäftigen. Das Potenzial im Umfeld M2M erscheint sehr groß, was durch die jährlichen Wachstumsraten angebundener/wireless Geräte bestätigt wird. Es lässt vermuten, dass kein einzelner Hersteller diesen Markt beherrschen wird, da die notwendige Technologie von unterschiedlichen Firmen geliefert wird. Dazu passt die Absicht von Oracle als Technologielieferant aufzutreten, um die nutzergetriebene Marktkonsolidierung technologisch zu unterstützen. Die Tatsache, dass die kleinen Geräte immer leistungsfähiger werden und die große Java SE 7 maßgeschneidert auf die Java ME angepasst wurde, lässt schlussfolgern, dass sich künftig immer mehr verbundene Dinge mit Java für M2M-Lösungen und dem Internet verwenden lassen. Eine einheitliche Entwicklungsplattform mit Java und modernen Entwicklungsumgebungen (Eclipse, e(fx)clipse, JavaFX) ermöglicht die Erstellung von neuen und besseren Anwendungen für unterschiedliche Hardwareumgebungen und Geräte mit geringem Ressourcenbedarf, vorausgesetzt die Java-Entwicklergemeinschaft realisiert die erheblichen Möglichkeiten im Bereich M2M mit der Konvergenz zu Internetdiensten und beteiligt sich aktiv an diesem Ökosystem.

Geschrieben von
Wolfgang Weigend
Wolfgang Weigend
Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei der Oracle Deutschland B.V. & Co. KG. Er beschäftigt sich mit Java-Technologie und -Architektur für unternehmensweite Anwendungsentwicklung.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.