Überblick über Java-Umgebungen auf Embedded-Plattformen



Ähnliche Dokumente
Java für Embedded Systems

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Einführung zu den Übungen aus Softwareentwicklung 1

Usability-Test für mobile Java-Anwendungen

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Gforth EC auf dem NXT Brick

Java Entwicklung für Embedded Devices Best & Worst Practices!

1. Java Grundbegriffe

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Debugging mit uclinux auf ARM-Prozessoren

Vom Smart Dust zum Smart Phone: Verfügbare SensingPlattformen. Adrian Friedli

Diplomarbeit Antrittsvortrag

Java-Bytecode-Prozessor SHAP

Software-basierter Speicherschutz durch spezialisierte Java-VMs auf Mikrocontrollersystemen

0. Einführung. C und C++ (CPP)

Embedded Linux. Embedded Linux. Daniel Buchheim Seminar "Eingebettete drahtlose Systeme"

Anpassung einer freien SSL/TLS Implementierung an die Kertasarie VM

Java für C++ Programmierer

Vorkurs Informatik WiSe 15/16

Entwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik

Implementierung der Jikes Research Virtual Machine

J.6 Programmierung eingebetteter Systeme

Einsatz von Java-fähigen GPRS-Terminals

Optimierung der Code-Generierung virtualisierender Ausführungsumgebungen zur Erzielung deterministischer Ausführungszeiten

JAVA. Ein kurzer Überblick. Thomas Karp

Effiziente Java Programmierung

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

JavaIDS Intrusion Detection für die Java Laufzeitumgebung

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Programmieren I. Überblick. Institut für Angewandte Informatik

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Systemanforderungen Verlage & Akzidenzdruck

360.NET. Jan Schenk Developer Evangelist Web/Live Microsoft Deutschland

JAVA als erste Programmiersprache Semesterkurs

Meine SPS kann Linux, und nun?

Programmierung mobiler Kleingeräte

Mobile Betriebsysteme

NetBeans Installation für Handy-Programmierung

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Die Eclipse Rich Client Platform. Martin Lippert Consultant und Coach

Sonderpraktikum Home Automation 2010

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework

Stefan Schmidt 28. Mai 2006

Übung Softwareentwicklung 1, WS0910 Gemeinsame Einführung

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE

GameGrid mit BlueJ Seite 1

Energieeffiziente Empfänger in Sensornetzwerken

Java Micro Edition. Entwicklung mobiler JavaME-Anwendungen mit CLDC und MIDP. von Klaus D. Schmatz. 2., aktualis. u. erw. Aufl.

Microsoft.NET Gadgeteer: Ein raffinierter Weg zum Embedded-Produkt. ECC 2013 Marcel Berger

Einführung in JAVA. Viele Höhen und Tiefen Java war schon einmal nahezu tot. Heute extrem weit verbreitet vom Supercomputer bis hin zum Handy.

Heiko Bobzin Poet Software GmbH

Die Linux Kernel Virtual Machine - Wo steht der Linux Hypervisor? 2. März 2008

Cross-Platform Mobile mit.net

OpenBeacon Proximity - 2.4GHz RFID - 4. Wildauer Symposium RFID und Medien

E-Business Architekturen

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Programmieren I. Überblick. Institut für Angewandte Informatik

Einführung in Betriebssysteme

Walkabout: Location Based Services mit Android und dem Google Phone

Vortrag zur Diplomarbeit

Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Open Source IDE - eclipse ETIS SS04

Einführung in PHP. (mit Aufgaben)

Smartphone Entwicklung mit Android und Java

Portierung eines geeigneten LZ-basierten Kompressors auf LegUp-HLS

2008 Jiri Spale, Programmierung in eingebetteten Systemen 1

Virtuelle Maschinen. von Markus Köbele

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Perceptive Document Composition

Wine - Windows unter Linux

Methoden zur Visualisierung von ereignisdiskreten Analysedaten

C++ mit Eclipse & GCC unter Windows

Proseminar Technische Informatik A survey of virtualization technologies

Mikrocontroller Grundlagen. Markus Koch April 2011

Übersicht aktueller heterogener FPGA-SOCs

Macher Solutions Produktinformation SAP Crystal Reports 2011

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Teilprojekt 3 Systemsoftware (Middleware)

Verteidigung Masterarbeit Evaluating the Use of a Web Browser to Unify GUI Development for IDE Plug-ins

Objektorientierte Softwareentwicklung SoSe 15

USB-Driver: Download-Link:

Implementierung eines M2M Back-end Servers

5. Programmierschnittstellen für XML

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

Analyse verschiedener HLS-Systeme in Hinblick auf ihren Umgang mit der Hochsprachenabstraktion Speicher. Sascha Kath

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

A1 Desktop Security Installationshilfe. Symantec Endpoint Protection 12.1 für Windows/Mac

4D Server v12 64-bit Version BETA VERSION

