Java für Embedded Systems Marc Balmer, marc@msys.ch Marc Balmer, micro systems marc@msys.ch 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, marc@msys.ch Java-fähige Embedded Systems Java für Embedded Systems • PDA • Handy Marc Balmer, marc@msys.ch 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, marc@msys.ch Keine externen Speicher wie Festplatten Wenige Bytes bis einige Megabytes (typ. 4- 8 MB) Speicher Java für Embedded Systems Marc Balmer, marc@msys.ch Prozessor wird oft in einen stromsparenden Sleepmode versetzt Langsame Prozessoren, 20 MHz Taktfrequenz ist bereits komfortabel Rechnerleistung Java für Embedded Systems Marc Balmer, marc@msys.ch 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, marc@msys.ch Java aus Embedded Systems Sicht Java für Embedded Systems Marc Balmer, marc@msys.ch • 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, marc@msys.ch • 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, marc@msys.ch • 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, marc@msys.ch 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, marc@msys.ch • 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, marc@msys.ch • 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, marc@msys.ch Neue Klassen für Embedded Systems Reengineering bestehender Klassen Neue und veränderte Klassen Java für Embedded Systems Marc Balmer, marc@msys.ch 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, marc@msys.ch Anwendungspezifische Klassen innerhalb einer Konfiguration Profile Java für Embedded Systems Marc Balmer, marc@msys.ch 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, marc@msys.ch “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