Java Micro: Einführung

Aus Wikibooks


J2ME[Bearbeiten]

Die Mobile-Edition von Java ähnelt im Grunde genommen sehr der Applet-Programmierung in der Standard-Edition. Der folgende Artikel geht von der Tatsache aus, dass Sie bereits mit den Grundzügen der Java-Programmierung vertraut sind und stellt somit nur die Eigenheiten der J2ME-Programmierung dar.

MIDlet[Bearbeiten]

Begonnen wird mit einem sogenannten MIDlet, das das Grundgerüst der Anwendung darstellt. Dieses enthält 3 Methoden, die jede mobile Applikation implementieren muss:

void startApp()
void pauseApp()
void destroyApp(boolean conditional)
Datei:J2ME MiDlet Funktionen.jpg
Beschreibung der MiDlet-Funktionen und deren Aufruf

Diese werden durch das Java Application Management Software (AMS) dem sogenannten Programmmanager gesteuert. Der Zustand pauseApp(), wird z.B. dann aufgerufen, wenn es zu eingehenden Anrufen kommt oder die Nutzer_innen das Programm unterbrechen. Es werden alle Prozesse des Midlets gestoppt, damit mehr Ressourcen für andere Anwendungen bereit stehen oder die Batterie nicht unnötig belastet wird. Der Zustand startApp() bearbeitet die eigentlichen Aufgaben des Programms. Über die Funktion destroyApp() wird die Anwendung beendet. Hier werden letzte Befehle vor endgültiger Beendigung durchgeführt( z.B. Speicher freigeben).

Die Klasse Midlet[Bearbeiten]

Jedes Java Programm der Mobile Edition hat eine Startklasse, welche sich von javax.microedition.midlet.Midlet ableitet. Daher werden die Programme auch als Midlets bezeichnet. Die Klasse javax.microedition.midlet.Midlet selbst ist abstract und definiert die folgende Schnittstelle:

public abstract class MIDlet {
 
   // Konstruktoren
   protected MIDlet() { }
 
   // Abstrakte Methoden
   protected abstract void startApp() throws MIDletStateChangeException;
   protected abstract void pauseApp();
   protected abstract void destroyApp(boolean _boolean) throws MIDletStateChangeException;
 
   // Implementierte Methoden
   public final void notifyDestroyed() { }
   public final void notifyPaused() { }
   public final void resumeRequest() { }
   public final native String getAppProperty(String string) {}
   public final boolean platformRequest(String string) throws ConnectionNotFoundException { }
   public final native int checkPermission(String string) {}
 }

Das eigene Midlet[Bearbeiten]

Das kleinste eigene Midlet wird entsprechend so implementiert:

package de.bastie.me.sudoku;
 
 import javax.microedition.midlet.MIDlet;
 import javax.microedition.midlet.MIDletStateChangeException;
 
 public class SimpleMidlet extends MIDlet {
 
   protected void startApp () throws MIDletStateChangeException {}
 
   protected void pauseApp () { }
 
   protected void destroyApp (final boolean b) throws MIDletStateChangeException {
     '''this.notifyDestroyed();'''
   }
 }

Wir benachrichtigen die JVM / das Handy über die Beendigung unseres Programms mit Hilfe der Methode notifyDestroyed(). Ein System.exit(int) ist hingegen nicht aufzurufen.