Java ME 8 und das Internet der Dinge

Eingebettete Systeme sind Computersysteme, die in komplette Geräte eingebettet sind und deren dedizierte Funktionen in einem größeren mechanischen oder elektrischen System liegen. Eingebettete Systeme, die in der Regel sowohl in Industrie- als auch in Verbraucheranwendungen eingesetzt werden, rücken mit dem Internet der Dinge (IoT) ins Rampenlicht. Für Entwickler, die gerade erst mit IoT beginnen, ist dieser Artikel eine Anleitung, um mehr über die Technologien der IoT-Plattform von Oracle zu erfahren: Java ME 8, Java ME Embedded, Java SE Embedded und Java Embedded Suite.

1991 versuchte Mark Weiser, damals Leiter des Palo Alto Research Center (PARC) von Xerox, das kommende Zeitalter des Ubiquitous Computing einzufangen. Weiser stellte fest, dass "die tiefgreifendsten Technologien diejenigen sind, die verschwinden", und beschrieb die verschiedenen Gedanken und technischen Experimente seiner Kollegen bei PARC, als sie nach einer neuen Denkweise für Computer als eingebettete Systeme suchten. Ihre Vision, die 1991 so fantastisch wie ein Luftkissenfahrzeug gewesen sein könnte, wird heute schnell alltäglicher:

Sal erwacht: Sie riecht nach Kaffee. Vor ein paar Minuten hatte ihr Wecker, alarmiert durch ihr unruhiges Rollen vor dem Aufwachen, leise gefragt: "Kaffee?" Und sie hatte gemurmelt: "Ja." "Ja" und "Nein" sind die einzigen Wörter, die es kennt [...]

Beim Frühstück liest Sal die Nachrichten. Sie bevorzugt immer noch die Papierform, wie die meisten Menschen. Sie entdeckt ein interessantes Zitat eines Kolumnisten im Geschäftsbereich. Sie wischt ihren Stift über den Namen, das Datum, den Abschnitt und die Seitenzahl der Zeitung und umkreist dann das Zitat. Der Stift sendet eine Nachricht an das Papier, die das Zitat an ihr Büro sendet [...]

Sobald Sal bei der Arbeit ankommt, hilft ihr die Vorschau (in ihrem Auto), schnell einen Parkplatz zu finden. Als sie das Gebäude betritt, bereiten sich die Maschinen in ihrem Büro darauf vor, sie einzuloggen ...

Die eingebetteten Geräte in Weisers Morgenszenario verwenden Sensoren, um die Interaktionen eines menschlichen Benutzers zu verfolgen, und drahtlose Konnektivität, um eine Antwort zu koordinieren: Sal's Bett, Wecker und Kaffeemaschine sind miteinander verbunden, um sicherzustellen, dass ihre erste Tasse Kaffee unterwegs ist, bevor sie rollt aus dem Bett. Für Weiser und seine Kollegen war dies ein ruhiges Computing . Heute könnten wir es das Internet der Dinge (IoT) nennen.

Lesen Sie mehr über Weisers Arbeit bei PARC und seine Theorie des Ubiquitous Computing: "Sicherstellung der Qualität von Webdiensten im Zeitalter des ruhigen Computing" (Frank Sommers, JavaWorld, April 2001).

IoT-Übersicht

