5
JavaSPEKTRUM 5/2015 8 SCHWERPUNKTTHEMA Logistik 4.0 Entwicklung von Anwendungen für eingebettete Systeme mit Java ME 8 Marcel Amende, Arne Brüning Nach der Host- und PC-Ära findet gerade eine tief gehende Umwälzung in der IT statt, getrieben von einer explosionsartigen Verbreitung und Vernetzung kleiner, kostengünstiger und intelligenter Geräte. In Deutsch- land wird hierfür häufig der Begriff „Industrie 4.0“ verwendet, der wie eine unnötige Selbstbeschränkung erscheint. Bei aufgeschlossener und kreativer Betrachtung der technischen Möglichkeiten zeigt sich, dass es um weit mehr gehen kann als nur um die Vernetzung von Fabriken und Maschinen. Tatsächlich werden alle Lebensbereiche durchdrungen, das uns bekannte Internet verändert sich zu einem „Internet der Dinge“. Java Embedded E Software für die Geräte im „Internet der Dinge“ bezie- hungsweise „Internet of Things“ (IoT) zu entwickeln, kann herausfordernd sein, da wegen der – auch räumlich – weiten Verbreitung, beschränkten Ressourcen, Variantenviel- falt und meist langen Lebensdauer manuelle Eingriffe in die Gerätesoftware nicht möglich sind. Als Java-Entwickler ist man hier in einer komfortablen Si- tuation: Mit Java Embedded bietet sich die Möglichkeit, auf ei- ne standardisierte und wohlbekannte Entwicklungsplattform zu setzen, welche die Abhängigkeiten von Hardware und Be- triebssystem beseitigt. Man kann bereits erlernte Java-Fähig- keiten nutzen und proprietäre, teure Speziallösungen vermei- den. Dies beschleunigt und vereinfacht die Umsetzung neuer, eventuell noch experimenteller IoT-Anwendungen und Ideen mit unbekanntem Erfolgspotenzial. Dieser Artikel zeigt, wie schnell und einfach sich mit Java ME 8 IoT-Anwendungen realisieren und auf einem Raspberry Pi ausführen lassen. Java ME 8 – Grundlagen Das Java ME 8 SDK ist ein für die Entwicklung eingebetteter (embedded) Systeme optimierter Werkzeugkasten, der – un- ter Beachtung der limitierten Ressourcen und Bandbreiten der dabei eingesetzten Hardware – die Entwicklung von sicheren und zuverlässig betreibbaren Anwendungen ermöglicht. Das SDK zielt sowohl auf kleinere und mittlere Embedded-Syste- me mit mindestens 128 KB RAM und 1 MB Flash oder ROM als auch auf Sensoren, Netzwerk-, Mess- oder medizinische Geräte ab. Die Basis für Java ME 8 bildet die Java CLDC 8 (Connected Limited Device Configuration) mit den grundlegenden APIs gemäß JSR 360 (s. Abb. 1). Diese Konfiguration stellt im Gegen- satz zu früheren Versionen eine strikte Untermenge der Java SE 8-Sprachfunktionen bereit und bietet APIs zum Beispiel für Nachrichtendienste, drahtlose Kommunikation und Sensorein- bindung an. Unterstützt werden außerdem wichtige Kommu- nikationsprotokolle, wie SecureServer, SecureDatagram, UDP und HTTP(S), die für die Vernetzung notwendig sind. Das auf dem CLDC aufsetzende Java Embedded 8 Profile (MEEP) bringt weitere Programmierschnittstellen und Funktionalitäten. Da Modularität auf Geräten mit begrenzten Ressourcen oberste Priorität hat, gibt es mit Midlet nur ein nicht-optionales Paket. Dieses ist für die Anwendung selbst, deren Lebenszyklus und Laufzeitumgebung zuständig. Alle anderen Pakete, wie Cellu- lar, Event, I/O, Line UI und Media, sind optional. Weitere Funktionalitäten zielen auf spezifische Embedded- Anforderungen ab: Das Device I/O API bietet dem Entwickler einen einfachen Zugriff auf die vielfältige Geräteperipherie. Das generische Connection-Framework dient der Kommu- nikation mit der Außenwelt. Die Security and Trust Services (SATSA) integrieren zum Beispiel die kryptografischen Sicher- heitsfunktionalitäten für den Zugriff auf Smartcards. Entwicklungsumgebung Für die Embedded-Entwicklung nutzt man mit NetBeans- oder Eclipse-Plug-ins auf dem Entwicklungsrechner gewohnte Werkzeuge. In Version 8 nutzt Java ME in Vergleich zu vorheri- gen Versionen eine veränderte Architektur: Auf dem Entwick- lungsrechner kann ein Entwicklungs-Agent betrieben werden, der Bestandteil des Java ME 8 SDK ist. Kommandos an das Em- bedded-System werden nicht mehr direkt über das Netz gesen- det. Stattdessen wird der Entwicklungs-Agent genutzt, der die bidirektionale Kommunikation (per TCP oder COM) mit der Java ME 8 VM auf dem Embedded-Endgerät übernimmt. Verschiedene Referenzimplementierungen von Java ME 8 sind verfügbar. Unterstützt werden unter anderem die Plattformen Raspberry Pi und die Qualcom IoE. Zudem stehen Vorabversio- nen für Cortex M4-basierte Systeme von Freescale und STM zum Abb. 1: Java ME 8-Plattform Abb. 2: Java ME 8 VM, SDK und Werkzeuge

