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