Installationsanleitung. ipoint - Server

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Entwicklung eines Mac OS X Treibers für eine PCI-VME Interface Karte

Die Integration zukünftiger In-Car Multimedia Systeme unter Verwendung von Virtualisierung und Multi-Core Plattformen

Java Einführung Programmcode

Transkript:

Fakultät Informatik, Institut für Angewandte Informatik, Professur Technische Informationssysteme Überblick über Java-Umgebungen auf Tony Müller Dresden, 12.12.2011

Inhalt 1 Einleitung 2 Java-Plattform 3 Java ME 4 Bytecode-Abarbeitung 5 Beispiele: - Kertasarie VM - Sun SPOT - LeJOS - GCJ - SHAP 6 Zusammenfassung Folie 2 von 15

Einleitung Motivation Warum Java in eingebetteten System einsetzen? Vorteile von Java objektorientiert, wiederverwendbar plattformunabhängig keine Zeigerarithmetik (Sicherheit) automatische Speicherverwaltung (Garbage Collection) umfangreiche Klassenbibliotheken Probleme und Hindernisse nicht echtzeitfähig (keine Sprachelemente für Echtzeit, nichtvorhersagbares Verhalten des Garbage Collectors) langsamer als C/C++ hoher Speicherverbrauch (VM, JIT-Compiler, Garbage Collector) kein direkter Hardwarezugriff Folie 3 von 15

Java-Plattform verschiedene Geräteklassen Unterteilung in Editionen, Konfigurationen, Profile Unterschiede in Sprachumfang, API-Spezifikation, JVM Funktionalität vs. Geschwindigkeit vs. Speicherbedarf [1] Folie 4 von 15

Java Micro Edition HW-Anforderungen CDC (Connected Device Configuration) 32-Bit Prozessor, 2 MB RAM, 2,5 MB ROM CLDC (Connected Limited Device Configuration) 16/32-Bit Prozessor, 32 KB RAM, 160 KB ROM VM-Referenz CVM von Sun KVM von Sun Eigenschaften kaum Einschränkungen Reflection und Serialisierung vorhanden aber keine RMI-API optionale Pakete keine GUI-API Profile keine selbstdefinierten Classloader, kein Reflection, keine Serialisierung kein RMI kein Java Native Interface (JNI) eingeschränkte Collection-API (nur Vector, Stack, Hashtable, Enumeration) Generic Connection Framework (GCF) für Kommunikation keine GUI-Klassen Profile Profile Foundation Profile Personal Basis Profile Personal Profile Mobile Information Device Profile GUI-API (kein AWT/Swing) MIDlets Information Module Profile TU Dresden, 28.11.2011 embedded Plattformen Folie 5 von 15

Bytecode-Abarbeitung Bytecode-Verarbeitung Hardware Software direkte Bytecode- Ausführung Hardware-JIT Befehlssatzerweiterung Kompilation Interpretation AOT JIT Hotspot nach [1] Bytecode- Ausführung Interpretation ++ - ++ + JIT-Compiler -- + - -- Hotspot-Compiler -- ++ -- + AOT-Compiler -- + ++ ++ Portierbarkeit Geschwindigkeit Speicherbedarf Startup- Verzögerung nach [1] Folie 6 von 15

Beispiele - Kertasarie VM CDC-API eigene GUI-API (Nutzung nativer GUI-Elemente) netzwerkzentriert Unterstützung von Sockets, Reflection, Serialisierung TinyRMI (eigene RMI-Implementierung, unterstützt TCP und UDP) echtzeitfähig (highest-priority-first Scheduling mit priority-inheritance, echtzeitfähiger GC) Green-Threads Modell (gesamte VM als ein OS-Thread) kein JNI nativer Code statisch in VM einkompiliert Bytecode-Interpreter und JIT-Compiler Plattformen: Linux (x86, ARM, PowerPC) WindowsCE (StrongARM) ecos (ARM) Codegröße 80-120 KB ähnlich wie KVM, bei ähnlicher Geschwindigkeit wie CVM Folie 7 von 15

Beispiele Sun SPOT Allgemeines Experimentierplattform für Wireless Sensor Networks Hardware und Software Open Source Sun SPOT JDK 315 (2 Sensorknoten + Basisstation) IDE-Unterstützung (Netbeans) + Emulator Hardware 400 MHz 32-Bit ARM-Prozessor, 1 MB RAM, 8 MB Flash- Speicher Temperatur-, Licht-, Beschleunigungssensor eigene Sensorboards 2.4 GHz Funk Modul nach IEEE 802.15.4 [7] Software Squawk VM (läuft ohne OS direkt auf der Hardware) CLDC-API + Bibliotheken für Zugriff Hardware 802.15.4 MAC-Schicht Basis für Zigbee [6] Folie 8 von 15