Logistik 4.0 Entwicklung von Anwendungen für · Anforderungen ab: Das Device I/O API bietet dem Entwickler ... Die Security and Trust Services (SATSA) integrieren zum Beispiel die

  • Upload
    dolien

  • View
    215

  • Download
    2

Embed Size (px)

Citation preview

JavaSPEKTRUM 5/20158

Schwerpunktthema

Logistik 4.0

Entwicklung von Anwendungen für eingebettete Systeme mit Java ME 8Marcel Amende, Arne Brüning

Nach der Host- und PC-Ära findet gerade eine tief gehende Umwälzung in der IT statt, getrieben von einer explosionsartigen Verbreitung und Vernetzung kleiner, kostengünstiger und intelligenter Geräte. In Deutsch-land wird hierfür häufig der Begriff „Industrie 4.0“ verwendet, der wie eine unnötige Selbstbeschränkung erscheint. Bei aufgeschlossener und kreativer Betrachtung der technischen Möglichkeiten zeigt sich, dass es um weit mehr gehen kann als nur um die Vernetzung von Fabriken und Maschinen. Tatsächlich werden alle Lebensbereiche durchdrungen, das uns bekannte Internet verändert sich zu einem „Internet der Dinge“.

Java Embedded

E Software für die Geräte im „Internet der Dinge“ bezie-hungsweise „Internet of Things“ (IoT) zu entwickeln,

kann herausfordernd sein, da wegen der – auch räumlich – weiten Verbreitung, beschränkten Ressourcen, Variantenviel-falt und meist langen Lebensdauer manuelle Eingriffe in die Gerätesoftware nicht möglich sind.

Als Java-Entwickler ist man hier in einer komfortablen Si-tuation: Mit Java Embedded bietet sich die Möglichkeit, auf ei-ne standardisierte und wohlbekannte Entwicklungsplattform zu setzen, welche die Abhängigkeiten von Hardware und Be-triebssystem beseitigt. Man kann bereits erlernte Java-Fähig-keiten nutzen und proprietäre, teure Speziallösungen vermei-den. Dies beschleunigt und vereinfacht die Umsetzung neuer, eventuell noch experimenteller IoT-Anwendungen und Ideen mit unbekanntem Erfolgspotenzial.

Dieser Artikel zeigt, wie schnell und einfach sich mit Java ME 8 IoT-Anwendungen realisieren und auf einem Raspberry Pi ausführen lassen.

