Programmieren mobiler Geräte

Ähnliche Dokumente
Usability-Test für mobile Java-Anwendungen

Verteilte Anwendungen Java 2 Mobile Edition

Hauptseminar. Mobiles WWW Arndt Kühne

Programmierung mobiler Kleingeräte

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

Java-Kurs: J2ME Programmierung von Embedded Devices mit der Java 2 Plattform, Micro Edition

Anleitung. Integration von Kentix Geräten in den OpManager

Klaus-Dieter Schmatz. Java Micro Edition. Entwicklung mobiler JavaME-Anwendungen mitcldcundmidp. 2., aktualisierte und erweiterte Auflage

NetBeans Installation für Handy-Programmierung

Java 2 Micro Edition. Informatikseminar - Steffen Lahm. Vortragsüberblick

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

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

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

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

miditech 4merge 4-fach MIDI Merger mit :

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

Smartphone Entwicklung mit Android und Java

GameGrid mit BlueJ Seite 1

Eclipse 3.0 (Windows)

Mobile Betriebsysteme

AK Medientechnologien 09 App Store Submission. Josef Kolbitsch

Mobile Computing. J2ME - Mobile Media API. Ablauf. 1. Anwendungsbereich. 1. Multimedia-Prozesse. 1. Eigenschaften der MMAPI

Einführung in Javadoc

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

Apple Train the Trainer 10 App Store Submission. Josef Kolbitsch

Anleitung zum Prüfen von WebDAV

SanStore: Kurzanleitung / SanStore: Quick reference guide

Apollo Überblick. Klaus Kurz. Manager Business Development Adobe Systems Incorporated. All Rights Reserved.

Eclipse User Interface Guidelines

UM ALLE DATEN ZU KOPIEREN. ZUNÄCHST die Daten des alten Telefons auf einen Computer kopieren

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Hex Datei mit Atmel Studio 6 erstellen

JDroidLib mit Eclipse (Mac/Linux/Windows)

Java für Embedded Systems

eridea AG Installation Eclipse V 1.4

eridea AG Installation Eclipse V 1.1

Softwareupdate-Anleitung // AC Porty L Netzteileinschub

USB Treiber updaten unter Windows 7/Vista

Anleitung zur Webservice Entwicklung unter Eclipse

Einführung in Eclipse und Java

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Konfiguration des Novell GroupWise Connectors

Apps-Entwicklung mit Netbeans

AppOcalypse now! Die Zukunft des Intranets ist Mobile Jussi Mori

SharePoint 2010 Mobile Access

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen

25 Import der Beispiele

Wie verbindet man Nokia 6600 mit Oxygen Phone Manager II for Symbian OS phones ( )

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Kurzanleitung Installation der Zend Studio Sprachpakete

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren

Clientkonfiguration für Hosted Exchange 2010

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Apps-Entwicklung mit Eclipse

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

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

LEHRSTUHL FÜR DATENBANKEN

Lehrveranstaltung Grundlagen von Datenbanken

Tipps und Tricks zur Installation von Java-basierten Programmen auf Handys

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R3: Administration

Anleitung zum Prüfen von WebDAV

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

1 Vorraussetzungen. 2 Installiere Eclipse. FS 2015 Herausgabe: Dr. A. L. Schüpbach, D. Sidler, Z. István Departement Informatik, ETH Zurich

Python SVN-Revision 12

Programmierung von Smart Cards mit Hilfe von Java

projektplanungsvorgehen.doc

GUI Programmierung in Java

Java für C++ Programmierer

EMF-GMF-Tutorial: Petrinet

VAX2go ein Projekt der Gruppe Damn small VAX

Daten fu r Navigator Mobile (ipad)

Windows Server 2012 R2 Essentials & Hyper-V

