Softwareentwicklung und Architektur / 12.05.2021 / Holger Tiemeyer

IoT-Anwendungen mit Architektur-Modularisierung

Flexibilität und Modularität sind zwei wichtige Merkmale moderner Softwarearchitekturen. Anstelle eines großen, in sich geschlossenen Monolithen bestehen sie aus dezentralen Einzelbausteinen. Diese lassen sich nach Bedarf austauschen oder auch neu kombinieren, um die Anwendungen und Funktionalitäten des Systems dynamisch zu verwalten. Die vorliegende Artikelserie beschreibt, wie sich Flexibilität in Java-Softwarearchitekturen erreichen lässt. Der dritte Teil beschreibt hierfür Anwendungsszenarien im Bereich Internet of Things (IoT).     

Input-Konflikte durch parallele Eingaben eines Benutzers über die Maus und die Tastatur oder andere periphere Geräte sind seit Jahren in Betriebssystemen gelöste Probleme. Heutzutage werden jedoch immer komplexere IoT-Geräte entworfen, welche durch die Anbindung zusätzlicher Hardwarekomponenten deutlich mehr Benutzerinteraktionen bereitstellen und die jeweiligen Eingaben korrekt und möglichst performant verarbeiten müssen. Da diese zusätzlichen Interaktionsmöglichkeiten zumeist von den geschäftlichen Anforderungen an das jeweilige IoT-Gerät definiert werden, können sie nicht auf eine Standardverarbeitung heruntergebrochen werden.

Java bewahrt seine Stärken auch im IoT-Umfeld

Das IoT wächst durch die Verbindung einer stetig zunehmenden Anzahl an Sensoren und mit Mikroprozessoren ausgestatteten Geräte über das Internet zu einem gigantischen Netzwerk, das keinerlei geographischen Grenzen unterliegt. Dabei durchdringt es die Industrie, Forschung, aber auch das alltägliche Leben der Menschen und bietet vollkommen neue Möglichkeiten –beispielsweise im medizinischen Sektor durch vollständig integrierte Labordiagnostik-Geräte.

Zugleich steigt mit der zunehmenden Vernetzung auch die Komplexität der IoT-Architekturen: Es müssen Kommunikationsmöglichkeiten für die unterschiedlichen Sensoren und Geräte geschaffen und die enormen Datenströme zielgerichtet verarbeitet werden. Diese Komplexität zu beherrschen stellt bis heute eine der größten Herausforderungen in Bezug auf das IoT dar.

Gerade mit Hochsprachen wie Java können diese Anforderungen dabei möglichst plattform- und hardwareunabhängig implementiert und die Anwendungen oder Module dementsprechend einfach auf die verschiedenen Endgeräte übertragen werden. Hinzukommend müssen die Geräte einfach über das Internet wartbar und hoch skalierbar sein und zudem Möglichkeiten zur Schaffung geeigneter Sicherheitsmechanismen mit sich bringen.

Zugleich ist Java aber natürlich nicht nur auf der Geräteebene zur Umsetzung fachlicher Anforderungen geeignet. So integriert sich ein IoT-Gerät in eine umfangreiche, komplexe Umgebung von Geschäftsanwendungen: Prozesssteuerungen, Auswertungen, Monitoring, Wartung, Updates und die externe Steuerung von Geräteclustern stellen eine Auswahl der Geschäftsanwendungen, in die sich IoT-Geräte integrieren, dar.

Insbesondere in der industriellen Fertigung besteht die Herausforderung, flexibel auf Geräteneuerungen oder Änderungen von Zulieferern zu reagieren. So kann es passieren, dass zum Beispiel ein Touch-Display, ein USB-Anschluss, oder weitere in einem IoT-Gerät verbaute Hardwarekomponenten nicht mehr hergestellt werden oder in einer neueren Version mit erweiterten Möglichkeiten geliefert werden.

Fazit: Modularisierungsansätze in Java ermöglichen flexible Architekturen

Durch eine geschickte Verwendung von Modularisierungsansätzen in Java lassen sich flexible Umsetzungsmöglichkeiten auf der Java-Mikroarchitekturebene erreichen. Insbesondere das dynamische Komponentenmodell OSGi scheint sehr gut geeignet, der einfachen Abstraktion und Implementierung der Services einen sehr hohen Grad an Flexibilität zur Verfügung zu stellen. Dennoch benötigt der OSGi-Ansatz eine entsprechende Laufzeitumgebung, die auf der JVM aufsetzt.

Ein besonderer Vorteil ergibt sich in der Verwendung von OSGi in IoT-Anwendungen, weil die Referenzimplementierungen der OSGi-Spezifikation bereits Implementierungen für unterschiedlichste Sensoren und Devices mitbringt. Dies spiegelt sich auch in einer stetig steigenden Anzahl an auf OSGi-aufbauenden IoT-Frameworks wider, die zum großen Teil auch als Open-Source Projekte entwickelt werden. Interessant ist die Kombination des Java 9-Modulsystems mit OSGi, um die Vorteile der Sichtbarkeit auf innere Klassen von Bundles aktiv auszunutzen.

 

Eine ausführliche Version dieses Artikels mit praxisnahen Implementierungen und Codebeispielen wird voraussichtlich in Ausgabe 03-2021 der Fachzeitschrift Java aktuell erscheinen.

Einblicke

Shaping the future with our clients