J2ME Getting started!

There is a lot of information about programming mobiles in Java in English and Russian but not that much in German. That's why I decided to write this in German first, and then, if I receive feedback translate into English.


Nachdem ich mehrere Tage gebraucht habe, mich in dem "Mobile Java Fachchinesisch" zurecht zu finden, und in den www.sun.com Seiten eine Struktur zu erkennen, habe ich mich entschlossen, den Nachfolgern das Leben einfacher zu machen und dieses "Get Started!" Tutorial zu schreiben.
Also, du hast ein Javafähiges Händy, hast Java Kenntnisse und willst so schnell wie möglich dein erstes "hello world" schreiben. Dann los geht's.

Erstmal solltest du in Erfahrung bringen, was dein Händy "drauf hat". "Javafähig" ist eher ein Marketingbegriff, und hat wenig Aussagekraft. Die Liste gibt einen Überblick über die unterstützte Standards gängiger Handys:
http://developers.sun.com/techtopics/mobility/device/pub/device/list.do
lokale Kopie (veraltet (2))


Nun sind viele Abkürzungen aufgetaucht, die erstmal erklärt werden:
J2ME - (Java 2 Micro Edition) ist nicht "J2SE für Handys". J2ME ist eine Interessengruppe, die von Händyherstellern(1 und Sun vertreten ist. J2ME ist ein Oberbegriff für mehrere Standards, die was mit Java und eingebeteten Geräten zu tun haben.

CLDC - (Connected Limited Device Configuration) Anworderungen und Spezifikation javafähiger eingebeteter Hardware mit beschrämkten Resourcen. Für den Anwender und Programmierer der Java-ANwendungen kaum interessant.

MIDP - (Mobile Information Device Profile) Das ist eher interessant, denn abhängig davon welche Version du hast 1.0 oder 2.0 bist du besser oder schlechter dran beim Programmieren. MIDP definiert, welche Java Klassen das Gerät unterstützen muss, um "Javafähig" heißen zu dürfen. MIDP-2.0 bietet Multimedia- und Kommunikationsklassen, die jeden Programmierer begeistern können. Der Anblick der Liste MIDP-1.0 Klassen führt dagegen zu Depression.
Aber auch wenn dein Handy nur MIDP-1.0 unterstützt, ist noch nicht alles verloren. Außer MIDP - Klassen, die jeder Gerät unterstützen muss, bieten viele Hersteller eigene Klassenbibliotheken an, die die Programmierung von Multimedia, Kommunikation und Zugriffe auf Dateisystem ermöglichen.
Übersicht über die Klassenbibliotheken
MIDP-1.0 MIDP-2.0 MIDP-1.0 mit Siemenserweiterung
java.io
java.lang
java.util
javax.microedition.io
javax.microedition.lcdui
javax.microedition.midlet
javax.microedition.rms
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
java.io
java.lang
java.util
javax.microedition.io
javax.microedition.lcdui
javax.microedition.midlet
javax.microedition.rms
com.siemens.mp
com.siemens.mp.color_game
com.siemens.mp.game
com.siemens.mp.gsm
com.siemens.mp.io
com.siemens.mp.lcdui
com.siemens.mp.m55
com.siemens.mp.media
com.siemens.mp.media.control
com.siemens.mp.ui

Wie man sieht, bein den einzelnen Herstellern wird sehr fleißig eigenes Süppchen gekocht. Der Programmierer freut sich zwar über die komfortable Klassen, aber bei ihrer Verwendung geht die Portabilität der Anwendung natürlich verloren.

MMAPI - (Mobile Media API) Multimedia Klassenbibliotheken
WMA - (Wireless Messaging API) Klassenbibliotheken für Kommunikation über Protokole höheren Schichten wie z.B. HTTP.

Nun, nachdem wir wissen, was wir von unserem Gerät zu erwarten haben, wollen wir rausfinden, was wir für minimale Programmierumgebung brauchen:
- Erstens J2SE SDK. Ja, es ist kein Tippfehler, Java2 Standard Edition SDK leistet auch bei mobilen Geräten die ganze Arbeit.
- Nachdem J2SE installiert wurde, muss Wireles Tool Kit WTK her. WTK liefert alle oben beschrieben Klassenbibliotheken, Kompile- und Simulationsumgebung. Nach der WTK Installation lese das User Guidde

Wen du bis hierher geschafft hast, hast du im Prinzip alles, um Programme in Java für dein Händy zu schreiben. Du Kannst bereits die mit WTK gelieferte Beispiele im Simulator ausführen.


Die Java Programme für Handys werden MIDlets genannt. Die Hauptklasse des Programms muss zwingend von der Klasse MIDlet erben. Das vom J2SE gewohnte Einsprungspunkt in das Programm public static void main() wird bei MIDlets durch public void startApp() ersetzt.


Das erste Programm firstMidler tut nichts. Es zeigt die Struktur eines minimalistischen MIDlet Programms.
firstMidlet.html  firstMidlet.java

Nun können wir endlich das abligatorische "Hello World" schreiben.
helloWorld.html  helloWorld.java

Nachdem wir dem Handy beigebracht haben, wie es seinem Besitzer was "sagen" kann, wollen wir mal schauen, wie es die Eingabe vom Benutzer entgegen nimmt.
input.html  input.java

Und, wie geht es weiter?
Die oben beschriebenen Programme benutzen nur die standard MIDP-1.0 Klassen, die mit WTK von SUN kompilliert und im mitgelieferten Emulator ausgeführt werden können. Die meisten Handyhersteller bieten eigene SDKs, und Klassenbubliotheken an. Um alle Mögligkeiten Deines Geräts auszureizen, solltest du auf jeden Fall auf der Webseite Deines Handyherstellers umschauen.

Viel Spaß!

Links

1) Entwicklerportal von Siemens. Nach der kostenloser Registrierung kann man SMTK (Siemens Mobile Tool Kit) runterladen
2) SiMoCo ein wunderbarer Manager für Siemens Handys, dem das original von Siemens nicht mal das Wasser reichen kann. Ich benutze es zum Download der .jar Dateien auf mein CF62




Fußnoten:
(1) Genauer gesagt, Hersteller der eingebeteten Geräte, die in Java programmiert werden.

(1) Genauer gesagt, Hersteller der eingebeteten Geräte, die in Java programmiert werden.

(2) Vielen Dank an Michael Braun fuer den Hinweis.
Copyright 2004 by Heinitz Valentin. heinitz(at)freenet(dot)de