Windows Server Dieses Dokument beschreibt einige Details zum Aufsetzen eines Windows Server 2003 (Andres Bohren /

Grundlagen der Programmierung APPLETS

Struts 2 Das Imperium schlägt zurück?

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

SharePoint 2013 Mobile Access

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Einführung zu den Übungen aus Softwareentwicklung 1

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Kurzeinführung Excel2App. Version 1.0.0

Installation der SAS Foundation Software auf Windows

Powershell DSC Oliver Ryf

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

INSTALLATION VON INSTANTRAILS 1.7

Isabel Arnold CICS Technical Sales Germany z/os Explorer IBM Corporation

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Die Geheimnisse meiner SMF Daten

JPC Visualisierung in Java

Web Services Security

Anleitung zur Konfiguration von WLAN/VPN für das Hochschulnetzwerk mit:

SWT. -The Standard Widget Toolkit- Inhaltsverzeichnis. Thomas Wilhelm SWT. 1. Was ist SWT?

JAVA. Ein kurzer Überblick. Thomas Karp

Laborübung - Task-Manager (Verwalten von Prozessen) in Windows 7

Transkript:

Datum Technologie Entwicklung Werkzeug Übung Grundlagen 23.10.30 1 Überblick Ant Kompilieren 30.10.03 2 WLAN, BT Eclipse Projektverwaltung 06.11.03 3 GSM Eclipse Debugging 13.11.03 4 WAP, WML, WMLS XML Nokia Toolkit WML, WMLS 20.11.03 5 WAP, SMS, MMS XML JAVA mobil 27.11.03 6 Einführung J2ME J2ME Toolkit Erste Schritte 04.12.03 7 MIDP 1.0 GUI Grafik 11.12.03 8 JSR RMS+IO POSE RMS 18.12.03 9 MIDP 2.0 Media+Game Vernetzte Systeme 08.01.04 10 Grundlagen Netzwerke Tomcat Servlet 15.01.04 11 Projektvergabe SMS, MMS Kannel SMS Service 22.01.04 12 Cocoon 29.01.04 13 05.02.04 14 12.02.04 15 Präsentationen www.informatik.unibas.ch/lehre 1

ENTWICKLUNG Übersicht Java Basis Technologien J2SE Java Archive ( JAR ) file format J2ME Mobile Information Device Profile (MIDP) J2EE Servlets Cocoon Entwicklungs-Werkzeuge Ant Eclipse Wireless Toolkit Nokia WAP Toolkit PalmOS Emulator Übertragungs - Technologien Hardware Drahtlose Netze WAP 2.0 SMS / MMS Mobile Geräte 2

TECHNOLOGIE Übung 4 : WML / WMLS Probleme bei den Lösungen: Links kontrollieren (relativ/absolut/bilder) Navigation konsistent? (Soft-Key/Links) wünschbar: von jedem Ort wieder auf die Einstiegs-Seite zu kommen ist die Seite so brauchbar für andere Leute? Erkenntnisse umsetzen bei ev. WML(S)-Projekten Anmerkungen: immer ein Textfile mit hochladen mit Erläuterungen WER (Gruppe?), WAS (Bemerkungen?), Email keine MS-WORD doc-files, lieber txt-files kontrollieren: Ueb4 bei Ueb4 hochladen, nicht bei Ueb5 oder Ueb3 bei mehreren Files: ZIP, TAR, GZ oder SIT etc 3

TECHNOLOGIE Übung 5 : SMiL / MMS Probleme bei den Übungen: Installation aller Tools Was brauche ich für was? Entwicklerproblematik bei neuesten Technologien: Wo finde ich Tools? Welches sind die besten? Wie bringe ich sie zu laufen? Was muss ich tun, damit alle Tools zusammen funktionieren Ziel: Eine zweckmässige Toolbox zusammentragen 4

TECHNOLOGIE Java 2 Micro Edition http://wireless.java.sun.com Wieso wichtig? Alle Vorteile von Java: Plattformunabhängigkeit, Sicherheit,... wird auf zunehmend vielen Platformen unterstützt: Smart Phones, Mobil-Telefone PalmOS Windows CE Symbian OS... Einfachste Art Software für unterschiedliche Mobil-Geräte zu entwickeln 5

TECHNOLOGIE Die Java Welt One Size Does Not Fit All J2SE J2EE J2ME Java 2 Standard Edition Kernklassen für Applets und Applikationen Java 2 Enterprise Edition Servlets, JSP, Java Enterprise Beans heavy duty enterprise networking, I/O, and DB features Übermenge von J2SE Java 2 Micro Edition Untermenge von J2SE Optimiert für wireless mobile devices Definiert durch Profile und Konfigurationen (MIDP, CLDC) J2ME J2SE J2EE 6

TECHNOLOGIE andere Wireless Java Technologien PersonalJava + JavaPhone: Vorläufer von J2ME JavaCard Kontaktlose Smart Card Kontakt-Smart Card Smart Button SIM Card 8/16-bit CPU @ 3.7 MHz 1kB RAM + 16kB EEPROM /flash Java Card Virtual Machine Java Card API Java Card Development Kit JCDK USB Token 7

TECHNOLOGIE J2ME vs. andere Mobile Technologien WML keine Konkurrenz: WML/J2ME = HTML/J2ME WAP/WML = Protokoll für Mobiles Browsing J2ME = Sprache für client-seitige Programme (ggf. mit Internet-Zugriff), Stand-Alone and Offline Applikationen SMS/MMS Kann mit J2ME benutzt werden (Zukunft) JSR 120 : WMA Bluetooth Um Programme auf das mobile Gerät zu laden Kann mit J2ME benutzt werden (Zukunft) JSR 82 : BTAPI 8

TECHNOLOGIE J2ME Hierarchie Verschiedenartige Geräte haben verschiedene Anforderungen. Unterteilung in Konfigurationen und Profile auch hier: One Size Does Not Fit All J2ME Konfigurationen CLDC CDC Profile MIDP1.0 MIDP2.0 FP PP 9

TECHNOLOGIE Konfigurationen Eine J2ME Konfiguration definiert für eine bestimmte Geräte-Menge: minimales Subset von Java Features Subset der Funktionalität der Java Virtual Machine (JVM) : KVM Java APIs Hardware Anforderungen Konfigurationen sind CLDC (1.0 und 1.1) CDC Connected Limited Device Configuration für kleine mobile Geräte Connected Device Configuration für TV Set Top Boxes, Internet TV, Automobile Unterhaltungs-/Navigations- Systeme (gutes Netzwerk, grosser Screen, kleine CPU) 10

TECHNOLOGIE CLDC Connected Limited Device Configuration Hardware 160 kb Java Memory 128 kb non-volatile (KVM + libs) 32 kb volatile Java Runtime 16/32-bit CPU with 8-32 MHz low power Network (often low bandwidth) 1.0 no floating point (no FPU) Security class File verification only predefined APIs / class loaders / features CLDC 1.1 with software floating point / localisation / more security 11

TECHNOLOGIE CLDC Profile: MIDP Profil ist eine genauere Beschreibung der Spezifikationen. Es setzt auf eine Konfiguration auf. MIDP 1.0 Memory: 128kB libs/ 32 kb runtime/ 8kB persistent data Input: Keyboard or Stylus/Touch screen (no mouse!) Display: 96x54 (square!) pixel mit 1-bit Color Network: 2-way wireless, low bandwidth, HTTP OS: interrupts, exceptions, scheduling, read/write persistent memory, timer, read/write network, user input, bitmap graphics, app life cycle management MIDP 2.0 kompatibel zu MIDP 1.0 HTTPS, sockets, datagrams, OTA provisioning, push: events/messages, game functionality, XML parser, sound 12

TECHNOLOGIE CDC Profile PDAP FP PBP PP PDA Profile: MIDP + PIM + FC (FileConnection für Memory Card etc) Foundation Profile: Network, no GUI, 1 MB ROM, 0.5 MB RAM Personal Basis Profile: FP, Robust Network, AWT GUI, 2/1 MB ROM/RAM Personal Profile: CDC, FP, hi-fidelity GUI, Applets, 2.5/1 MB ROM/RAM 13

TECHNOLOGIE Optional Packages JSR PIM : Personal Information Manager BTAPI : Bluetooth WMA : Wireless Messaging MMAPI : Mobile Media JAIN (SIMPLE) Presence JAIN (SIMPLE) Instant Messaging J2ME Web Services SATSA : Security and Trust Services Location SIP : Session Initiation Protocol 3D Event Tracking Public Review Proposed Final Draft Final Release 14

TECHNOLOGIE 15

TECHNOLOGIE MIDlet = J2ME Application Sandbox JAM Security kein Zugriff auf Telefonfeatures Java Application Manager kontrolliert Installation, Ausführung, Löschen von MIDlets; Ausführungsumgebung, Error- Handling MIDlet Lifecycle 16

ENTWICKLUNG Entwicklung in J2ME 0 1 2 3 4 5 Lauffähiges Midlet aus 2 Files JAR : Archiv mit den Klassen und Resourcen JAD : Beschreibung des JAR und globale Einstellungen Preverify Obfuscation 6 17

ENTWICKLUNG Schritt 0 : Vorbereitung Tools installieren, Entwicklungsumgebung zum Laufen bringen und Kennenlernen Neues Projekt einrichten Schritt 1 : Programmieren MIDlet erzeugen (am besten ausgehend von einer Vorlage) 18

ENTWICKLUNG Schritt 2 : MIDlet Suite MIDlets werden preverified und kompiliert MIDlet können/müssen in eine MIDlet Suite zusammengefasst werden. Manifest Manifest-Version: 1.0 MIDlet-Name: HelloExamples MIDlet-Vendor: Xplore N.V. MIDlet-Version: 1.0 MicroEdition-Profile: MIDP-1.0 MicroEdition-Configuration: CLDC-1.0 MIDlet-1:BouncingTextMIDlet,,example.hello.BouncingTextMIDlet MIDlet-2:HelloWorldMIDlet,,example.hello.HelloWorldMIDlet MIDlets einer ganzen Suite werden in ein JAR verpackt. Dazu gehören alle CLASS Files, Bilder, Manifest, sonstige Resources Obfuscation möglich: Komprimierung des JAR und Schutz vor Reverse-Engineering 19

ENTWICKLUNG Schritt 3 : JAD JAD-File Java Application Descriptor MIDlet-Name: HelloExamples MIDlet-Vendor: Nokia Pte Ltd MIDlet-Version: 1.0 MIDlet-Jar-Size: 7808 MIDlet-Jar-URL: HelloExamples.jar Enthält obligatorisch: MIDlet-Version, MIDlet-Name, Grösse + Name/Ort des JAR Zum Installieren brauchen wir ein JAD und ein JAR: Endgeräte können schon am JAD erkennen, ob das JAR ausführbar ist: MIDlet-Version, Grösse 20

ENTWICKLUNG Schritt 4 & 5: Emulator & Debugging 21

ENTWICKLUNG Schritt 6 : Deployment Serial Cable Connection Infrarot Bluetooth Mobiles Internet Download OTA (over-the-air) Discovery + JAD downloading through Non-IP Transport oder Downloading JAR 22

MIDP Application Programming Interface Input/Output Network Connection HTTP etc Midlet Lifecycle startapp() pauseapp() destoyapp() java.io java.lang java.util javax.microedition.io javax.microedition.lcdui javax.microedition.lcdui.game javax.microedition.media javax.microedition.media.control javax.microedition.midlet javax.microedition.pki javax.microedition.rms Core von J2SE MIDP 1.0 neu in 2.0 LCD User Interface Screen-based High level GUI Elemente Low level Canvas, Pixel ENTWICKLUNG Game GameCanvas Layer Sprites Record Management System Zum Zugriff auf den Persistenten Speicher (byte array) Zusatz-Pakete WMA MMAPI Sound Mobile Media Player VolumeControl Wireless Messaging MessageConnection MessageListener Multi Media Sound MIDI Video Public Key Secure Connections 23

ENTWICKLUNG Welches MIDP? MIDP 2.0 rückwärts-kompatibel zu MIDP 1.0 MIDP 1.0 wird auf allen java-fähigen heutigen Telefonen unterstützt MIDP 2.0 mehr Funktionen, aber im Moment erst im Emulator zu gebrauchen. Das wird in einem halben Jahr schon anders aussehen. in dieser Vorlesung: 3 Lektionen MIDP 1.0, danach 1 Lektion MIDP 2.0 http://wireless.java.sun.com/device/ 24

ENTWICKLUNG Entwicklungsplattformen J2ME Wireless Toolkit 2 wireless.java.sun.com Linux Redhat, Solaris SPARC, Windows ME2SE http://kobjects.dyndns.org/kobjects/ läuft überall, wo J2SE läuft: MacOSX, Win, *NIX MIDP 1.0.3 for OSX http://mpowers.net/midp-osx/ JBuilder + Mobile (www.borland.com) Eclipse (ev. mit J2ME plug-ins) Sun ONE Studio Nokia Toolkit for J2ME Motorola etc... 25

Wireless ToolKit 2.0 WTK 2.0 WERKZEUG../wtk20/index.html KToolbar 26

WERKZEUG Verzeichnisse../wtk20/BinaryReleaseNotes.html Projekte Programme Dokumentation JAVA DOC, PDF MIDP, MM, WMA Klassenbibliotheken 27

WERKZEUG MIDlet Projekt öffnen KToolbar MIDlet erzeugen MIDlet starten 28

WERKZEUG MIDlet Deployment 29

Neues Projekt KToolBar WERKZEUG 1. Choose File -> New Project The New Project dialog appears. 2. Type the name of the project in the Project Name field, and the name of the main 3. Click Create Project. The main window s title changes to include the name of the new project, as shown by the following screenshot: 30

WERKZEUG Java Editor von Eclipse nutzen Pfad auf KTool apps Ordner 31

WERKZEUG Java Editor von Eclipse nutzen Source Pfad../wt20/apps/neuesProjekt/src Binary Pfad../wt20/apps/neuesProjekt/tmpclasses 32

Java Editor von Eclipse nutzen WERKZEUG Klassen Bibliothek hinzufügen midpapi../wt20/lib/midpapi.zip 33

Java Doc../wtk20/docs/api/midp/ WERKZEUG 34

WERKZEUG MIDlet Information, JAD File MIDlet Welcome.java hinzufügen 35

WERKZEUG Welcome.java import javax.microedition.midlet.*; import javax.microedition.lcdui.*; LCD User Interface Screen-based High level GUI Elemente Low level Canvas, Pixel Interface CommandListener CommandAction() public class Welcome extends MIDlet implements CommandListener { private Display display; // Reference to Display object for this MIDlet private TextBox tbmain; // A Textbox to display a message private Command cmexit; // A Command to exit the MIDlet public Welcome() { display = Display.getDisplay(this); cmexit = new Command("Exit", Command.SCREEN, 1); Constructor Factory statische Methode, erzeugt display Instanz } tbmain = new TextBox("Welcome", "Core J2ME", 50, 0); tbmain.addcommand(cmexit); tbmain.setcommandlistener(this); 36

WERKZEUG Welcome.java // Called by application manager to start the MIDlet. public void startapp() { display.setcurrent(tbmain); } Display Umschalten // A required method public void pauseapp() { } // A required method public void destroyapp(boolean unconditional) { } } // Check to see if our Exit command was selected public void commandaction(command c, Displayable s) { if (c == cmexit) { destroyapp(false); notifydestroyed(); } } Command Reagiert auf Command c, in Displayable s MIDlet Methoden für Exit 37

WERKZEUG Run Welcome.java 38

WERKZEUG Command & Command Listener command object Event Informationen label, type and priority Beispiel: cmhelp = new Command( Help, Command. HELP, 1); 39

Command types: javax.microedition.lcdui.command Value BACK CANCEL EXIT HELP ITEM OK SCREEN STOP Description A request to move to the previous screen A request to cancel an operation A request to exit the MIDlet A request to display help information A request to map the Command to an item on the screen Specify positive acknowledgement from the user For Commands in which it is unlikely there will be a specific key mapping available A request to stop an operation WERKZEUG 40

WERKZEUG TooManyCommands import javax.microedition.midlet.*; Interface import javax.microedition.lcdui.*; CommandListener CommandAction() public class TooManyCommands extends MIDlet implements CommandListener { private Display display; // Reference to Display object for this MIDlet private Form fmmain; // The main Form private TextBox tbaction; // Textbox to show when user selects tb private Command cmexit; // Exit the MIDlet private Command cmback; // Go "back" to the main form private Command cmuload; // "upload" data - no real action done private Command cmdload; // "download" data - no real action done public TooManyCommands() { display = Display.getDisplay(this); cmexit = new Command("Exit", Command.EXIT, 1); cmback = new Command("Back", Command.BACK, 1); cmuload = new Command("Upload", Command.SCREEN, 2); cmdload = new Command("Download", Command.SCREEN, 3); 41

WERKZEUG TooManyCommands // Create the Form, add Commands, listen for events fmmain = new Form("Core J2ME"); fmmain.addcommand(cmexit); fmmain.addcommand(cmuload); fmmain.addcommand(cmdload); fmmain.setcommandlistener(this); // Create a Textbox, add Command, listen for events tbaction = new TextBox("Process Data", "Upload/download data ", 25, 0); tbaction.addcommand(cmback); tbaction.setcommandlistener(this); } public void startapp() View fmmain { display.setcurrent(fmmain); } public void pauseapp() { } public void destroyapp(boolean unconditional) { } 42

WERKZEUG TooManyCommands // Process events public void commandaction(command c, Displayable s) { if (c == cmexit) { destroyapp(false); notifydestroyed(); View } tbaction else if (c == cmuload c == cmdload) display.setcurrent(tbaction); else if (c == cmback) display.setcurrent(fmmain); } } View fmmain 43