Programmieren mobiler Geräte

Werbung
Programmieren mobiler Geräte
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
J2ME Toolkit
Erste Schritte
JAVA mobil
27.11.03
6
Einführung J2ME
04.12.03
7
MIDP 1.0
GUI
11.12.03
8
JSR
RMS+IO
18.12.03
9
MIDP 2.0
Media+Game
Grafik
POSE
RMS
Tomcat
Servlet
Kannel
SMS Service
Vernetzte Systeme
08.01.04
10
Grundlagen Netzwerke
15.01.04
11
Projektvergabe
22.01.04
12
29.01.04
13
05.02.04
14
12.02.04
15
SMS, MMS
Cocoon
Präsentationen
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
www.informatik.unibas.ch/lehre
1
ENTWICKLUNG
Übersicht
Java Basis Technologien
Entwicklungs-Werkzeuge
Ant
Eclipse
Wireless Toolkit
Nokia WAP Toolkit
PalmOS Emulator
J2SE
Java Archive ( JAR ) file format
J2ME
Mobile Information Device Profile (MIDP)
J2EE
Servlets
Cocoon
Übertragungs - Technologien
Hardware
Drahtlose Netze
WAP 2.0
SMS / MMS
Departement Informatik
Universität Basel
Mobile Geräte
http://www.informatik.unibas.ch/lehre
Programmieren mobiler Geräte
Lektion 6
2
Übung 4 : WML / WMLS
TECHNOLOGIE
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
5
Die Java Welt
TECHNOLOGIE
One Size Does Not Fit All
J2SE
 Java 2 Standard Edition
 Kernklassen für Applets und Applikationen
J2EE
 Java 2 Enterprise Edition
 Servlets, JSP, Java Enterprise Beans
 heavy duty enterprise networking, I/O, and DB
features
 Übermenge von J2SE
J2ME
J2ME
J2SE
J2EE
 Java 2 Micro Edition
 Untermenge von J2SE
 Optimiert für wireless mobile devices
 Definiert durch Profile und Konfigurationen
(MIDP, CLDC)
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
6
TECHNOLOGIE
andere Wireless Java Technologien
 PersonalJava + JavaPhone: Vorläufer von J2ME

Kontakt-Smart Card
 JavaCard
Kontaktlose Smart Card
Smart Button
8/16-bit CPU @ 3.7 MHz
1kB RAM + 16kB EEPROM /flash
Java Card Virtual Machine
Java Card API
Java Card Development Kit JCDK
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
SIM Card
USB Token
http://www.informatik.unibas.ch/lehre
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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
Profile
MIDP1.0
Departement Informatik
Universität Basel
MIDP2.0
CDC
FP
Programmieren mobiler Geräte
Lektion 6
PP
http://www.informatik.unibas.ch/lehre
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)
 Connected Limited Device Configuration
 für kleine mobile Geräte
CDC
 Connected Device Configuration
 für TV Set Top Boxes, Internet TV, Automobile Unterhaltungs-/NavigationsSysteme (gutes Netzwerk, grosser Screen, kleine CPU)
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
10
CLDC Connected Limited Device Configuration
TECHNOLOGIE
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
12
CDC Profile
TECHNOLOGIE
PDAP
 PDA Profile: MIDP + PIM + FC
(FileConnection für Memory Card etc)
FP
 Foundation Profile: Network, no GUI, 1 MB
ROM, 0.5 MB RAM
PBP
 Personal Basis Profile: FP, Robust Network,
AWT GUI, 2/1 MB ROM/RAM
PP
 Personal Profile: CDC, FP, hi-fidelity GUI,
Applets, 2.5/1 MB ROM/RAM
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
13
Optional Packages JSR
 PIM : Personal Information Manager
 BTAPI : Bluetooth
 WMA : Wireless Messaging
TECHNOLOGIE
Public Review
Proposed Final Draft
Final Release
 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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
14
TECHNOLOGIE
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
15
MIDlet = J2ME Application
TECHNOLOGIE
Sandbox
 Security
 kein Zugriff auf Telefonfeatures
JAM
 Java Application Manager kontrolliert
