Programmierung mobiler Kleingeräte



Ähnliche Dokumente
Java für Embedded Systems

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

Mobile Betriebsysteme

Usability-Test für mobile Java-Anwendungen

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

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

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

Java für C++ Programmierer

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Java RMI Remote Method Invocation

Kapselung und Methodenbindung: Javas Designprobleme und ihre Korrektur. Dipl.-Inform. Peter Müller Prof. Arnd Poetzsch-Heffter Fernuniversität Hagen

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Faktor-IPS. Modellgetriebene Softwareentwicklung mit Faktor-IPS. Faktor Zehn AG. Seite 1

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

J.6 Programmierung eingebetteter Systeme

Testen mit JUnit. Motivation

II.1.1. Erste Schritte - 1 -

Software ubiquitärer Systeme

Vorkurs Informatik WiSe 15/16

Javakurs zu Informatik I. Henning Heitkötter

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

Vorlesung Informatik II

Einführung in die Programmierung Blockkurs Java

Java Einführung Programmcode

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Innere Klassen in Java

Einsatz von Java-fähigen GPRS-Terminals

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Projekt MasterMind Systemspezifikation

Einführung in Javadoc

Einführung in die Programmierung

Programmierung von Smart Cards mit Hilfe von Java

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Java für Anfänger Teil 1: Intro. Programmierkurs Manfred Jackel

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

NetBeans Installation für Handy-Programmierung

Große Übung Praktische Informatik 1

Themen. Web Service - Clients. Kommunikation zw. Web Services

Diplomarbeit Antrittsvortrag

Algorithmen und Datenstrukturen

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Systemvoraussetzungen für ConSol*CM Version Architektur Überblick

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Übungen zur Softwaretechnik

Systemvoraussetzungen Stand

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Java TV. Seminar Medientechnik. Kristin Doppler Übersicht. Einleitung Umgebungen Java TV API - Kategorien. Service- und Selektions-APIs

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens

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

Java in der Welt der Handys. Matthias Hemetsberger Joseph Erlinger Erwin Schwab Rudi Dittrich

Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit.

Weblogic Server: Administration für Umsteiger

Spring Dynamic Modules for OSGi Service Platforms

Java Web Services Metadata JSR-181

Java Programmierung auf der Konsole / unter Eclipse

Java-Programmierung. Remote Method Invocation - RMI

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

J.5 Die Java Virtual Machine

Programmiermethodik. Übung 13

Technische Voraussetzungen und Kompatibilitätsliste GemDat/Rubin

Software-Engineering Grundlagen des Software-Engineering

Version 0.3. Installation von MinGW und Eclipse CDT

Java Einführung Packages

ATHOS Benutzertreffen

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

Factory Method (Virtual Constructor)

CADEMIA: Einrichtung Ihres Computers unter Windows

Einführung in Eclipse und Java

P CALC Die Präferenzkalkulation

Vererbung & Schnittstellen in C#

Scalable Vector Graphics-basierte

JDBC. Allgemeines ODBC. java.sql. Beispiele

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

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

IT in der Arztpraxis Technisches Handbuch zum Kodierassistenten

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Auszug aus JAX-WS Folien

Grundlagen der Programmierung UE

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Installation der SAS Foundation Software auf Windows

Transkript:

Programmierung mobiler Kleingeräte Einführung in J2ME Wolfgang Auer, Patrick Ritschel

Java 2 Plattformen Quelle: Sun, Datasheet Java 2 Platform, Micro Edition Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 2

Konfigurationen horizontale Strukturierung Konfigurationen gruppieren Geräte horizontal anhand Minimalanforderungen hinsichtlich Speicher, Prozessor und Konnektivität Eine Konfiguration definiert: Spezifikation der virtuellen Maschine Obligatorische Pakete Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 3

CDC und CLDC CDC 1.0 (JSR 36): Connected Device Configuration Spezielle Embedded Geräte High-end PDAs CLDC 1.1 (JSR 139): Conneced, Limited Device Configuration Mobiltelefon Low-end PDAs SmartPhones Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 4

Abgrenzung CDC und CLDC (1) Abgrenzung zwischen CDC und CLDC ist fließend Kategorisierung anhand der vorhandenen Ressourcen Speicher für Java + Applikationen CLDC: ROM 160 KB, RAM 32 KB CDC: > 2MB Prozessor CDC: 32-bit CLDC: 16-bit oder 32-bit Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 5

Abgrenzung CDC und CLDC (2) Stromversorgung und - verbrauch Größe des Bildschirms Kommunikation CDC: ständig vorhanden hohe Bandbreite CLDC: nicht ständig vorhanden geringe Bandbreite Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 6

Profile (1) vertikale Strukturierung Problemstellungen innerhalb einer Konfiguration Große Vielfalt an Gerätetypen und Hardwarekonfigurationen Usablity-Unterschiede Tastatur-, Stylus-, Sprachsteuerung Größe und Art des Bildschirms Einteilung innerhalb einer Konfiguration nach vertikalen Marktsegmenten Profile Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 7

Profile (2) CDC Foundation Profile 1.0 (JSR 46) Zusätzliche J2SE-Klassen, allerdings keine GUI-Klassen Stellt Basis für erweitere Profile dar Personal Basis Profile 1.0 (JSR 129) Erweiterung des Foundation Profile mit entsprechenden GUI- Klassen Personal Profile 1.0 (JSR62) Ersatz von PersonalJava Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 8

Profile (3) CLDC MIDP 2.0 (JSR 118) (Mobile Information Device Profile) Information Module Profile 1.0 (JSR 195) Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 9

