Java für Embedded Systems Marc Balmer, micro systems marc@msys.ch 25. April 2001
Java-fähige Embedded Systems Palm PDA TINI Board Java-Ring ibutton Cyberflex Smart Card...
Embedded Systems Steuer- und Kontrollrechner, z.b.: Datenerfassung Billetautomat Einspritzsteuerung für Benzinmotoren Consumer Produkte, z.b.: Handy PDA
Speicher Wenige Bytes bis einige Megabytes (typ. 4-8 MB) Keine externen Speicher wie Festplatten Flash-ROM
Rechnerleistung Langsame Prozessoren, 20 MHz Taktfrequenz ist bereits komfortabel Prozessor wird oft in einen stromsparenden Sleepmode versetzt
User Interface Limitiertes oder gar kein User Interface Anforderungen Absolute Zuverlässigkeit Vernünftige Antwortzeiten (der Fokus eines Benutzers ist u.u. ganz auf das Gerät gerichtet)
Java aus Embedded Systems Sicht
Die virtuelle Maschine: Ein stack-basierter Rechner ohne Register Einfach zu implementieren Programme werden grösser und langsamer Instruktionen und implizite Instruktionen sind von Bedeutung
Java Classfiles Portables Binärformat Enthät Bytecodes uns symbolische Information Big-Endian Gut komprimierbar
Warum ist Java langsam? Nicht weil Java interpretiert ist, sondern wegen Eigenschaften der Java Umgebung an und für sich: Keine Pointer Viele Laufzeitüberprüfungen Sicherheitsüberprüfung des Bytecode Synchronisation Symbolische Namensauflösung Langsame Array-Initialisierung
Garbage Collection Vorteile Objekte werden nie zu früh dealloziert Objekte werden automatisch dealloziert Nachteile Garbage Collection benötigt Rechenzeit Keine Kontrolle über die Speicherallokation (nur ein Heap) Objekte werden evt. gar nie freigegeben, es keine Regeln für die Garbage Collection
Programmierstrategien Rechenintensive Aufgaben auf den Server verlegen Anwendungen vereinfachen Kleinere Anwendungen schreiben Weniger Speicher verwenden Auf Performanz hin programmieren Das Modell separieren (Model/View/Controller-Paradigma)
Die Java 2 Micro Edition Eine neue virtuelle Maschine J2SE Die Classic VM Die HotSpot VM J2ME Die Classic VM für 32-Bit Rechner mit viel Speicher Die Kuaui VM (KVM) für 16- und 32-Bit Rechner mit wenig Speicher
Neue und veränderte Klassen Reengineering bestehender Klassen Neue Klassen für Embedded Systems
Konfigurationen Die Connected Limited Device Configuration Volle Sprachumfang mit Ausnahmen Vollständige JVM mit Ausnahmen Die Connected Device Configuration Vollständiger Java Support plus alle CLDC Klassen
Profile Anwendungspezifische Klassen innerhalb einer Konfiguration MID Profile Mobile Information Device Support für HTTP etc.
Die KVM Long Integer und Floating Point Unterstützung ist optional Keine Object Finalization Kein JNI Bytecode pre-verification ausserhalb der VM Multidimensionale Arrays sind optional Keine Benutzerdefinierten Klassenlader
Schlussfolgerung Java kann für Embedded Systems zum jetzigen Zeitpunkt (2001) nicht sinnvoll eingesetzt werden Die Java Technologie für Embedded Systems ist unausgereift, zu langsam, zu Speicherintensiv Java ist für Embedded Systems der falsche Ansatz Using Java for embedded systems means to live on the bleeding edge. And it s not called the bleeding edge for nothing.