Java ME 8 – Grundlagen

Das Java ME 8 SDK ist ein für die Entwicklung eingebetteter (embedded) Systeme optimierter Werkzeugkasten, der – un-ter Beachtung der limitierten Ressourcen und Bandbreiten der dabei eingesetzten Hardware – die Entwicklung von sicheren und zuverlässig betreibbaren Anwendungen ermöglicht. Das SDK zielt sowohl auf kleinere und mittlere Embedded-Syste-me mit mindestens 128 KB RAM und 1 MB Flash oder ROM als auch auf Sensoren, Netzwerk-, Mess- oder medizinische Geräte ab.

Die Basis für Java ME 8 bildet die Java CLDC 8 (Connected Limited Device Configuration) mit den grundlegenden APIs gemäß JSR 360 (s. Abb. 1). Diese Konfiguration stellt im Gegen-satz zu früheren Versionen eine strikte Untermenge der Java SE 8-Sprachfunktionen bereit und bietet APIs zum Beispiel für Nachrichtendienste, drahtlose Kommunikation und Sensorein-bindung an. Unterstützt werden außerdem wichtige Kommu-

nikationsprotokolle, wie SecureServer, SecureDatagram, UDP und HTTP(S), die für die Vernetzung notwendig sind.

Das auf dem CLDC aufsetzende Java Embedded 8 Profile (MEEP) bringt weitere Programmierschnittstellen und Funktionalitäten. Da Modularität auf Geräten mit begrenzten Ressourcen oberste Priorität hat, gibt es mit Midlet nur ein nicht-optionales Paket. Dieses ist für die Anwendung selbst, deren Lebenszyklus und Laufzeitumgebung zuständig. Alle anderen Pakete, wie Cellu-lar, Event, I/O, Line UI und Media, sind optional.

Weitere Funktionalitäten zielen auf spezifische Embedded-Anforderungen ab: Das Device I/O API bietet dem Entwickler einen einfachen Zugriff auf die vielfältige Geräteperipherie. Das generische Connection-Framework dient der Kommu-nikation mit der Außenwelt. Die Security and Trust Services (SATSA) integrieren zum Beispiel die kryptografischen Sicher-heitsfunktionalitäten für den Zugriff auf Smartcards.

Entwicklungsumgebung

Für die Embedded-Entwicklung nutzt man mit NetBeans- oder Eclipse-Plug-ins auf dem Entwicklungsrechner gewohnte Werkzeuge. In Version 8 nutzt Java ME in Vergleich zu vorheri-gen Versionen eine veränderte Architektur: Auf dem Entwick-lungsrechner kann ein Entwicklungs-Agent betrieben werden, der Bestandteil des Java ME 8 SDK ist. Kommandos an das Em-bedded-System werden nicht mehr direkt über das Netz gesen-det. Stattdessen wird der Entwicklungs-Agent genutzt, der die bidirektionale Kommunikation (per TCP oder COM) mit der Java ME 8 VM auf dem Embedded-Endgerät übernimmt.

Verschiedene Referenzimplementierungen von Java ME 8 sind verfügbar. Unterstützt werden unter anderem die Plattformen Raspberry Pi und die Qualcom IoE. Zudem stehen Vorabversio-nen für Cortex M4-basierte Systeme von Freescale und STM zum

Abb. 1: Java ME 8-Plattform

Abb. 2: Java ME 8 VM, SDK und Werkzeuge

www.javaspektrum.deJavaSPEKTRUM 5/2015 9

Schwerpunktthema

Abb. 5: Raspberry Pi mit abgesetztem Experimentierboard und angeschlossenen

Sensoren

Download bereit. Es werden jeweils die spezifischen Eigenschaf-ten der Systeme unterstützt, indem beispielsweise die I/O-Ports und Bussysteme der Geräte vorkonfiguriert sind. Beim Gerät von Freescale betrifft dies den Zugriff auf das integrierte Gyroskop und den Kompass, was die Entwicklung von Applikationen er-leichtert, die eine räumliche Orientierung benötigen.

