Inhaltsverzeichnis | 6 |
Vorwort | 12 |
1 Einführung | 18 |
1.1 Warum Java? | 18 |
1.2 Einschränkungen | 20 |
1.3 Java Micro Edition (Java ME) | 20 |
1.3.1 Weitere Normierungsbestrebungen | 21 |
2 Erste Schritte | 22 |
2.1 Das erste Programm | 22 |
2.1.1 Die Werkzeuge | 22 |
2.1.2 Entwicklungsschritte | 23 |
2.2 Installationsvorbereitungen | 26 |
2.2.1 Packen | 26 |
2.2.2 Packen mit Speicherplatzminimierung | 28 |
2.3 Simulation der Luftschnittstelle | 28 |
2.4 Installation auf einem Gerät | 30 |
2.5 Hinter den Kulissen | 32 |
3 Konfigurationen und Profile | 34 |
3.1 CLDC | 35 |
3.1.1 CLDC und Java | 36 |
3.1.2 Bibliotheken für CLDC | 36 |
3.1.3 Einschränkungen im Vergleich zur Java SE | 37 |
3.2 CLDC 1.1 im Vergleich zu 1.0 | 38 |
3.3 CDC | 39 |
3.4 MIDP | 39 |
4 MIDlet-Grundlagen | 42 |
4.1 Der MIDlet-Lebenszyklus | 42 |
4.2 MIDlet- und System-Merkmale | 47 |
4.3 Starten externer Anwendungen | 50 |
4.4 Zugriff auf Ressourcen | 52 |
4.4.1 jar-Verzeichnisstruktur | 52 |
4.4.2 Ressourcen-Datei lesen | 54 |
5 Benutzungsschnittstellen | 58 |
5.1 Bildschirmanzeigen verwalten | 59 |
5.2 Virtuelle Bildschirme | 60 |
5.2.1 Alert | 61 |
5.2.2 TextBox | 65 |
5.2.3 Choice | 69 |
5.2.4 List | 71 |
5.2.5 Form | 75 |
5.2.6 Ereignisverarbeitung für Displayable-Objekte | 77 |
5.3 Items – Komponenten für Formulare | 80 |
5.3.1 Ereignisverarbeitung für Items | 81 |
5.3.2 Layout von Items | 81 |
5.3.3 Ereignisverarbeitung in Form-Objekten | 83 |
5.3.4 Spacer | 85 |
5.3.5 StringItem | 85 |
5.3.6 ImageItem | 86 |
5.3.7 ChoiceGroup | 88 |
5.3.8 TextField | 90 |
5.3.9 DateField | 90 |
5.3.10 Gauge | 92 |
5.3.11 CustomItem | 93 |
5.4 Canvas | 98 |
5.4.1 Ereignisverarbeitung | 101 |
5.4.2 Verarbeitung von Tastaturereignissen | 102 |
5.4.3 Zeichnen mit paint() und Graphics | 103 |
5.5 Software-Muster für spezielleProblemstellungen | 110 |
5.5.1 Steuerung von Threads | 110 |
5.5.2 Steuerung von Runnable-Objekten | 113 |
5.5.3 Synchronisation von AMS und Berechnung | 114 |
5.5.4 Bildflackern vermeiden mit Double Buffering | 115 |
5.5.5 Minimierung der Zeichenoperationen | 115 |
5.5.6 Synchronisation von Anzeige und Berechnung | 116 |
5.5.7 Anwendungsbeispiel | 117 |
5.6 API für Spiele | 123 |
5.6.1 GameCanvas | 123 |
5.6.2 TiledLayer | 124 |
5.6.3 Sprite | 125 |
5.6.4 LayerManager | 128 |
5.6.5 Zusammenspiel | 128 |
5.6.6 Transparenz | 133 |
5.6.7 Game Builder | 135 |
5.7 2D-Grafik mit SVG | 135 |
5.7.1 Animierte SVG-Grafik | 139 |
5.7.2 Manipulation von SVG-Grafiken | 141 |
6 Record Management System | 148 |
6.1 Klasse RecordStore | 149 |
6.2 Benutzungsablauf | 150 |
6.3 Operationen auf Datensätzen | 151 |
6.3.1 Schreiben | 152 |
6.3.2 Lesen | 153 |
6.3.3 Löschen, Ändern, Datensatzgröße | 155 |
6.4 Enumerationen | 155 |
6.4.1 Sortierte Verarbeitung | 156 |
6.4.2 Filter | 157 |
6.5 Ereignisverarbeitung | 158 |
6.6 Verwaltungsfunktionen | 158 |
7 Dateisystem | 160 |
7.1 Dateisystem-Operationen | 161 |
7.1.1 Speicherkarten einfügen und entfernen | 161 |
7.2 Verzeichnis- und Datei-Operationen | 162 |
7.3 Sicherheit | 166 |
8 Persönliche Informationen verwalten | 168 |
8.1 Aufbau | 168 |
8.2 Attribute | 173 |
8.3 Einträge verwalten | 174 |
8.3.1 Neue Einträge | 175 |
8.3.2 Einträge ändern | 178 |
8.3.3 Einträge löschen | 178 |
9 Multimedia | 180 |
9.1 Konzept | 180 |
9.1.1 Eigenschaften der Geräte | 182 |
9.2 Audio | 183 |
9.2.1 Einfache Tonerzeugung | 183 |
9.2.2 Tonfolgen | 185 |
9.2.3 Wiedergabe von Audio-Dateien | 186 |
9.2.4 Lautstärke- und andere Einstellungen | 187 |
9.2.5 MIDI | 189 |
9.2.6 Aufnahme | 190 |
9.3 Video | 190 |
9.3.1 Kameraaufnahme | 196 |
9.3.2 Thumbnails | 198 |
9.4 Ereignisverarbeitung | 199 |
10 Internet-Anbindung | 200 |
10.1 HTTP | 202 |
10.1.1 Verbindung mit GET | 203 |
10.1.2 Verbindung mit POST | 207 |
10.1.3 Cookies | 217 |
10.2 HTTPS | 218 |
10.3 Socket | 220 |
10.4 Datagram | 221 |
11 3D-Grafik | 224 |
11.1 Klassen im M3G | 226 |
11.1.1 Loader und Object3D | 226 |
11.1.2 Graphics3D | 226 |
11.1.3 World und Group | 229 |
11.1.4 Transformable und Node | 232 |
11.1.5 Camera und Light | 234 |
11.2 Ein erstes Beispiel | 235 |
11.3 Animation | 240 |
11.3.1 KeyframeSequence | 240 |
11.3.2 AnimationTrack und AnimationController | 241 |
11.3.3 Ein Animationsbeispiel | 243 |
11.4 Immediate Mode | 246 |
11.4.1 VertexBuffer und VertexArray | 247 |
11.4.2 Rendern im Immediate Mode | 248 |
11.5 Mesh | 255 |
11.5.1 Spezialeffekte | 261 |
11.6 Das OpenGL ES API | 262 |
11.6.1 Initialisierung | 263 |
11.6.2 3D-Daten | 265 |
11.6.3 Szene rendern | 267 |
12 SMS senden und empfangen | 272 |
12.1 Einfache SMS senden | 273 |
12.2 SMS über eine Server-Verbindung senden | 275 |
12.3 SMS asynchron empfangen | 277 |
12.4 Push-Dienst – MIDlet mit einer SMS wecken | 281 |
12.5 Andere Arten, ein MIDlet zu wecken | 281 |
12.5.1 MIDlet zu einer bestimmten Zeit wecken | 282 |
13 Bluetooth | 284 |
13.1 Überblick Bluetooth-Technologie | 286 |
13.1.1 Netzwerktopologie | 286 |
13.1.2 Der Bluetooth-Stack | 286 |
13.1.3 Bluetooth-Profile | 289 |
13.2 Java APIs für Bluetooth | 290 |
13.2.1 Aufsuchen von Geräten | 293 |
13.2.2 Aufsuchen von Diensten | 306 |
13.3 Dienste nutzen | 312 |
13.4 Weitere Klassen der JABWT | 316 |
13.4.1 L2CAP | 316 |
13.4.2 OBEX | 318 |
14 Location API | 324 |
14.1 Lokalisierung | 324 |
14.2 Lokalisierung mit dem Location API | 327 |
14.2.1 Koordinaten | 330 |
14.2.2 Landmarken | 334 |
14.3 Location API-Beispiele mit dem WTK | 335 |
14.4 Location API-Beispiele mit realen Geräten | 338 |
15 Web-Services | 344 |
15.1 Konzept | 345 |
15.2 Technische Grundlagen | 346 |
15.2.1 Simple Object Access Protocol – SOAP | 347 |
15.3 Beispiel: SOAP-Anfrage an Google | 348 |
15.4 Automatische Auswertung vonSOAP-Nachrichten | 354 |
15.5 Automatische ErzeugungSOAP-Nachrichten | 361 |
15.6 Andere Werkzeuge zur SOAP-Unterstützung | 363 |
16 Sicherheit und Signierung | 364 |
16.1 Erlaubnisse und Sicherheitsbereiche | 364 |
16.2 Signaturen und Zertifikate | 366 |
16.2.1 Signieren mit dem WTK | 367 |
16.2.2 Verifizierung | 368 |
16.3 Zertifizierung in der realen Welt | 368 |
16.3.1 Schlüssel für gegebene Hardware erzeugen | 368 |
16.4 Java Verified Program | 369 |
16.5 Datensicherheit | 369 |
16.5.1 Verschlüsselung | 370 |
17 JavaFX | 376 |
18 Es funktioniert nicht! – Warum? | 378 |
18.1 Was tun? | 378 |
19 Werkzeuge | 380 |
19.1 Apache Web-Server – Installation,Einrichtung und Nutzung | 380 |
19.1.1 Konfiguration | 382 |
19.1.2 Kontrolle mit dem WTK | 383 |
19.2 Tomcat Container | 385 |
19.2.1 Vorbedingungen | 385 |
19.2.2 Installation und Start unter Windows | 386 |
19.2.3 Installation und Start unter Linux | 386 |
19.2.4 Fehlerbehebung | 386 |
19.3 Automatisierte Abläufe mit Ant | 387 |
19.4 NetBeans | 396 |
19.4.1 Java ME-Projekt anlegen und zum Laufen bringen | 396 |
19.4.2 Over the Air Simulation | 397 |
19.5 Web-Server mit Ant einbinden | 397 |
19.6 J2ME Polish | 399 |
19.7 Gerätespezifische Daten finden | 400 |
A Anhang | 402 |
A.1 Pfad und Systemvariablen einstellen | 402 |
A.1.1 Linux | 402 |
A.1.2 Windows XP | 402 |
A.2 Mini-Web-Server | 403 |
A.3 Bluetooth-Beispiele | 405 |
A.3.1 Ein OBEX Beispielprogramm | 405 |
A.3.2 Ein ObjectPush-Beispielprogramm | 414 |
A.4 JSR-Übersicht | 417 |
A.5 Übergreifende Spezifikation MSA | 419 |
A.6 XML Kurzbeschreibung | 421 |
A.6.1 Syntax | 422 |
A.6.2 Dokumenttyp-Definition | 424 |
A.6.3 Namensräume | 424 |
A.6.4 XML-Schema | 425 |
A.7 Verzeichnis der Beispielprogramme | 426 |
Literaturverzeichnis | 430 |
Glossar | 436 |
Stichwortverzeichnis | 444 |