JAXenter.de

Das Portal für Java, Architektur, Cloud & Agile
X

W-JAX Countdown: Alle Infos zu W-JAX und Business Technology Days!

Kommentar: Wie Oracle Java ME im Embedded-Bereich wiederbeleben will

Java ME 8: Back to the Roots

Nachdem Java ME es nicht geschafft hat, sich über das Feature-Phone-Stadium hinaus auch auf Smartphones zu etablieren, sieht Oracle die Zukunft von Java ME nun im Embedded-Bereich. Außerdem sollen die Plattformen Java SE und Java ME wieder stärker vereinheitlicht werden. Die im Rahmen der diesjährigen JavaOne-Konferenz vorgestellte Early-Access-Version von Java ME 8 gibt einen Vorgeschmack darauf, wo die Reise hingehen soll.

Ursprünglich wurde Java einmal für den Einsatz in Embedded-Geräten wie Set-Top-Boxen entwickelt. Auch die Java-gesteuerte Kaffeemaschine stand einst als Synonym für den Einsatz von Java im Embedded-Bereich. Doch dann hat Java einen Abstecher in den Browser und auf den Desktop gemacht, um sich letztendlich auf den Servern dieser Welt als feste Größe zu etablieren. Mit Java ME hat Java zwar bereits früher wieder in die mobile Welt zurückgefunden, nämlich vor allem auf inzwischen drei Milliarden Mobiltelefonen, doch dem aktuell hierzulande herrschende Trendwechsel - weg vom Feature Phone und hin zum Smartphone - konnte Java ME nicht schnell genug folgen. Plattformen wie iOS und Android konnten hier wesentlich schneller auf aktuelle Marktanforderungen reagieren. Obwohl Java ME auf Feature Phones immer noch eine bedeutende Rolle spielt, sind die Tage von Java ME auf dem Handy gezählt, denn Geräte dieser Gattung, die unterhalb der Smartphone-Kategorie liegen, werden immer weniger.

Ganz anders sieht es in der Embedded-Welt aus. Hier ist Java ebenfalls schon seit Jahren von der breiten Masse kaum bemerkt sowohl in Form von Java SE als auch Java ME im Einsatz. Im Gegensatz zu den Feature Phones weist der Embedded-Markt ein erhebliches Wachstumspotential auf. Denn das Internet of Things (IoT) bei dem die Maschine-to-Maschine (M2M) Communication eine wichtige Rolle spielt, dringt in immer mehr Bereiche des Alltags vor. Dies hat auch Oracle erkannt und hat bereits in den letzten Jahren den Fokus von Java ME verstärkt auf den Embedded Bereich verlegt. Im Rahmen der diesjährigen JavaOne in San Francisco wurde diese Neuausrichtung noch einmal unterstrichen. Man möchte Java zur Sprache des Internet of Things machen und damit eine komplette End-to-End Plattform für M2M-Kommunikation basierend auf Java anbieten.

Angleichung von Java SE und ME

In der Vergangenheit haben sich Java ME und Java SE immer weiter voneinander entfernt, sowohl was die Sprache als auch was die APIs angeht. Die Entwicklung von Java ME hat nicht mit der Entwicklung von Java SE mithalten können. Java ME bietet, was die APIs betrifft, nur eine sehr kleine Untermenge der aktuellen Java SE an. Zugleich ergänzt es aber zusätzliche APIs wie das GCF (Generic Connection Framework), die in Java SE nicht verfügbar sind. Was die Java-Sprache betrifft, so ist Java ME basierend auf der CLDC 1.1 auf dem Stand von Java SE 1.3 zurückgeblieben, so dass man auf moderne Sprach-Features wie Generics und Annotations verzichten muss. Hinzu kommt, dass mit der CDC (Connected Device Configuration) eine weitere nicht kompatible Java ME Plattform existiert, die - was die Sprache angeht - auf dem Stand von Java SE 1.4.2 stehengeblieben ist. Auf der d JavaOne hat Nandini Ramani, Vice President of Development, Java Platform, Oracle, in der Keynote angekündigt, dass man mit Java 8 die verschiedenen separaten Java-Plattformen wieder vereinigen wolle (Abbildung 1). Dieser schon lange überfällige Schritt soll auch Java ME wieder neuen Wind geben. In einem ersten Schritt soll das Java SE 8 Compact Profile die CDC ersetzen, so dass man dadurch schon mal eine Implementierung weniger hat. Außerdem soll Java ME 8 mit einer neuen CLDC 8, die in JSR 360 spezifiziert wird, die bisherige CLDC 1.1.1 sowohl was die VM, als auch die Sprache und die Libraries betrifft auf den Stand von Java SE 8 gebracht werden.

Abb1

