Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Java ist auch eine Insel (2. Aufl.) von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 1.4
Java ist auch eine Insel (2. Auflage)
gp Kapitel 19 Applets, Midlets und Sound
  gp 19.1 Applets und Applikationen – wer darf was?
  gp 19.2 Das erste Hallo-Applet
  gp 19.3 Die Zyklen eines Applets
  gp 19.4 Parameter an das Applet übergeben
    gp 19.4.1 Wie das Applet den Browserinhalt ändern kann
    gp 19.4.2 Den Ursprung des Applets erfragen
    gp 19.4.3 Was ein Applet alles darf
  gp 19.5 Fehler in Applets finden
  gp 19.6 Browserabhängiges Verhalten
    gp 19.6.1 Java im Browser aktiviert?
    gp 19.6.2 Läuft das Applet unter Netscape oder Microsoft Explorer?
    gp 19.6.3 Datenaustausch zwischen Applets und Java-Skripten
  gp 19.7 Datenaustausch zwischen Applets
  gp 19.8 Musik in einem Applet und in Applikationen
    gp 19.8.1 Fest verdrahtete Musikdatei in einem Applet
    gp 19.8.2 Variable Musikdatei über einen Parameter
    gp 19.8.3 WAV- und MIDI-Dateien abspielen
  gp 19.9 Webstart
  gp 19.10 Java 2 Micro Edition
    gp 19.10.1 Konfigurationen
    gp 19.10.2 Profile


Galileo Computing

19.10 Java 2 Micro Edition  downtop

Die J2ME bietet Unterstützung für Konsumgeräte wie PDAs und Mobiltelefone. Die ME besteht, vergleichbar der J2SE, aus einer virtuellen Maschine und einem Satz von Bibliotheken – die allerdings verglichen mit dem Original mächtig abgespeckt haben. Die VM kann auch auf Ressourcen von 128 bis zu 512 KB und einem 16- oder 32-Bit-Prozessor mit 16-32 MHz arbeiten. Der Programmcode der VM ist selbst nur 40 bis 80 KB groß. Die Datenanbindung ist mit 9600 Baud spezifiziert. Die Winzig-Variante setzt auf Betriebssysteme wie ein »großes« Linux oder Windows auf, aber genauso gut auf PalmOS oder WinCE. Das ist die unterste Ebene der Micro-Edition. Wir werden gleich sehen, dass verschiedene Konfigurationen unterschiedliche Anforderungen stellen. Die Darstellung ist technisch und greift etwas vor.


Galileo Computing

19.10.1 Konfigurationen  downtop

Eine Konfiguration beschreibt die Grundfunktionen der Maschine. Dazu gehören fundamentale Basisklassen, aber auch die Unterstützung für Fließkommaoperationen. Zusätzlich beschreibt eine J2ME-Konfiguration auch eine VM. Zwei Konfigurationen sind zurzeit von Sun spezifiziert: CLDC und CDC.

Connected Limited Device Configuration (CLDC)

Die CLDC-Konfiguration ist für kleinere Geräte wie Handys, einfache PDAs, Pagers oder Mobiltelefone definiert. Sie verfügen über einen Speicher von 128-512 KB. Sie können Netzverbindungen mit maximal 9600 Baud betreiben und arbeiten in der Regel mit Batterie. Das CLCD nutzt eine eigene virtuelle Maschine, die KVM genannt wird. (Wegen der vielen Ks in der Spezifikation nennt sich die virtuelle Maschine auf Kleingeräten KVM.) Für den Palm-Pilot ist zum Beispiel eine Implementierung der KVM verfügbar, ebenfalls für Mobiltelefone. Sie ist nicht für 8-Bit-Systeme gedacht. Diesen Bereich deckt die JavaCard besser ab. Hersteller wie IBM haben eigene virtuelle Maschinen im Angebot, die oft schneller in der Ausführung sind. Da die KVM für die CLDC-Konfiguration in der Regel bescheiden ist, definiert der Standard keine Fließkommazahlen mit den Datentypen float und double. JNI ist nicht verfügbar und auch »Reflection« ist stark beschränkt.

Die Pakete der J2ME sind eine Teilmenge der J2SE, insbesondere java.lang (VM-Systemklassen), java.io (Datei-Ein-/Ausgabe), java.util (Datenstrukturen), java.net (UDP-Datagramme und Datei-Ein-/Ausgabe), java.text (minimale Funktionalität für Internationalisierung, speziell Fehlermeldungen), java.security (minimale Funktionalität, Verschlüsselung für serialisierte Objekte). Mit der neuen Bibliothek Generic Connection Framework kann ein mobiles Gerät Verbindungen zur Außenwelt aufbauen und verwalten.