Eine besonders kostengünstige Experimentierplattform stellt der Raspberry Pi mit einem Verkaufspreis von ca. 25 Euro dar, über dessen I/O-Ports verschiedenste analoge und serielle Pro-tokolle und Bussysteme (GPIO, Serial RX/TX, I2C, PCM, SPI) zur Anbindung von Schaltern und Sensoren genutzt werden können. Da die Gerätemodelle in NetBeans als Simulatoren be-reitstehen, welche Ein- und Ausgaben über die verschiedens-ten I/O-Ports simulieren und anzeigen lassen, können die Ent-wicklung und der Test von Applikationen aber auch ohne das eigentliche Endgerät erfolgen.

Das Aufsetzen von Java ME 8 erfolgt nach dem Download von Java ME 8 [OTNME8], SDK und Plug-ins [OTNSDK] in folgenden Schritten: Installation des Java ME SDK 8.1 auf einem Entwicklungs-PC, Installation der IDE, hier NetBeans 8.0.2, Installation des Java ME 8 SDK-Plug-ins für NetBeans, Installation Java ME Embedded 8.1 auf dem Raspberry Pi, Verbinden des SDK auf dem PC mit Java ME Embedded 8.1

auf dem Raspberry Pi.Die Installation des Java ME 8 SDKs und NetBeans verläuft automatisch. Das SDK-Plug-in wird nach der Installation der Entwicklungsumgebung aus einem Datei-basierten Repository in NetBeans installiert [PLUG]. Auch die Installation auf dem Raspberry Pi ist denkbar einfach: Das heruntergeladene Ins-tallationsarchiv wird in einem Verzeichnis der Wahl entpackt, womit die Softwareinstallation auch schon abgeschlossen ist.

Um für das SDK auf dem Desktop erreichbar zu sein, star-tet man auf dem Embedded-System das Application Manage-ment System (AMS) mit dem Kommando usertest.sh. Dafür sind Superuser-Privilegien nötig (sudo), damit die Geräteperipherie zugreifbar ist (s. Listing 1).

Nun lässt sich im Device Connection Man-ager des Client-SDK die Verbindung zum lau-fenden AMS auf dem Raspberry Pi konfigu-rieren und herstellen, in diesem Fall (s. Abb. 3) per LAN-Verbindung.

Zentrales Element von Java ME 8-Anwen-dungen ist das MIDlet beziehungsweise Imlet [IMLET], analog zum

Java EE-Servlet. Dank des Java ME 8 SDK-Plug-ins kann man den New Project Wizard von NetBeans nutzen, um ein neues Ja-va ME-Embedded-Anwendungsgerüst zu erstellen.

Die Anwendung kann von der Entwicklungsumgebung Net-Beans aus (via Run|Run Project) über die Geräteverbindung des SDK-Agenten direkt auf das Embedded-Endgerät über-tragen werden. Dort wird die Anwendung vom AMS gestartet und ausgeführt. Im Terminal-Fenster auf dem Raspberry Pi ist die Debug-Ausgabe des Hello World-Beispiels zu sehen.

Praxisbeispiel: Entwicklung eines Prototypen

Gemeinsam mit der Standardisierungsorganisation GS1 und Partnern aus der Transportlogistik wurde von uns ein Prototyp entwickelt, der die Einsatzmöglichkeiten von Java Embedded anschaulich zeigt und der auf verschiedene Anwendungsfälle aus der Logistik übertragen werden kann.

Unser Java ME 8-Prototyp nutzt einen in den Laderaum ei-nes LKW verbauten Raspberry Pi, um die Zustände verschie-dener Sensoren (Temperatur, Luftfeuchte, Türkontakt) laufend auszuwerten und in Abhängigkeit von der momentanen Bela-dung Benachrichtigungen und Alarme auszulösen.

General Purpose I/O (GPIO): Schalten und Signalisieren

Bereits mit dem Ansprechen der einfachen GPIO-Pins aus einer Java ME-Anwendung lässt sich ein erster Anwendungsfall des oben genannten Prototypen umsetzen: Per Software lässt sich mittels Java ME ein GPIO-Pin auf Low (Masse) oder High (+5 V) schalten. Damit wird die Ansteuerung von Warn-LEDs re-alisiert. Die I/O-Pins sind in der Raspberry Pi-Portierung von Java ME bereits entsprechend ihrer Verwendungsmöglichkeit vorkonfiguriert (s. Abb. 4).

Die gelbe Warn-LED lässt sich zum Beispiel an Pin 23 des Raspberry Pi gegen Masse anschließen. Den Versuchsaufbau, bestehend aus einem Raspberry Pi und verschiedenen Schal-tungselementen auf einem angeschlossenen Experimentier-board, zeigt Abbildung 5.

@Override

public void startApp() {

Date date = new Date();

System.out.println("Hello Embedded World\n" + date);

}

sudo ./javame81/bin/usertest.sh

Listing 2: Embedded Hello World

Listing 1: Starten des AMS auf dem Raspberry Pi

Abb. 3: Java ME 8 Device Connection Manager

Abb. 4: I/O-Konfiguration des Raspberry Pi

JavaSPEKTRUM 5/201510

Schwerpunktthema

Software-seitig wird der Pin über den DeviceManager mit der open()-Methode zunächst geöffnet. Mit dem DeviceMana-ger lassen sich nicht nur analoge I/O-Pins, sondern – in Kennt-nis der jeweiligen Gerätehardware – verschiedene Gerätekonfi-gurationen ansprechen, zum Beispiel serielle Bussysteme. Auf dem Raspberry Pi öffnet DeviceManager.open(int) einen einzelnen Pin und gibt ein initialisiertes GPIO-Pin-Objekt zurück. Diese GPIO-Pin-Instanz kann jetzt über setValue(boolen) auf Hi (+5 V) oder Low (Masse) geschaltet werden (s. Listing 3).

Interessant ist auch der umgekehrte Weg, nämlich mit Java ME auf Schaltzustände von außen zu reagieren. Bei unserem Prototypen wird gemeldet, ob die Tür des Containers uner-laubt geöffnet wird, was auf eine Diebstahl hindeuten kann. Hierfür wird ein Magnetschalter verwendet, welcher mit dem GPIO-Pin 17 des Raspberry Pi verbunden ist.

Der Code für das Reagieren auf ein Pin-Event ist unwesent-lich schwieriger. Es wird nur eine zusätzliche Callback-Metho-de benötigt, welche entsprechend registriert werden muss. Für den Aufruf von DeviceManager.open() reicht dieses Mal die Adres-sierung eines Pins über einen Integer-Wert nicht aus. Stattdes-sen muss ein GPIOPinConfig-Objekt übergeben werden. Neben der Pin-ID wird hier die Flanke des Schaltvorgangs (High > Low, Low > High), hier TRIGGER_BOTH_EDGES für beide Schaltrich-tungen, mitgegeben. Es soll sowohl die steigende als auch die fallende Signalflanke, in unserem Anwendungsbeispiel dem-nach sowohl das Öffnen als auch das Schließen des Magnet-schalters, erkannt werden. Per setInputListener(this) registriert sich das Objekt selbst als Callback-Listener, was dazu führt, dass bei jedem Betätigen des Schalters die valueChanged()-Me-thode aufgerufen wird (s. Listing 4).

Eine Schnittstelle für komplexere Aufgaben: Der I2C-Bus

Neben den analogen I/O-Pins bietet der Raspberry Pi noch ei-ne Reihe von weiteren Schnittstellen an: Per Pulsmodulation können beispielsweise Spannungen geschaltet und Servomoto-ren angesteuert werden. Neben einem seriellen Ein- und Aus-gang (RX/TX) stehen mit SPI und I2C noch zwei weitere seriel-le Bussysteme zur Verfügung, die in der Embedded-Welt weit verbreitet sind. Wir werden den I2C-Bus nutzen, um unser An-wendungsbeispiel um einen BMP180-Sensor von Bosch zu er-gänzen, der Temperatur und Luftdruck messen kann.