Hierdurch sollen die APIs, die in der Vergangenheit immer weiter auseinander getriftet sind, wieder vereinheitlicht und dadurch auch eine Code-Portabilität zwischen Java SE und Java ME ermöglicht werden. Zu den Neuerungen die in JSR-360 für Java ME spezifiziert werden, gehören unter anderem generische Typen, Annotations, Enumerations, sowie Strings in der switch-Anweisung. Bei den APIs wurden vor allem Enumerations, Collections und ein Subset der NIO API ergänzt sowie wichtige Klassen wie String an Java SE 8 angepasst. Außerdem ist angedacht, ein neues Generic Connection Framework zu spezifizieren, das sowohl in Java ME als auch Java SE eingesetzt werden kann. Gleichzeitig soll das GCF aber abwärtskompatibel mit früheren Versionen sein. Das neue GCF, das Bestandteil der CLDC 8 ist, stellt auch zahlreiche neue Features wie die Unterstützung von IPv6, erweiterte Konnektivität, neue Protokolle und Unterstützung von TLS 1.2 bereit.

Doch nicht nur die Sprache und die APIs sollen vereinheitlicht, sondern auch die Tools sollen einander angeglichen werden. All dieses Anpassungen sollen letztendlich laut Ramani dazu führen, dass es in Zukunft nur noch einen Java-Entwickler gebe und nicht wie bisher solche, die sich auf Java ME und andere die sich auf Java SE spezialisieren.

Doch die für Java 8 geplanten Angleichungen sind nur ein erster Schritt in Richtung einheitliches Java. Erst mit Java 9 soll dann das schon seit langem propagierte Projekt Jigsaw kommen, das ein vollständig modulares Java bereitstellt. Was bei Java 8 über die Compact Profiles gelöst wird, soll dann Jigsaw leisten. Oracle hat im Rahmen der JavaOne unterstrichen, dass von nun an die Roadmap von Java SE und Java ME synchronisiert werden soll. Auch die Release-Zyklen sollen parallel laufen. Das bedeutet in der Praxis, dass im März 2014 zur gleichen Zeit das JDK 8 sowie das Java ME SDK 8 und Java ME Embedded 8 sowie Java SE Embedded 8 bereitgestellt werden sollen. Zusammen mit dem JDK 9 wird dann Java Embedded 9 zur Verfügung stehen. Doch das wird laut Oracles Roadmap nicht vor 2016 der Fall sein.

Plattform für das Internet of Things

Das neue Java ME 8 positioniert Oracle klar als neue Plattform für das Internet of Things. Das System kommt mit sehr geringen Ressourcen aus und läuft bereits auf Geräten mit 128 kByte RAM und nur 512 kByte ROM. Auch Java SE 8 gibt sich bei Einsatz des Compact Profiles bereits mit 10 bis 11 MB Speicher zufrieden. Um es Hardware-Herstellern einfacher zu machen, Oracles Embedded-Implementierungen von Java SE 8 und Java ME 8 auch auf entsprechende Hardware-Plattformen zu portieren, hat Oracle das Java-Platform-Integrator-Programm ins Leben gerufen. Dieses erlaubt das einfache Portieren bestehenden Codes sowie das Ergänzen von eigenen APIs. In der Pre-Deployment-Phase werden Teilnehmer mit direktem Zugriff auf Produkt-Code und die dazugehörigen TCKs unterstützt und erhalten neben direktem Kontakt zu Oracle-Technikern auch Training und Support bei der Entwicklung. Nach dem Deployment der Portierung können sie dann auf den Oracle Premiere Support zurückgreifen.

Bisher wurden Embedded-Geräte vor allem in C/C++ oder Assembler programmiert. Während bei beiden das Know How sehr plattformspezifisch ist, ist es bei Assembler heutzutage immer schwieriger, Entwickler mit entsprechender Erfahrung zu finden. Eine Cross-Plattform-Entwicklung ist in beiden Fällen nicht möglich und somit existiert auch kein effizientes und skalierbares Entwicklungsmodell, das sich von kleinen Embedded-Geräten bis hin zu großen Serversystemen anwenden lässt. Java bietet hier die ideale Lösung für dieses Problem und erlaubt es zudem, auf eine riesige Entwicklergemeinde von weltweit neun Millionen Entwicklern zurückzugreifen. Als mögliche Use Cases sieht Oracle hierbei Wireless Modules, Gebäude- und Industrie-Controller, Smart Meter, Tracking Systeme, Umweltüberwachung, Tele-Health, Heimautomatisierung und Verkaufsautomaten.

Abb2

Ein weiterer wichtiger Bestandteil von Java ME 8 Embedded ist das MEEP 8 (Java ME Embedded Profile 8). Dieses wird zurzeit im JSR 361 spezifiziert und soll es erlauben, die Plattform von der Größe her an ein breites Spektrum an Use Cases anzupassen, um alles vom sehr kleinen bis zum leistungsfähigen Embedded System zu unterstützen. Es beinhaltet neben einer Service-basierten Anwendungsplattform, die eine Modularisierung der Softwarekomponenten ermöglicht, auch ein flexibleres Security Model. Ausgangspunkt für diesen neuen JSR ist das Information Module Profile Next Generation (IMP-NG), das im JSR 228 spezifiziert wurde und seinerseits das Information Module Profile (IMP) aus JSR 195 ersetzt hat.