CLDC - High-level Architektur CLDC design goals: Highly portable, minimum footprint Java application development platform for resourceconstrained, connected devices Aufwärtskompatibilität zu J2SE Bibliothek setzt sich aus einer Untermenge von J2SE-Klassen und CLDC- spezifischen Klassen (z.b. Generic Connection Framework) zusammen Fähigkeit zur parallelen Ausführung von mehreren Java- Applikationen ist nicht vorgeschrieben Spezielle Anforderungen hinsichtlich Sicherheit (Pre-verifikation, Class-loading,..) CLDC setzt kein Dateisystem voraus Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 10

Java - Sprachspezifikation CLDC 1.1 unterstützt Java Sprachspezifikation mit folgenden Einschränkungen: Objekt-Finalization wurde weggelassen Vereinfachung der Aufgaben des Garbage Collectors Laufzeitfehler: CLDC definiert nur für Error, OutofMemoryError VirtualMachineError, ClassDefinitionNotFound das Verhalten. Die Behandlung aller anderen Fehler ist VM- Implementierungsabhängig: Wiederaufsatz ist gerätespezifisch Overhead für die VM-Implementierung Keine asynchronen Exceptions Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 11

JVM - Spezifikation CLDC 1.1 unterstützt JVM Sprachspezifikation mit folgenden Einschränkungen Keine benutzerdefinierten class loaders Keine thread groups und daemon threads Keine Objekt-Finalisierung Eingeschränkte Fehlerbehandlung und keine asynchronen Exceptions class file verification Aufteilung in einen Pre-verifier und einen Runtime-Verifier Kein JNI und Reflection Keine Serialization Kein Standard Debug-Support, profiling interface Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 12

Sicherheit Überblick Verifikation des Bytecodes Spezielle Anforderungen hinsichtlich des Ladens von Klassen Kein JNI bzw. nur eine vordefinierte Menge an Operationen Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 13

Sicherheit Class file verification (1) Development workstation Mobile device MyApp.java javac MyApp.class preverifier runtime verifier byte code interpreter KVM MyApp.class Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 14

Sicherheit Class file verification (2) Aufgaben des Pre-verifiers Erstellen von StackMap-Attributen, die vom Runtime-Verifier verwendet werden (z.b. Typ der lokalen Variablen) Inlining von subroutines Ersetzen aller jsr, jsr_w, ret und wide ret bytecodes Aufgaben des Runtime-Verifiers Prüfen auf Typsicherheit Prüfen auf Speicherkorruption Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 15

Sicherheit Class File Format und Class-loading CLDC liest alle class-file-formate ab 1.1; Nicht verwendete Attribute (deprecated,...) werden ignoriert Weder die Reihenfolge des Ladens von Klassen noch die Handhabung des Klassenpfades sind in CLDC festgelegt Nur system class loader class-file lookup kann nicht manipuliert werden Eine Applikation kann in Form einer JAR-Datei deployed werden Dynamisches Nachladen von Klassen ist nur aus der eigenen JAR-Datei erlaubt Systemklassen und Bibliotheken dürfen nicht manipuliert werden Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 16

Mobile Infomation Device Profile MIDP 2.0 Hardwareanforderungen 256 KB ROM, 128 KB RAM, 8 KB persistent Auflösung 96 x 54, 1bit Farbtiefe Wichtigste Funktionalität GUI (Event-Handling + Timer) und Zeichnen Persistenter Speicher Konnektivität: HTTP, HTTPS, UDP, TCP und Unterstützung für die serielle Schnittstelle Push-Architektur Sicherheit: Trusted MIDlet-Suites, SSL, WTLS Over-the-air Provisioning Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 17

Applikationsmodell MIDlet public class HelloWorld extends MIDlet { private TextBox m_textbox; public HelloWorld() { m_textbox = new TextBox("Hello MIDlet", "Hello World!", 15, 0); m_textbox.addcommand(new Command("Exit", Command.EXIT, 1)); m_textbox.setcommandlistener(new CommandListener() { public void commandaction(command cmd, Displayable arg1) { try { destroyapp(false); } catch (MIDletStateChangeException e) { e.printstacktrace(); } notifydestroyed(); } }); } protected void startapp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(m_TextBox); } protected void pauseapp() {} } protected void destroyapp(boolean arg0) throws MIDletStateChangeException {} Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 18

Applikationsmodell MIDlet - Zustandsdiagramm new HelloWorld() Paused pauseapp Active Applikation hat alle Ressourcen exklusiv startapp destroyapp Destroyed destroyapp Paused: Das MIDlet sollte in diesem Zustand möglichst wenig Ressourcen halten Asynchrone Nachrichten können empfangen werden Suspendierung der JVM bedeutet nicht zwangsläufig, dass die laufende Java-Applikation in den Zustand paused kommt! Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 19

Applikationsmodell MIDP Applikation Lebenszyklus MIDlet-Suite retrieve (HTTP,...) develop (Web)-Server remove deploy package MIDlet-Suite inbox MIDlet-Suite install MIDlet retrieve (BT,...) run Development environment Mobile device MIDlet Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 20

Applikationsmodell MIDlet Suites MIDlet Suite: Sammlung von MIDlets JAR-Datei: class-dateien, Ressourcen und Manifest mit MIDlet- Beschreibungen (MIDlet Provider, Version, zusätzliche Properties) JAD-Datei: (Application descriptor) Beschreibung der MIDlets Sicherheit Erlaubt das Prüfen der Kompatibilität der MIDlet Suite hinsichtlich des CLDC- Devices Zusätzliche Properties, die angepasst werden können Klassen können nur aus der Suite geladen werden Austauschen von Daten zwischen MIDlets ist nur innerhalb einer Suite möglich Teilen von statischen Feldern Objekt-Heap Namesraum für persistenen Speicher Programmierung mobiler Kleingeräte, Einführung in J2ME, V1.0 21