Java ME 8 bringt für die Ansteuerung des I2C-Busses das jdk.dio.i2cbus-Paket mit. Dieses wird genutzt, um eine I2C-Geräte-konfiguration mit I2C-Busnummer (1), Adresse (0x077), Ad-ressgröße (7 Bit) und Übertragungsgeschwindigkeit (3,4 MHz) zu initialisieren (s. Listing 5). Über den DeviceManager öffnet man die Verbindung zum Mikrocontroller, um dann Komman-dos in bestimmte Register zu schreiben, beispielsweise dafür, die Ergebnisse der Temperatur- und Druckmessung aus be-stimmten Registern auszulesen.

Kommunikation mit der Außenwelt: RESTful Services

Unser Embedded-Gerät soll natürlich auch mit der Außenwelt kommunizieren können, wenn zum Beispiel bestimmte Tem-peraturbereiche verlassen werden oder ein Diebstahl vermu-tet wird.

Wenn wir von außen mit der Anwendung kommunizieren, Java ME also den Server darstellt, muss man auf einfache Protokolle, wie TCP oder UDP, zurückgreifen. Man kann das Paket javax.microedition.io nutzen, um einen Server-Socket für eine Socket-Verbindung bereitzustellen.

Agiert die Java ME-Anwendung als Client, stehen auch hö-herwertige Protokolle zur Verfügung. In unserem Beispiel nut-zen wir den HTTP-Client des Pakets com.oracle.httpclient, um ei-nen RESTful Service aufzurufen und diesem per HTTP-PUT-Me-thode die aktuelle Temperatur von 22.9°C als URL-Parameter zu übergeben. Neben RESTful Services und JSON-Datenformat unterstützt Java ME als Client alternativ auch SOAP-Services und XML.

HttpClientBuilder clientBuilder = HttpClientBuilder.getInstance();

HttpClient client = clientBuilder.addConnectionOptions(

new ConnectionOption<>("Timeout", 1000)).build();

HttpRequest request =