Java auf den Chip gepackt

Die Early Access Version von Java ME 8 ist nicht nur als Device Emulator für Windows PCs verfügbar, sondern wird auch für folgende ARM-basierte Entwicklungsboards bereitgestellt:

  • Raspberry Pi Model B (ARM11/Linux)
  • ST Microelectronics STM32F4DISCOVERY (ARM Cortex-M4)

Bei dem STM32F4DISCOVERY handelt es sich um ein Ein-Chip-Board, das mit 192 KB RAM und 1 MB Flash-Speicher ausgestattet ist (Abbildung 3). Das in der Massenproduktion für 5 US-Dollar pro Stück verfügbare Board ist in der Lage, eine komplette Java ME 8 Laufzeitumgebung inklusive Netzwerk und Gerätezugriff bereitzustellen und entsprechende Java-Applikationen auszuführen.

Abb. 3

Um mit der Entwicklung für die Java ME 8 Plattform zu beginnen, ist aber nicht zwingend ein Board erforderlich. Man kann sich auch die Early Access Version für Windows 7 herunterladen. Hierfür ist auch ein entsprechendes Plug-In verfügbar, dass die komfortable Integration in die Netbeans IDE erlaubt. Wer die Konfiguration der verschiedenen Komponenten nicht per Hand vornehmen möchte, kann sich auch den NetBeans Developer Build mit Java ME SDK 8 Early Access Unterstützung herunterladen (Abbildung 4).

Abb. 4

Oracle sieht in Java die ideale Plattform, um im Internet of Things eine einheitliche Plattform zu schaffen, die von den kleinsten Embedded-Geräten, den so genannte Edge Nodes, bis auf den Server reicht. Denn beim IoT fallen Unmengen von Daten an, die es weiterzuleiten und zu analysieren gilt, um sie dann in Datenbanken abzulegen. Oracle rechnet für das Jahr 2020 mit rund 50 Milliarden Connected Devices weltweit. Mit Geräten wie der OneBox positioniert sich Oracle auch in der Mitte zwischen Edge Nodes und Server. Hierbei kommt eine Embedded-Box zum Einsatz, die auf Java SE Embedded basiert. Im Idealfall werden die Daten schon im Netz vorgefiltert und nur die wirklich relevanten Informationen an den Server weitergeleitet. Mit Oracle Analytics und der Zuhilfenahme von Oracle Event Processing (OEP) setzt man genau auf dieses Konzept.

Fazit

Das alte Paradigma „Write-Once Run-Anywhere“ soll nun doch noch Realität werden. Durch die Zusammenführung der Java SE und ME, die sich über die Jahre auseinandergelebt haben, kommt man dem Traum wieder etwas näher, dass man einmal geschriebenen Java-Code auf jeder Art von Endgeräten wiederverwenden kann. Die Modularisierung der Java SE spielt hierbei eine wichtige Rolle. Auch wenn Jigsaw noch auf sich warten lässt, ist das Compact Profile bereits der richtige Ansatz. Durch die Zusammenführung der verschiedenen Sub-Plattformen von Java wird die Fragmentierung der Plattform und der Sprache erheblich reduziert. Obwohl auch die Compact Profiles und die Modularisierung eine gewisse Fragmentierung darstellen, so scheint diese im Embedded-Bereich nicht so kritisch zu sein wie auf dem Feature Phone, denn auf Embedded-Geräten wird eine Anwendung meist sehr spezifisch für einen bestimmten Use Case basierend auf einer ganz bestimmten Hardware entwickelt.

Was die Fokussierung auf den Embedded Bereich angeht, die auf der JavaOne deutlich unterstrichen wurde, so ist das ein geschickter Schachzug, um Java ME im Spiel zu halten. Da der Zug bei den Smartphones bereits abgefahren ist und die Zukunft für die einfachen Feature Phones zumindest hierzulande nicht besonders rosig aussieht, macht es durchaus Sinn, sich auf das Thema IoT zu konzentrieren, dass ein nahezu unerschöpfliches Potential bietet. Hier ist Java zwar gut aufgestellt, trotzdem muss man nun aufpassen, dass es weiterhin zügig voran geht, vor allem bei der Fertigstellung der relevanten JSRs, denn auch im Embedded-Bereich schläft die Konkurrenz nicht und Arduino und Co. sind bereits gut positioniert. Dennoch sollten sich Entwickler frühzeitig mit dem Thema Java ME Embedded beschäftigen, zumal die Einstiegshürde für den Java SE und EE Entwickler nur wesentlich geringer ist.

 

Kommentare

Ihr Kommentar zum Thema

Als Gast kommentieren:

Gastkommentare werden nach redaktioneller Prüfung freigegeben (bitte Policy beachten).