Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
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 Browser-Inhalt ä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 Editiondowntop

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 9.600 Baud spezifiziert. Die Winzig-Variante setzt auf Betriebssysteme wie ein »großes« Linux oder Windows auf, aber genauso gut auf Symbian OS (dem bekanntesten Betriebssystem für mobile Endgeräte), 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 Konfigurationendowntop

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 zur Zeit 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 - daher steht auch das L: Limited. Die Geräte verfügen über einen Speicher von 128-512 KB. Sie können Netzverbindungen mit maximal 9.600 bps betreiben und arbeiten in der Regel mit Batterie. Das CLCD nutzt eine eigene virtuelle Maschine, die KVM1 genannt wird. 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.

Die Pakete der J2ME sind eine Teilmenge der J2SE, insbesondere java.lang (VM-Systemklassen) und java.io (Datei-Ein-/Ausgabe). 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://www.java-tutor.com/aufgaben/bond.txt";
StringBuffer b = new StringBuffer();
StreamConnection c = (StreamConnection) Connector.open( url );
InputStream s = c.openInputStream();
for ( int c; ( (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 9.600 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 Profiletoptop

Profile setzen direkt auf Konfigurationen auf und erweitern diese etwa um grafische Oberflächen, implementieren Netzwerkprotokolle und geben 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. Das wichtigste Profil ist:

Mobile Information Device Profile (MIDP)

Das Profil MIDP wurde 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.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 19.1 Ein einfaches Midlet


Beispiel Ein Midlet, 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 b ) { }
  
  public void commandAction( Command c, Displayable s )
  {
    if ( c == exitCommand )
    {
      destroyApp( false );
      notifyDestroyed();
    }
  }
}

Zusätzlich zu der LCDUI-Bibliothek (Highlevel-API) kann jedes Gerät eigene Lowlevel-APIs anbieten. MIDP implementiert für das Generic Connection Framework die Klasse 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 sie 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 Vorbereitung beziehungsweise geplant. Das MIDP ist bisher sehr gut ausgereift. Ein weiteres Profil ist das Personal Digital Assistant Profile (PDAP). Es ist speziell für PDAs entworfen und basiert auf der CLCD-Konfiguration. Eine Untermenge des AWT beschreibt grafische Oberflächen.






1 Auch wegen der vielen Ks ...





Copyright (c) Galileo Press GmbH 2004
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