Wenn es ein definierendes Merkmal von IoT gibt, ist es die Interoperabilität oder die Koordination mehrerer Geräte. Wie im obigen Szenario beobachtet, verwendet IoT Sensoren, um Daten (in diesem Fall über Sal's Interaktionen in ihrer Umgebung) und drahtlose Konnektivität zu sammeln, um eine Antwort zu koordinieren. IoT basiert auf einem Zusammenfluss von Technologien, einschließlich neuer und alter Hardwareplattformen, Big Data, Cloud Computing und Machine-to-Machine-Computing (M2M). APIs sind der notwendige Klebstoff, der all diese beweglichen Teile zusammenbringt.

Vor allem für Java-Entwickler ist Java der Schlüssel zu vielen der aufkommenden IoT-Technologien, und Oracle hat sich verpflichtet, Java zu einer führenden Plattform (wenn nicht der Plattform) für IoT zu machen. Java ME 8 haucht der Java-Technologie für kleine Geräte neues Leben ein und erweitert sie um eine differenzierte Reihe eingebetteter Java-Plattformen.

In den nächsten Abschnitten werden die Technologien vorgestellt, aus denen sich die IoT-Plattform von Oracle zusammensetzt. Folgen Sie den Links, um mehr über Java ME, Java ME 8 und die drei eingebetteten Frameworks zu erfahren: Java ME Embedded, Java SE Embedded und Java Embedded Suite.

Java ME

Java Micro Edition sollte ursprünglich die Einschränkungen beim Erstellen von Anwendungen für kleine Geräte berücksichtigen. Basierend auf Java SE war Java ME (oder J2ME, wie wir es 1999 kannten) die Plattform für Java-Anwendungen, die auf kleinen Geräten mit begrenztem Speicher, begrenzter Anzeige und begrenzter Energiekapazität ausgeführt werden. Heute werden damit eingebettete Systeme entwickelt, die von industriellen Steuerungen über Mobiltelefone (insbesondere Feature-Telefone) bis hin zu Set-Top-Boxen und Blu-ray-Playern reichen.

Entwickler, die in Java ME arbeiten, können aus mehreren Konfigurationen, Profilen und optionalen Paketen auswählen:

  • Eine Konfiguration bietet die grundlegendsten Funktionen für Bibliotheken und virtuelle Maschinen für eine Vielzahl von Geräten.
  • Ein Profil besteht aus einer Reihe von APIs, die einen engeren Bereich von Geräten unterstützen.
  • Ein optionales Paket besteht aus einer Reihe von technologie-spezifischen APIs. Die Wireless Messaging API ist ein Beispiel. Weitere Informationen zu optionalen Paketen finden Sie in der optionalen Paketgrundierung von Oracle.

Konfigurationen und Profile

Mit der Zeit haben sich zwei Konfigurationen herausgebildet: Connected Limited Device Configuration (CLDC) ist die Konfiguration für kleine Geräte und Connected Device Configuration (CDC) ist die Konfiguration für leistungsfähigere mobile Geräte wie Smartphones und Set-Top-Boxen.

Java ME-Profile befinden sich über Konfigurationen und definieren übergeordnete APIs, die für bestimmte Anwendungen verwendet werden. Das Mobile Information Device Profile (MIDP) befindet sich beispielsweise auf CLDC und bietet APIs für Benutzeroberfläche, Netzwerk und dauerhaften Speicher. Anwendungen, die in einer CLDC / MIDP-Umgebung ausgeführt werden (z. B. Spiele), werden als MIDlets bezeichnet .

Geräteprogrammierung mit CLDC / MIDP

"Geräteprogrammierung mit MIDP" (Michael Cymerman) enthält eine praktische Demonstration für Entwickler, die CLDC / MIDP noch nicht kennen. Siehe auch "Building MIDlets" (Jonathan Knudsen und Sing Li) und "Big Designs for Small Devices" (Ben Hui).

Für CDC gibt es drei Profile: Foundation, Personal Basis und Personal:

  • Das Foundation-Profil besteht aus einer Reihe von Java-APIs, die für Geräte mit geringem Platzbedarf optimiert sind, die nur über begrenzte Ressourcen verfügen und keine grafische Benutzeroberfläche (GUI) benötigen.
  • Das Personal Basis Profile ist eine Obermenge der Foundation Profile-APIs und unterstützt Geräte mit geringen GUI-Anforderungen. Dieses Profil enthält ein Framework zum Erstellen einfacher GUI-Komponenten und unterstützt einige AWT-Klassen (Abstract Window Toolkit).
  • Das persönliche Profil erweitert das persönliche Basisprofil um ein GUI-Toolkit, das auf der AWT basiert. Es bietet eine vollständige Java ME-Anwendungsumgebung mit vollständiger AWT-Unterstützung und ist für High-End-Geräte wie PDAs, Set-Top-Boxen, Spielekonsolen usw. vorgesehen.

Anwendungen, die in einer CDC / Foundation / Personal Basis / Personal-Umgebung ausgeführt werden (z. B. Blu-ray- Filmmenüs ), werden als Xlets bezeichnet .

Lightweight User Interface Toolkit

Die Verwendung von Javas AWT (Abstract Window Toolkit) zur Erstellung plattformübergreifender mobiler Anwendungen mit einer breiten Benutzerattraktivität ist eine Herausforderung! Schriftart, Layout und andere Unterschiede führen dazu, dass dieselbe Anwendung auf verschiedenen Geräten sehr unterschiedlich aussieht und sich sehr unterschiedlich verhält. Darüber hinaus fehlen erweiterte Funktionen der Benutzeroberfläche wie Animationen und Effekte. Um diese Mängel zu erkennen, entwickelte Sun Microsystems das Lightweight User Interface Toolkit (LWUIT) [PDF], ein von Swing inspiriertes UI-Toolkit für Java ME, das CLDC 1.1 mit MIDP 2.0 und CDC mit Personal Basis Profile unterstützt. Codename One ist eine beliebte Open-Source-Implementierung des ursprünglichen LWUIT.

Java ME 8

Ende 2012 startete Oracle ein ehrgeiziges Projekt, um ein umfassendes Update des Java ME-Plattformstandards bereitzustellen. Zwei Java Specification Requests (JSRs) wurden entwickelt, um die aktuellen Marktanforderungen für eingebettete Geräte zu erfüllen und Java ME auf zukünftige Java-Plattformspezifikationen vorzubereiten: JSR 360 (CLDC 8), ein evolutionäres Update auf CLDC 1.1.1, würde die virtuelle Maschine Java bringen Sprache und Bibliotheken auf dem neuesten Stand mit Java SE 8. JSR 361 (Java ME Embedded Profile / MEEP 8) würde das Informationsmodulprofil - Next Generation (IMP-NG) aktualisieren.

CLDC 8 und MEEP 8

CLDC 8 basiert auf JSR 139 (CLDC 1.1) und richtet die virtuelle Java ME-Kernmaschine, Sprachunterstützung, Bibliotheken und andere Funktionen auf Java SE 8 aus:

  • Die virtuelle Maschine wurde aktualisiert, um Version 2 der JVM-Spezifikation zu entsprechen.
  • Neuere Java SE-Sprachfunktionen wie Generika, Zusicherungen, Anmerkungen und Try-with-Resources werden jetzt unterstützt.
  • Neue Bibliotheken wie Sammlungen, NIO-Teilmenge und Protokollierungs-API-Teilmenge werden jetzt unterstützt.
  • Ein konsolidiertes und erweitertes generisches Verbindungsframework für Multiprotokoll-E / A wird unterstützt.

MEEP 8 aktualisiert die ursprüngliche IMP-NG-Spezifikation, um eine leistungsstarke und flexible Anwendungsumgebung für kleine eingebettete Java-Plattformen bereitzustellen. Die Spezifikation baut auf CLDC 8 mit den folgenden Funktionen auf:

  • Ein neues, leichtes Komponenten- und Servicemodell
  • Gemeinsame Bibliotheken
  • Parallelität mehrerer Anwendungen, Kommunikation zwischen Anwendungen und Ereignissystem
  • Bewerbungsmanagement
  • API-Option zur Behandlung von Anwendungsfällen mit geringem Platzbedarf

MEEP 8 bietet Entwicklern eingebetteter Anwendungen eine moderne Anwendungsumgebung, die die Entwicklung und Bereitstellung eingebetteter Lösungen erleichtert, die modulare, robuste und hochentwickelte Lösungen sind, die für eine Vielzahl von Anwendungsfällen und Geräten optimiert wurden.

Mehr über Java ME 8

Terrence Barrs Einführung in seine Top 10 Java ME 8-Funktionen identifiziert die Komponenten, die in der Version vom April 2014 enthalten sind. Weitere Dokumentation finden Sie auch auf der Download-Seite von Java ME SDK 8.

Java Embedded

Java Embedded ist ein Ergebnis von Java ME und Java SE, einer Suite von drei Plattformen, die speziell auf eingebettete Geräte abzielen. Jedes dieser Produkte bietet eine sehr spezialisierte und optimierte virtuelle Java-Maschine und bietet die Möglichkeit, die installierte Software und Dienste zu aktualisieren (z. B. mithilfe von OSGi). Im Folgenden beschreibe ich Java ME Embedded, Java SE Embedded und die Java Embedded Suite.

Java für eingebettete Systeme?

Obwohl in diesem Artikel nicht behandelt, sind mit der eingebetteten Programmierung bestimmte Herausforderungen und Techniken verbunden. Nicht alle Entwickler sind sich einig, dass Java am besten zur Lösung geeignet ist.

Java ME Embedded

Java ME Embedded besteht eigentlich aus zwei Versionen: Java ME Embedded und Java ME Embedded Client.

Java ME Embedded ist eine Java ME CLDC-Implementierung, die eine robuste und flexible Anwendungsplattform mit dedizierten eingebetteten Funktionen für ständig aktive, kopflose (dh keine Grafik- / Benutzeroberfläche) und verbundene Geräte bietet. Systementwickler und -entwickler können mit Java ME Embedded anspruchsvolle, kleine eingebettete Lösungen erstellen, die die Vorteile der Java-Sprache, der Laufzeit und des Ökosystems nutzen und gleichzeitig enge Systemressourcenziele erreichen. Oracle Java ME Embedded kann von Geräten mit weniger als einem Megabyte Speicher verwendet werden.

Java ME Embedded Client ist eine Java ME CDC-Implementierung, die auf die Einschränkungen von Geräten mit eingeschränkten Ressourcen reduziert und für eingebettete Systeme mit niedriger bis mittlerer Reichweite optimiert wurde. Obwohl dieses Produkt einen geringen Platzbedarf bietet, bietet es dennoch die meisten Java-Sprach- und Laufzeitfunktionen, die Java-Entwickler kennen und an Java SE gewöhnt sind. Java ME Embedded Client kann von Geräten mit weniger als 10 Megabyte Speicher und ohne Grafik verwendet werden.

Holen Sie sich Java ME 8 Embedded

Sie können Java ME Embedded 8 für verschiedene ARM-Geräte oder Java ME Embedded Client 1.1.1 für ARM-, MIPS- und x86-Umgebungen herunterladen. Sie müssen Java ME SDK 8 installieren, um diese Plattform auszuführen. Weitere Informationen finden Sie auch im Java ME CDC zu Java SE Embedded 8-Migrationshandbuch von Oracle.

Java SE Embedded

Java SE Embedded ist eine voll funktionsfähige Implementierung der Java SE-Plattform, die für eingebettete Systeme optimiert wurde. Version 8, die aktuellste Version dieser Plattform, enthält die folgenden Funktionen:

  • Neue Java SE 8-Sprachfunktionen zur Verbesserung der Entwicklerproduktivität
  • Kompakte Profile und Tools zum Erstellen angepasster, platzoptimierter virtueller Maschinen
  • 50% bessere Leistung als frühere Versionen dank Java SE 8
  • Großartig aussehende GUI-Anwendungen mit GPU-beschleunigtem JavaFX
  • Tools zur detaillierten Laufzeitüberwachung und nachträglichen Vorfallanalyse

Beachten Sie, dass Java SE Embedded 8 von Geräten mit mindestens 11 Megabyte Speicherplatz verwendet werden kann. Laden Sie Java SE Embedded 8 für ARM-, Power Architecture- und x86-Plattformen herunter.

Java Platform Integrator

Oracle hat das Java Platform Integrator-Programm eingeführt, um Partnern die Möglichkeit zu geben, Java Embedded-Produkte, einschließlich Java ME Embedded, Java ME Embedded Client und Java SE Embedded, anzupassen, um verschiedene Gerätetypen und Marktsegmente zu erreichen.

Java Embedded Suite

Java Embedded Suite ist das letzte Angebot in der Java Embedded-Familie. Diese Toolsuite erweitert die Java SE Embedded-Laufzeit um Funktionen vom Typ Unternehmen, sodass Anwendungen Folgendes tun können:

  • Speichern Sie Daten in einer relationalen Java DB-Datenbank.
  • Hosten Sie beispielsweise GlassFish-Servlet-basierte Webanwendungen, um einen sicheren Remotezugriff auf Gerätedaten und -vorgänge zu ermöglichen.
  • Hosten und greifen Sie auf RESTful-Webdienste zu, indem Oracle die JAX-RS-Spezifikation in Jersey implementiert.

Im Wesentlichen kombiniert Java Embedded Suite Java SE Embedded 7 (das eine Laufzeit für Java-Anwendungen bietet) mit Java DB (das eine Datenbank zum sicheren Speichern lokaler Inhalte bereitstellt), GlassFish for Embedded Suite (das einen Anwendungsserver für Webseiten bereitstellt), Jersey Web Services Framework (für das Hosten und Zugreifen auf Webdienste) und Event Processing für Java Embedded (das die Echtzeit-Ereignisverarbeitung übernimmt und eine optionale Komponente ist).

Laden Sie Java Embedded Suite für ARM oder x86 herunter.

Fazit

Oracle hat Java ME und verwandte Technologien so positioniert, dass sie den Herausforderungen der Entwicklung für eingebettete Geräte gerecht werden, wobei IoT das ultimative Ziel ist. In diesem Artikel wurde eine kurze Einführung in Java ME gegeben, und anschließend wurden die Produkte Java ME 8, Java ME Embedded, Java SE Embedded und Java Embedded Suite von Oracle vorgestellt.

Programmier-Tutorials und Best Practices, die Ihnen den Einstieg in die IoT-Grundlagen erleichtern, finden Sie auf den Programmierseiten Java ME, MIDP und Embedded Java in JavaWorld. Weitere Informationen zur Strategie von Oracle für IoT und zum Platz von Java in dieser Strategie finden Sie in den verschiedenen Artikeln, Videos, White Papers und Broschüren auf der Informationsseite zum Oracle Internet of Things.

Diese Geschichte "Java ME 8 und das Internet der Dinge" wurde ursprünglich von JavaWorld veröffentlicht.