Wikipedia · einfach zusammengefasst · Stand
Embedded Java
Embedded Java ist in der Informatik eine auf den Einsatz in eingebetteten Umgebungen zugeschnittene Distribution der Java-Laufzeitumgebung.
Inhalt5 Abschnitte
Definition und technische Grundlage
Embedded Java ist eine auf eingebettete Umgebungen zugeschnittene Distribution der Java-Laufzeitumgebung. Eingebettete Systeme sind technische Geräte, in denen Software eine bestimmte Gerätefunktion erfüllt. Ziel von Embedded Java ist es, Java auch unter begrenzten Speicher- und Rechenressourcen sowie mit hohen Anforderungen an Zuverlässigkeit und Portabilität einzusetzen.
Mit Java 8 wurden kompakte Profile („Compact Profiles“) eingeführt. Sie stellen unterschiedlich umfangreiche Teilmengen des Java-API bereit: „compact1“, „compact2“ und „compact3“. Java 9 ermöglicht durch Modularisierung zusätzlich die Erstellung einer reduzierten und an den jeweiligen Einsatzzweck angepassten Java-Laufzeitumgebung.
Entwicklung der Einsatzgebiete
Java wurde ursprünglich für eingebettete Umgebungen konzipiert. In den 1990er Jahren gehörten dazu Internet-Browser, Settop-Boxen und Mobiltelefone der zweiten Generation. Seit Ende der 1990er Jahre setzte sich Java jedoch vorwiegend im Serverbetrieb durch. Für eingebettete Lösungen war eine optimierte Form der Java Virtual Machine vorgesehen, die Java Micro Edition (J2ME).
Heutige eingebettete Lösungen auf Java-Basis beruhen auf der Java Standard Edition. Sie werden vorwiegend in Geräteklassen mit 32-bit-CPUs, mindestens 500 MHz und mindestens 128 MB Speicher eingesetzt. Ein Gerät mit solchen Eigenschaften wäre in den 1990er Jahren als Industrie-PC bezeichnet worden.
Anforderungen eingebetteter Systeme
Eine geeignete Betriebssystem-/Laufzeitumgebung muss mehrere Anforderungen erfüllen:
- Das Laufzeitverhalten soll berechenbar und die Lösung sehr zuverlässig sein. Dies wird meist durch ein RTOS, also ein Echtzeitbetriebssystem, unterstützt.
- Die Gesamtlösung soll über lange Zeit stabil und verfügbar bleiben, ohne dass das System neu gestartet werden muss.
- Komponenten sollen wiederverwendbar sein, häufig mithilfe einer geeigneten Programmiersprache.
- Softwarekomponenten sollen möglichst portabel sein, also auf unterschiedlichen Zielsystemen eingesetzt werden können.
- Die Software soll auf herkömmlichen PCs vorentwickelt werden können, meist durch Simulation.
- Für das Debugging, also die Fehlersuche, sollen Schnittstellen auf dem Zielgerät vorhanden sein.
Java in eingebetteten Anwendungen
Java besitzt in seiner aus Enterprise-Lösungen (J2EE) und Desktop-Anwendungen (J2SE) bekannten Grundform nicht die notwendigen ressourcenschonenden Eigenschaften für eingebettete Systeme. Es gibt jedoch hochoptimierte JVMs anderer Anbieter. Eine JVM (Java Virtual Machine) führt Java-Programme aus; diese Varianten sind speziell auf die Speicher- und Rechenzeitanforderungen eingebetteter Systeme abgestimmt und werden im Zusammenhang mit J2ME eingesetzt.
Ein Vorteil bleibt, dass die Anwendungen weiterhin auf Desktop-Computern entwickelt werden können. Dadurch wird das Prototyping, also die Entwicklung und Erprobung erster funktionsfähiger Versionen, vereinfacht. Dies begünstigt eine kürzere Time-to-Market und damit eine schnellere Markteinführung innovativer Produktideen.
Häufig werden Java und OSGi kombiniert. OSGi schafft eine dynamische, service-orientierte Laufzeitumgebung, in der Funktionen als Dienste organisiert und zur Laufzeit verwaltet werden können. Diese Umgebung kann gemeinsam mit nativen Anwendungen eingesetzt werden.
Typische Beispiele
Zu den im Artikel genannten Embedded-Java-Anwendungen ohne OSGi gehören kompakte Mobiltelefone der zweiten Generation aus der Zeit von etwa 1998 bis 2010. Fast alle waren in der Lage, CLDC-basierte Java-Anwendungen auf MIDP-Basis auszuführen. CLDC (Connected Limited Device Configuration) bezeichnet dabei eine auf Geräte mit begrenzten Ressourcen zugeschnittene Java-Konfiguration; MIDP (Mobile Information Device Profile) ist ein Profil für mobile Geräte. Solche Anwendungen werden auch als MIDlets bezeichnet.
Ein weiteres Beispiel ist NanoVM, eine Java-Lösung für Atmel-AVR-Mikrocontroller.