Beispiel   Lade eine Textdatei in einen StringBuffer.
String url = "http://java.sun.com/developer/hello.txt";
StringBuffer b = new StringBuffer();
StreamConnection c = (StreamConnection)Connector.open( url );
InputStream s = c.openInputStream();
int ch;
while( (ch = s.read()) != -1 )
  b.append( (char) ch );

Connected Device Configuration (CDC)

Die CDC unterstützt Geräte, die leistungsfähiger als die CLDC-Geräte sind. Damit sind zum Beispiel SetTop-Boxen, Kopierer, Bildtelefone, leistungsfähigere PDAs, PocketPCs oder auch Spielkonsolen gemeint. Sie besitzen mindestens 512 KB ROM und 256 KB RAM und verfügen über eine Netzwerkverbindung von über 9600 Baud. Die Konfiguration soll prinzipiell mit einer herkömmlichen JVM laufen und aufwärts kompatibel zur J2SE sein. Die Laufzeitumgebung wird CVM genannt. Im Unterschied zur herkömmlichen VM kommt sie mit weniger Speicher aus.


Galileo Computing

19.10.2 Profile  toptop

Profile setzen direkt auf Konfigurationen auf und erweitern diese um grafische Oberflächen und Möglichkeiten zur Datenhaltung (Persistenz). Sie bildet damit eine API, um komplette Applikationen zu entwickeln. Da es unterschiedliche Zielgeräte mit unterschiedlichen Anforderungen gibt, wird auch hier wieder zwischen Profilen für die Konfiguration CLDC und CDC unterschieden. Profile werden im Java Community Process verabschiedet.

Mobile Information Device Profile (MIDP)

Das Profil MIDP ist für die Konfiguration CLDC entwickelt und definiert eine API für Geräte mit persistentem Speicher und Benutzerschnittstellen. Für die API grafischer Oberflächen ist das LCDUI definiert. In der Implementierung fällt eine gewisse Ähnlichkeit zu Applets auf, und daher nennen sich die Applikationen auch Midlets. Midlets haben keine main()-Methode, sondern erben wie Applets von einer (abstrakten) Oberklasse javax.microedition. midlet.MIDlet.

Beispiel   Ein Midelt, welches eine Schaltfläche anzeigt.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloMIDlet extends MIDlet implements CommandListener
{
  private Command exitCommand;
  private Display display;
  public HelloMIDlet()
  {
    display = Display.getDisplay( this );
    exitCommand = new Command( "Ende", Command.SCREEN, 2);
  }
  public void startApp()
  {
    TextBox t = new TextBox( "Hello MIDlet", "Wireless Internet", 256, 0 );
    t.addCommand( exitCommand );
    t.setCommandListener( this );
    t.setTicker( new Ticker("J2ME is cool") );
    display.setCurrent( t );
  }
public void pauseApp() { }
  public void destroyApp( boolean unconditional ) { }
  
  public void commandAction( Command c, Displayable s )
  {
    if ( c == exitCommand )
    {
      destroyApp( false );
      notifyDestroyed();
    }
  }
}

Abbildung 19.1   »Ein einfaches Midlet«
Abbildung

Zusätzlich zu der LCDUI-Bibliothek (High-Level-API) kann jedes Gerät eigene Low-Level-APIs anbieten. MIDP erweitert das Generic Connection Framework um HttpConnection.

Mit dem Record Management System (RMS) lassen sich Daten in binären Tabellen speichern.

Beispiel   Über ein RecordStore lassen sich Daten im RMS speichern. Jeder Datensatz wird mit einer ID verbunden. Das Beispiel   speichert eine Zeichenkette und holt später wieder aus dem Speicher.
RecordStore rs = RecordStore.openRecordStore( "daten", false );
byte speichern[] = "Ulli".getBytes();
int id = rs.addRecord( speichern, 0, speichern.length );
byte holen[] = new byte[100];
int gelesen = rs.getRecord( id, holen, 0 );

Die Zusätze liegen im Paket javax.microedition.

Einen guten Einstieg gibt die Seite http://wireless.java.sun.com/midp/articles/getstart/ beziehungsweise ganz allgemein http://wireless.java.sun.com/.

Weitere Profile

Andere Profile sind in der Vorbereitung beziehungsweise geplant. Das MIDP ist bisher sehr gut ausgereift. Ein weiteres Profile ist das Personal Digital Assistant Profile (PDAP). Es ist speziell für PDAs entworfen und basiert auf der CLCD-Konfigurationen. Eine Untermenge des AWT beschreibt grafische Oberflächen.





Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de