Beispiele - LeJOS Lego Mindstorms NXT 32-Bit ARM-Prozessor @48 MHz, 256 kb Flash- Speicher, 64 kb RAM Sensoren, Aktoren, USB, Bluetooth LeJOS Open Source Java-Programmierumgebung Firmware, die für NXT angepasste JVM zur Verfügung stellt grundlegende Java-Bibliotheken + Bibliotheken für Zugriff auf Sensoren/Aktoren, Kommunikation (Bluetooth) und Robotik-Algorithmen (Lokalisierung, Wegfindung etc.) Werkzeuge für Installation der Firmware, Laden der Programme auf NXT Eclipse und Netbeans Plugins Interpretation des Bytecodes nxj-dateiformat (kein Reflection, kein dynamisches Laden von Klassen) [9] Folie 9 von 15

Beispiele GCJ The GNU Compiler for the Java Programming Language Frontend für GCC übersetzt Java Byte-/Quellcode in nativen Maschinencode Laufzeitsystem libgcj (enthält freie Implementierung der Java-Klassenbibliotheken, Garbage Collector und Bytecode-Interpreter) Klassenbibliotheken noch nicht vollständig implementiert (z.b. AWT und Swing unvollständig) Interpreter für dynamisch geladene Klassen CNI (Compiled Native Interface) als Alternative zu JNI (Java Native Interface) Schnittstelle zu C++ Folie 10 von 15

Beispiele - SHAP Eigenschaften Multicore Java-Bytecode-Prozessor Agentensystem Programmausführung direkt in Hardware FPGA (Xilinx Spartan 3) echtzeitfähig durch preemptives Round- Robin-Scheduling und nebenläufige Garbage Collection CLDC-API (phoneme) Floating-Point-Arithmetik in Software emuliert dynamisches Laden von Klassen [17] Workflow Quellcode mit Standard-Java-Compiler übersetzen Applikation+Shap Runtime ShapLinker.shap-Datei FPGA Folie 11 von 15

Zusammenfassung Fazit Eigenschaften von Java machen Einsatz in eingebetteten Systemen attraktiv, sorgen aber auch für Probleme verschiedene Ansätze um Probleme zu minimieren Java und eingebettete Systeme passt das zusammen? JA, aber immer Abwägung von Funktionalität, Geschwindigkeit und Speicherbedarf Folie 12 von 15

Quellen [1] Stephan Gatzka: Java in eingebetteten Systemen, Dissertation, TU Dresden, 2009 [2] Stephan Gatzka, Christian Hochberger, Thomas Geithner: The Kertasarie VM. In: Organisatoren Net.ObjectDays, c/0 transit GmbH (Hrsg.): Net.ObjectDays 2003 Tagungsband, IGT Colordruck GmbH, 2003. ISBN 3 9808628 2 8, S. 285 299. The Kertasarie VM., 2003 [3] Kertasarie VM Projektseite GIANT GmbH, http://www.kertasarie.de [4] Kertasarie VM Projektseite Universität Rostock https://wwwra.informatik.uni-rostock.de/100.0.html [5] Sun SPOT Website, http://www.sunspotworld.com [6] Sun SPOT Wiki, http://java.net/projects/spots/pages/home [7] Sun SPOT Bild, http://blogs.oracle.com/reichart/entry/vortrag_sun_spot Folie 13 von 15

Quellen [8] LeJOS Website, http://lejos.sourceforge.net [9] Lego Mindstorms NXT Bild, http://isklrobotics.blogspot.com [10] GCJ Website, http://gcc.gnu.org/java [11] Per Bothner: Compiling Java with GCJ, Artikel, Linux Journal, 2003, http://www.linuxjournal.com/article/4860 [12] GCC Logo, http://gcc.gnu.org/img/gccegg.svg [13] SHAP Projektwebseite, http://shap.inf.tu-dresden.de [14] Martin Zabel, Thomas B. Preußer, Rainer G. Spallek: Real-time Java processor for monitoring and test. In 1st Cooperation Workshop of Computer Science. Brandenburg University of Technology at Cottbus. Computer Science Report 03/06, Oct. 2006 embedded Plattformen Folie 14 von 15

Quellen [15] Thomas B. Preußer, Martin Zabel, Peter Reichel: The SHAP Microarchitecture and Java Virtual Machine. Fakultät Informatik, Technische Universität Dresden, Tech. Rep. TUD-FI07-02. April 2007, ISSN 1430-211X [16] Martin Zabel, Thomas B. Preußer, Peter Reichel, Rainer G. Spallek: SHAP -- SecureHardware Agent Platform. In Dresdner Arbeitstagung Schaltungs- und Systementwurf (DASS'07). TUDpress, 2007, pp. 119--126 [17] SHAP Bild, http://tu-dresden.de/die_tu_dresden/fakultaeten/fakultaet_informatik/ tei/vlsi/forschung/shap_vlsi embedded Plattformen Folie 15 von 15