client.build("http://server:port/...?temp=22.9) 5

i2cBus = 1; // default I2C busint serialClock = 3400000; // default clock 3.4MHz Max clockint addressSizeBits = 7; // default addressint address = 0x77; // I2C device addressfinal int registrySize = 1;// Initialize Device ConfigurationI2CDeviceConfig config = new I2CDeviceConfig( i2cBus, address, addressSizeBits, serialClock);// Open Device ConnectionI2CDevice myBmp180 = DeviceManager.open(config);...// Write Command to Device RegistrymyBmp180.write(registry, registrySize, command);...// Read Result from Device Registryresult = myBmp180.read(registry, registrySize, byteToRead);

public class GPIOSwitch implements PinListener { private int switchPortID = 0; private int switchPinID = 17; private GPIOPin doorContact;

public void start() throws IOException, DeviceNotFoundException { GPIOPinConfig config = new GPIOPinConfig(switchPortID, switchPinID, GPIOPinConfig.DIR_INPUT_ONLY, DeviceConfig.DEFAULT, GPIOPinConfig.TRIGGER_BOTH_EDGES, false); doorContact = (GPIOPin) DeviceManager.open(config); switchPin.setInputListener(this); } public void stop() throws IOException { if (switchPin != null) { switchPin.close(); } } @Override public void valueChanged(PinEvent event) { GPIOPin pin = (GPIOPin) event.getDevice(); if (pin == doorContact) { if (pin.getValue() == false) { System.out.println("* Door opened *"); } } }}

GPIOPin myLED = DeviceManager.open(23);

// LED einschalten

myLED.setValue(true);

...

// LED ausschalten

myLED.setValue(false);

...

myLED.close();

Listing 5: I2C-Schnittstellenprogrammierung mit Java ME 8

Listing 4: Auswerten von Schaltzuständen per Callback-Methode

Listing 3: LEDs über GPIO ansteuern

JavaSPEKTRUM 5/2015

* Preisvorteil bei 12 Monaten Mindestvertragslaufzeit: 1&1 Hosting Unlimited 6 Monate für 0,– €/Monat, danach 9,99 €/Monat. 1&1 Starter 3 Monate 0,– €/Monat, danach3,99 €/Monat. 14,90 € Einrichtungsgebühr. Preise inkl. MwSt. Rubik‘s Cube® used by permission of Rubik‘s Brand Ltd. 1&1 Internet SE, Elgendorfer Straße 57, 56410 Montabaur.

DOMAINS | MAIL | HOSTING | E-SHOPS | SERVER

100 % Leistung■ Unlimited Webspace■ Unlimited Websites■ Unlimited Traffi c■ Unlimited E-Mail Accounts■ NEU: Unlimited MySQL Datenbanken jetzt auf SSD!■ Unlimited Domains (3 inklusive)

100 % Verfügbar■ Georedundanz und tägliches Backup■ 1&1 CDN■ 1&1 SiteLock Basic■ 24/7 Support

100 % Individuell■ 1&1 Click & Build Applikationen

wie WordPress und Joomla!®

■ 1&1 Mobile Sitebuilder■ NEU: NetObjects Fusion 2015 1&1 Edition

Know-how und Begeisterung. Über 25 Jahre Erfahrung. 5 Hochleistungs-Rechenzentren. Mehr als 12 Mio. Kundenverträge. 8.000 Spezialisten in 10 Ländern. Wir leben das Internet und geben immer 100 % für Ihre Webprojekte! Darum sind wir für Sie der richtige Partner.

FÜR IHRE WEB-PROJEKTE 6 MONATE

0,–9,99€/Monatdanach 9,99 €/Monat*

1und1.info

Internetmade in Germany

DE: 02602 / 96 91 AT: 0800 / 100 668

TEST30 TAGEAUSPROBIEREN1 MONAT

VERTRAGS-LAUFZEIT1 ANRUF

EXPERTEN-RAT1

100 %210x297

MySQL Datenbanken jetzt auf SSD!

MADE1509C1P_1-1-WH_210x297+5_46L.indd 1 19.08.15 10:47

Schwerpunktthema

Eine Demonstration des Prototypen haben wir in You- Tube eingestellt. Diese ist über die URL https://www.youtube.com/watch?v=WBmZnOoRWhI abrufbar.

Fazit und Ausblick

Der Einstieg in die Embedded-Entwicklung mit Java ist nicht schwer. Das Framework Java ME bietet sowohl erfahrenen Ja-va-Entwicklern als auch Neulingen komfortable Möglichkei-ten, mit wenigen Zeilen Java-Code die verschiedensten Res-sourcen, wie Sensoren und Mikrocontroller, in IoT-Projekte einbinden zu können. Prototypische Implementierungen las-sen sich so in kürzester Zeit realisieren und ausprobieren.

In umfassenden IoT-Projekten stellt Java ME die Edge-Tech-nologie dar, übernimmt auf intelligenten Geräten jeder Größe und unter Nutzung der jeweils spezifischen Geräteeigenschaf-ten das dezentrale, autonome Akquirieren und die Vorverar-beitung von Sensordaten aller Art.

Oft folgen aus Architektursicht Gateway-Geräte. Dies sind leistungsfähigere Embedded-Systeme, wie Industrie-PCs. Hier stehen mit Java SE und Java SE Embedded ebenfalls die pas-senden und gegebenenfalls modularen Java-Versionen zur Ver-fügung. Sie übernehmen die dezentrale Kommunikation mit den lokalen Sensorsystemen und transportieren die relevanten Sensordaten auf sicherem Wege in das zentrale Rechenzent-rum. Java SE enthält zum Beispiel eine Embedded Java DB für die lokale Datenverwaltung und Auswertung mit SQL. Auch das Oracle Event Processing lässt sich mit Java SE Embedded betreiben. So kann komplexe Entscheidungslogik auf den ein-gehenden Datenströmen grafisch modelliert und abgebildet werden. Ein typischer Einsatzbereich von Event Processing ist die Filterung und Vorverdichtung von Gerätedaten, die dafür sorgt, dass nur wirklich relevante Daten im Bedarfsfall über si-chere Transportkanäle an zentrale Systeme übertragen werden.

Dem Trend zum Cloud-Computing folgend, werden PaaS-Lösungen für die Verarbeitung und Analyse von IoT-Daten in Kürze auf dem Markt erscheinen. Eines der ersten Angebote wird der Oracle Internet of Things Cloud Service [OraIoT] sein, der den Aufbau einer umfassenden und sicheren IoT-Lösung massiv vereinfacht und beschleunigt, unabhängig davon, ob Java oder proprietäre, hardwarenahe Programmierungen als Edge-Technologie eingesetzt wird.

Für alle, die nun tiefer in Java ME 8 einsteigen wollen, bie-tet Oracle ein kostenloses Online-Training an [JMEOT]. Dieses

führt über Trainingsvideos und praktische Beispiele in alle Be-reiche einer IoT-Entwicklung ein. So lässt sich innerhalb weni-ger Tage das Know-how aufbauen, um eigene Projekte mit Java ME 8 realisieren zu können.

Literatur und Links

[IMLET] E. Giguere, The Information Module Profile (IMlets/MIDlets), 2004, http://www.oracle.com/technetwork/systems/index-156293.html

[JMEOT] Java ME online Training, https://apexapps.oracle.com/pls/apex/f?p=44785:141:108459692550218::

NO:141:P141_PAGE_ID,P141_SECTION_ID:144,1031

[OraIoT] Internet of Things, Oracle Cloud Service, https://cloud.oracle.com/iot

[OTNME8] Java ME SDK und IDE, Plug-ins, http://www.oracle.com/technetwork/java/embedded/javame/embed-me/downloads/index.html

[OTNSDK] Java ME SDK und IDE, Plug-ins, http://www.oracle.com/technetwork/java/embedded/javame/javame-sdk/

downloads/javamesdkdownloads-2166598.html

[PLUG] Installation NetBeans, Plug-in, http://docs.oracle.com/javame/8.1/sdk-dev-guide/install.htm#A1147985

[WikiLA] Lambda architecture, http://en.wikipedia.org/wiki/Lambda_architecture

.setMethod(HttpMethod.PUT).build();

HttpResponse response=request.invoke();

...

response.close();

Listing 6: REST-Client in Java ME 8

Marcel Amende ist Senior Leitender Systembera-ter bei der Oracle B.V. & Co. KG. Als Produktexperte in der Oracle Business Unit Middleware unterstützt Marcel Amende Kunden und Partner bei der Erstellung von IT-Architekturen und der Durchführung von Machbarkeitsnachweisen (PoCs). Durch seine Aus-bildung als Dipl.-Ing. der Elektrotechnik kann er IoT-Komplettlösungen von Hard- bis Software gestalten. E-Mail: [email protected]

Dipl.-Inform. Arne Brüning ist Senior Leitender Systemberater bei der Oracle B.V. & Co. KG. Er hat ressourcensparende Programmierung bereits auf Heim- computern gelernt und nutzt Java seit den Beta-Versi-onen Mitte der 90-er in professionellen Projekten. Im Oracle Server Technologies Customer Center (STCC) unterstützt Arne Brüning Kunden und Partner bei der Erstellung von Lösungsarchitekturen. E-Mail: [email protected]

Testen Sie – die Fachzeitschrift für Software-Engineering und -Management –

für 2 Ausgaben. Mehr dazu unter

http://www.sigs-datacom.de/fachzeitschriften/abonnement-probeheft.html