Installation, Ausführung, Löschen von
MIDlets; Ausführungsumgebung, ErrorHandling
MIDlet Lifecycle
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
16
ENTWICKLUNG
Entwicklung in J2ME
0
1
2
3
4
5
6
Lauffähiges Midlet aus 2 Files
 JAR : Archiv mit den Klassen und Resourcen
 JAD : Beschreibung des JAR und globale Einstellungen
 Preverify
 Obfuscation
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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)
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
19
Schritt 3 : JAD
ENTWICKLUNG
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
20
ENTWICKLUNG
Schritt 4 & 5: Emulator & Debugging
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
21
Schritt 6 : Deployment
ENTWICKLUNG
Serial Cable Connection
Infrarot
Bluetooth
Mobiles Internet Download
OTA (over-the-air)
Discovery + JAD downloading
through Non-IP Transport
oder
Downloading
JAR
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
22
MIDP Application Programming Interface
Input/Output
Network Connection
HTTP etc
Midlet
Lifecycle
startApp()
pauseApp()
destoyApp()
Record Management System
Zum Zugriff auf den
Persistenten Speicher
(byte array)
Core von J2SE
MIDP 1.0
neu in 2.0
ENTWICKLUNG
LCD User Interface
java.io
Screen-based
java.lang
High level
GUI Elemente
java.util
Low level
javax.microedition.io
Canvas, Pixel
javax.microedition.lcdui
Game
javax.microedition.lcdui.game
GameCanvas
javax.microedition.media
Layer
javax.microedition.media.control
Sprites
javax.microedition.midlet
javax.microedition.pki
javax.microedition.rms
Zusatz-Pakete
WMA
MMAPI
Multi Media
Wireless Messaging
Sound
MessageConnection
MIDI
MessageListener
Video
Departement Informatik
Programmieren mobiler Geräte
Universität Basel
Lektion 6
Sound
Mobile Media Player
VolumeControl
Public Key
Secure Connections
http://www.informatik.unibas.ch/lehre
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/
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
24
Entwicklungsplattformen
ENTWICKLUNG
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...
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
25
WERKZEUG
Wireless ToolKit 2.0
WTK 2.0
../wtk20/index.html
KToolbar
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
26
Verzeichnisse
WERKZEUG
../wtk20/BinaryReleaseNotes.html
Projekte
Programme
Dokumentation
JAVA DOC, PDF
MIDP , MM, WMA
Klassenbibliotheken
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
27
WERKZEUG
MIDlet Projekt öffnen
KToolbar
MIDlet
erzeugen
MIDlet
starten
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
28
MIDlet Deployment
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
WERKZEUG
http://www.informatik.unibas.ch/lehre
29
Neues Projekt
WERKZEUG
KToolBar
• 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:
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
30
Java Editor von Eclipse nutzen
WERKZEUG
Pfad auf KTool apps Ordner
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
31
WERKZEUG
Java Editor von Eclipse nutzen
Source Pfad
../wt20/apps/neuesProjekt/src
Binary Pfad
../wt20/apps/neuesProjekt/tmpclasses
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
32
Java Editor von Eclipse nutzen
WERKZEUG
Klassen Bibliothek
hinzufügen
midpapi
../wt20/lib/midpapi.zip
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
33
Java Doc
../wtk20/docs/api/midp/
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
WERKZEUG
http://www.informatik.unibas.ch/lehre
34
MIDlet Information, JAD File
WERKZEUG
MIDlet Welcome.java
hinzufügen
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
35
Welcome.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
WERKZEUG
LCD User Interface
Screen-based
High level
GUI Elemente
Low level
Canvas, Pixel
public class Welcome extends MIDlet implements
{
private Display display;
// Reference to
private TextBox tbMain;
// A Textbox to
private Command cmExit;
// A Command to
Interface
CommandListener
CommandAction()
CommandListener
Display object for this MIDlet
display a message
exit the MIDlet
public Welcome()
{
display = Display.getDisplay(this);
Constructor
cmExit = new Command("Exit", Command.SCREEN, 1);
Factory
statische Methode,
erzeugt display Instanz
tbMain = new TextBox("Welcome", "Core J2ME", 50, 0);
tbMain.addCommand(cmExit);
tbMain.setCommandListener(this);
}
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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();
}
}
}
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
Command
Reagiert auf Command c,
in Displayable s
MIDlet
Methoden
für Exit
http://www.informatik.unibas.ch/lehre
37
Run Welcome.java
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
WERKZEUG
http://www.informatik.unibas.ch/lehre
38
Command & Command Listener
WERKZEUG
command object
Event Informationen
label, type and priority
Beispiel:
cmHelp = new Command(“Help”, Command. HELP, 1);
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
39
Command types:
javax.microedition.lcdui.Command
Value
Description
BACK
A request to move to the previous screen
CANCEL
A request to cancel an operation
EXIT
A request to exit the MIDlet
HELP
A request to display help information
ITEM
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
OK
SCREEN
STOP
Departement Informatik
Universität Basel
WERKZEUG
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
40
WERKZEUG
TooManyCommands
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
Interface
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);
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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);
}
View
public void startApp()
fmMain
{
display.setCurrent(fmMain);
}
public void pauseApp()
{ }
public void destroyApp(boolean unconditional)
{ }
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
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
Departement Informatik
Universität Basel
Programmieren mobiler Geräte
Lektion 6
http://www.informatik.unibas.ch/lehre
43
Herunterladen