© Spirit Boom Cat/Shutterstock.com
Java am Microcontroller mit MicroEJ – Teil 3

Steuerelement in ganz klein


Die Anzeige von Grafiken und die Realisierung von Steuerungsalgorithmen sind zwei Aufgaben, für die Schlomo Normalentwickler normalerweise nicht auf Java zurückgreifen muss – das Anzeigen eines grundlegenden Liniendiagramm bekommt man normalerweise auch in einem Framebuffer gerendert.

Der permanente und immense Erfolg von MicroEJ im Embedded-Bereich zeigt, dass Embedded-Entwickler auch Bedarf an anderen Anwendungen haben. In den beiden letzten Teilen der Serie haben wir unsere MicroEJ Runtime auf dem STM32 zum Laufen gebracht. In diesem Artikel wollen wir damit beginnen, die einzigartigen Stärken dieses Entwicklungssystems produktiv für uns einzuspannen.

Exkurs: Vom Java-Update

Nur wenige Ärgernisse im Leben des Entwicklers sind so konstant wie regelmäßige Updates der JVM – das ist allerdings auch nur allzu logisch, ist die JVM doch weit verbreitet und ein dementsprechend lohnendes Angriffsziel für regierungsnahe und sonstige Hacker.

MicroEJ-Entwickler leiden unter den permanenten JVM-Updates insofern besonders, als die MicroEJ-Arbeitsumgebung im Rahmen ihrer Installation den Pfad der gerade aktuellen JVM festlegt. Im Rahmen eines Updates verändert sich dieser allerdings, was zum in Abbildung 1 gezeigten Fehlerbild führt.

hanna_microej_3_1.tif_fmt1.jpgAbb. 1: Obwohl das Java-Kommandozeilenwerkzeug zur Verfügung steht, scheitert der Start von MicroEJ

Zur Lösung des Problems müssen wir im ersten Schritt den Pfad C:\Program Files (x86)\MicroEJ\Micro-EJ-SDK-19.05\rcp im Windows Explorer öffnen und danach die Datei MicroEJ-SDK.ini beispielsweise in Notepad laden. An ihrem Beginn findet sich ein nach folgendem Schema aufgebauter Block, der die für die Ausführung von MicroEJ zu verwendende JVM eindeutig festgelegt:

-vm C:\Program Files\Java\jre1.8.0_251\bin -startup . . .

An dieser Stelle folgt, was folgen muss. Suchen Sie im ersten Schritt nach dem Pfad, der auf Ihrer Workstation die JVM enthält – am Rechner des Autors lautete er C: \ Program Files\Java\jre1.8.0_261. Adjustieren Sie den in der Datei befindlichen Pfad danach und speichern Sie diese. Ab diesem Zeitpunkt sollte die Programmausführung wieder wie gewohnt verlaufen.

Verschiedene Herangehensweisen

In der Einleitung hatten wir uns schon über die direkte Manipulation des Framebuffers unterhalten. Für kleinere Aufgaben ist diese Vorgehensweise durchaus legitim – das MicroEJ-Entwicklerteam bietet unter [1] sogar recht umfangreiche Instruktionen an, die die Realisierung von fortgeschrittenen Framebuffer-Grafiken beschreiben.

In der Praxis kommt man als Entwickler allerdings bald an einen Punkt, an dem man sich klassische Steuerelemente – denken Sie an Knöpfe, Kleider und die seit dem iPhone unvergesslichen Toggleswitches – wünscht. Die manuelle Realisierung ebendieser Widgets in einem Framebuffer ist eine Aufgabe, die schnell in Arbeit ausartet – glauben Sie das dem Autor, der schon mehr als nur einen Embedded-GUI-Stack programmiert hat.

Wo ein GUI-Stack ist, sind Schriftarten und andere speicherplatzfressende Ressourcen meist nicht fern. MicroEJ begegnet diesem Problem dadurch, dass der Stack eine Gruppe verschiedener Betriebsarten kennt, die das Abwägen der verschiedenen Ressourcenverbräuche erlaubt. Haben Sie beispielsweise Rechenleistung über, müssen aber im Bereich des Remanentspeichers sparen, so bietet sich die „dynamische Generation“ von Inhalten an. Aus dieser grundlegenden Überlegung folgt, dass der MicroEJ-GUI-Stack Dutzende von Stellschrauben mitbringt.

Da das komplett manuelle Erzeugen eines Beispiels, das all diese Methoden gleichermaßen demonstriert, den Rahmen dieses Artikels sprengen würde, wollen wir stattdessen auf das unter [2] bereitstehende vorgefertigte Projektskelett zurückgreifen. Nutzen Sie die in GitHub enthalten Option zum Herunterladen eines fertigen Archivs, und extrahieren Sie es in einen bequem zugänglichen Ort des Dateisystems. Der Autor arbeitet in den folgenden Schritten mit dem Pfad C:\ Users\tamha\Downloads\Demo-Widget-master-sus.

Als Nächstes folgt die Option File | Open Projects from file system, um MicroEJ zum Import zu animieren. Entscheiden Sie sich – wie in Abbildung 2 gezeigt – nur für eines der beiden Projektskelette.

hanna_microej_3_2.tif_fmt1.jpgAbb. 2: Die korrekte Projektauswahl will gelernt sein

Nach dem erfolgreichen Import ist die MicroEJ-Arbeitsumgebung um die Projektmappe com.microej.demo.widget reicher. Klicken Sie sie rechts an und wählen Sie im Kontextmenü die Option Run As | MicroEJ Application. MicroEJ fordert Sie an dieser Stelle noch zur Auswahl eines Einsprungpunkts auf, wir entscheiden uns für die Option Java Application | WidgetsDemo.

Je nach Konfiguration des Projekts startet dann entweder der Simulator oder das reale Board. Wichtig ist, dass wir das in Abbildung 3 gezeigte Einsprungpunktmenü am Bildschirm vorfinden.

hanna_microej_3_3.tif_fmt1.jpgAbb. 3: Das MicroEJ-Widget-Auswahlmenü ist einsatzbereit

Eine Frage der Bibliothek

Wir hatten in den beiden letzten Teilen schon festgestellt, dass das MicroEJ Framework hochmodular ist – witzigerweise findet sich beim Chiphersteller NXP unter [3] die brauchbarste Auflistung der Bibliotheken, die zur Verfügung stehen...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang