Breymann / Mosemann | Java ME | E-Book | www2.sack.de
E-Book

E-Book, Deutsch, 449 Seiten

Breymann / Mosemann Java ME

Anwendungsentwicklung für Handys, PDA und Co.
2. Auflage 2008
ISBN: 978-3-446-41631-4
Verlag: Carl Hanser Fachbuchverlag
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)

Anwendungsentwicklung für Handys, PDA und Co.

E-Book, Deutsch, 449 Seiten

ISBN: 978-3-446-41631-4
Verlag: Carl Hanser Fachbuchverlag
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)



JAVA MACHT MOBIL
- Einstieg in die Konzepte und technischen Grundlagen der Programmierung mobiler Endgeräte mit der Java Micro Edition

- Mit praktischen Hinweisen und zahlreichen Beispielen, die auf unterschiedlicher Hardware getestet wurden und die leicht nachvollzogen werden können

- Setzt auf kostenlos verfügbare Software

- Im Internet: Programmcode zu den Beispielen und ergänzendes Material unter www.java-me.de

Sie wollen mobile Anwendungen mit Java ME entwickeln? Dann finden Sie in diesem Buch eine fundierte und verständliche Einführung. Die Autoren erklären, welche Konzepte der Software für mobile Anwendungen zugrunde liegen und wie sie technisch realisiert werden. Sie legen den Schwerpunkt auf die Softwareentwicklung für Geräte mit begrenzten Ressourcen wie Handys und PDAs.

Mit Hilfe zahlreicher Beispiele lernen Sie, eigene mobile Anwendungen zu schreiben und diese als Dienstleistungen auf einem Server anzubieten. Sowohl die Client- als auch die Server-Sicht werden behandelt. Die Autoren geben eine Fülle programmiermethodischer Hinweise und stellen nützliche Werkzeuge zur Entwicklung mobiler Anwendungen mit Java vor. Das umfangreiche Stichwortverzeichnis und das Glossar machen das Buch zu einem wertvollen Nachschlagewerk für die tägliche Arbeit.

Die zweite Auflage wurde durchgehend aktualisiert und in den Bereichen Location API, OpenGL-Bibliothek für Grafik, Scalable Vector Graphics und Sicherheit erweitert.

AUS DEM INHALT: Konfigurationen und Profile: CLDC/CDC, MIDP - MIDlet-Grundlagen - GUI und GUI-Komponenten: Canvas, Thread-Steuerung, API für Spiele, 2D-Grafik mit SVG - Record Management System - Dateisystem - Persönliche Informationen verwalten - Multimedia - Internet-Anbindung - 3D-Grafik - SMS senden und empfangen - Bluetooth - Location API - Web-Services - Sicherheit und Signierung

Die AutorenProf. Dr. Ulrich Breymann und Prof. Dr. Heiko Mosemann sind Professoren für Informatik an der Hochschule Bremen. Sie verwenden Java und Java ME seit vielen Jahren erfolgreich in der Lehre.

Breymann / Mosemann Java ME jetzt bestellen!

Weitere Infos & Material


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



Sicher kann man ein schlechtes (oder gutes) Programm in jeder Programmiersprache schreiben, und die Frage, welche die »beste« Programmiersprache ist, bewegt viele Gemüter. Wenn Software effizient entwickelt werden soll, müssen bei der Auswahl einer Programmiersprache verschiedene Kriterien beachtet werden, wie etwa die Verfügbarkeit von Entwicklungsumgebungen. Aus softwaretechnischer Sicht hat C das Manko, dass es die Objektorientierung nicht unterstützt. Java scheint aus folgenden Gründen am besten im Vergleich zum verbleibenden hauptsächlichen Konkurrenten C++ geeignet:

• Java gibt es auf über 1,8 Milliarden mobilen Endgeräten, und etwa 80 % aller neuen verkauften Handys und PDAs usw. basieren auf Java.

• Java Bytecode ist auf allen JVM lauffähig, und jedes Betriebssystem von praktischer Bedeutung hat eine JVM. Der Aufwand, eine Anwendung auf ein anderes System zu portieren, ist damit sehr klein und oft gleich null.

• Java hat ein API (Application Programming Interface) für sicherheitsrelevante Abläufe. Dazu gehören Authentifizierung, die Überprüfung von Signaturen und die Vergabe von Rechten (Autorisierung).

• Java ist auf diesem Gebiet ähnlich wie C++ sehr weit verbreitet und hat eine große Community. Es gibt Foren für Entwickler bei allen namhaften Herstellern.

• Java-Anwendungen laufen in einer »Sandbox«. Die Java Virtual Machine (JVM) wacht darüber, dass ein Absturz eines Programms keine anderen Anwendungen stört. Darüber hinaus ist der Bytecode vor der Ausführung mit einem Prüfsummenverfahren verifiziert worden, um die Integrität des Codes sicherzustellen. Unbemerkte Veränderungen, zum Beispiel durch ein Virus, werden dadurch deutlich erschwert.

• : Java hat einen Garbage Collector, sodass keine Speicherlecks auftreten. In C++ können Speicherlecks dagegen nur durch sorgfältige Programmierung vermieden werden.

• : Es gibt einen C++-Standard (ISO 14882), aber keinen Java-Standard. Der C++-Standard umfasst nur einen sehr kleinen Anteil von Bibliotheken, zum Beispiel gibt es nichts zu gra.schen Benutzungsoberflächen (GUI - engl. für graphical user interface) – alle derartigen APIs und Bibliotheken sind plattformspezifisch. Java hingegen hat eine reichliche Menge an APIs, nicht nur für grafische Benutzungsoberflächen, sondern für die Vernetzung und anderes. Die Spezifikationen für alle Erweiterungen der Java-Plattform entstehen im von Sun relativ demokratisch gestalteten Java Community Process [JCP]. In diesem Konsortium gibt Sun die Spielregeln vor, nach denen die Expertengruppen neue Spezifikationen austüfteln. JCP-Mitglieder, die ein neues Feature entwickeln, veröffentlichen dabei als Erstes ein JSR (Java Specification Request). Auf der Website www.jcp.org sind viele der JSRs samt der fertig gestellten Spezifikationen für jedermann einsehbar. Auch interessierte Einzelpersonen können am JCP teilnehmen. Weil so gut wie alle wichtigen Softwareunternehmen und auch Open-Source-Organisationen wie die Apache Software Foundation im JCP mitarbeiten, ist eine breite Marktakzeptanz gesichert und damit ein De-facto- Standard gegeben.

Es soll nicht verschwiegen werden, dass der Vorteil der Portabilität auch mit Nachteilen verbunden sein kann. Auf Desktop-PCs sind Java-Programme im Allgemeinen genauso schnell wie C++-Programme, weil die JVM einen Just-intime- Compiler aufruft.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.