Andreas Rozek Lesehinweise letzte Änderungen Gästebuch-Eintrag Mitteilungen an den Autor  English Version  zur Leitseite zum vorherigen Thema zum nächsten Thema  zur ersten Seite zur vorherigen Seite zur nächsten Seite

Waba

Waba ist eine kostenlose Laufzeit- und Entwicklungsumgebung für "kleine Systeme", vorrangig "Personal Digital Assistants" (PDAs) unter PalmOS und WindowsCE. Der Befehlsumfang von Waba ist eine Untermenge von Java, und die zugehörige "Virtuelle Maschine" kann Java-Klassendateien ausführen, sofern nur Waba-eigene bzw. Plattform-unabhängige Klassen verwendet werden.

Die vorliegenden Seiten beschreiben die (wenigen) Arbeiten des Autors mit Waba. Seit mit der KVM eine vollständige Java-VM und mit PersonalJava eine "professionellere" Laufzeitumgebung für PDAs und ähnliche Geräte mit geringen Speicher- und Rechenkapazitäten zur Verfügung steht, lohnt der Umgang mit diesem System nur noch für Plattformen ohne eine solche Java-Implementierung.

Bitte beachten Sie auch die Betrachtungshinweise sowie die Liste der letzten Änderungen!

Themenübersicht

Die folgende Themenübersicht führt Sie unmittelbar zu der von Ihnen gewünschten Information - klicken Sie dazu einfach auf das Thema Ihrer Wahl:

Kurzbeschreibung

Waba [1] ist eine kostenlose Laufzeit- und Entwicklungsumgebung für "kleine Systeme", vorrangig "Personal Digital Assistants" (PDAs) unter PalmOS und WindowsCE. Da alle Komponenten im Quelltext vorliegen, existieren inzwischen jedoch auch Portierungen für andere Plattformen (z.B. MS/DOS oder das Newton MessagePad von Apple) [2].

Laufzeitumgebung

Der Befehlsumfang von Waba ist eine Untermenge von Java; die zugehörige "Virtuelle Maschine" kann Java-Klassendateien ohne vorherige Modifikation laden und ausführen, sofern nur Waba-eigene bzw. Plattform-unabhängige Klassen verwendet werden.

Nicht unterstützt werden insbesondere

  • die Datentypen long und double,
  • das Werfen von Ausnahmen (exceptions) sowie deren Behandlung und
  • Multithreading.

Entwicklungsumgebung

Waba wird mit einem Satz eigener Laufzeitbibliotheken ausgeliefert, welche die wichtigsten Laufzeitfunktionen, rudimentäre Funktionen für den Zugriff auf Dateien und Dateisysteme, PDA-spezifische "Datenbanken", serielle Schnittstellen und Internet-Verbindungen, sowie grafische Ausgaben und einfache Komponenten für grafische Benutzeroberflächen zur Verfügung stellen. Die folgende Liste gibt einen (nicht-hierarchischen) Überblick über die unter Waba 1.0 verfügbaren Bibliotheken und Klassen bzw. Schnittstellen:

  • waba.fx - 2D-Grafik, Rastergrafiken, Audio
    • ISurface - Schnittstelle für grafikfähige Objekte
    • Color - repräsentiert ein Farbobjekt (ähnlich java.awt.Color)
    • Font - repräsentiert einen Zeichensatz (ähnlich java.awt.Font)
    • FontMetrics - beschreibt die Metrik eines "Font" (ähnlich java.awt.FontMetrics)
    • Graphics - repräsentiert einen Grafik-Kontext (ähnlich java.awt.Graphics)
    • Image - repräsentiert eine Rastergrafik (ähnlich java.awt.Image)
    • Rect - ein (reguläres) Rechteck (ähnlich java.awt.Rectangle)
    • Sound - ermöglicht die Ausgabe einzelner Töne
    • SoundClip - repräsentiert eine Audio-Aufnahme
  • waba.io - Dateien & Dateisysteme, Kommunikation
    • Catalog - repräsentiert eine einfache (PDA-spezifische) "Datenbank"
    • File - repräsentiert eine Datei oder ein Verzeichnis
    • SerialPort - repräsentiert eine serielle Schnittstelle
    • Socket - repräsentiert einen TCP/IP-Socket
    • Stream - enthält fundamentale Ein-Ausgabe-Methoden
  • waba.lang - fundamentale Klassen
    • Object - Basisklasse aller Objekte
    • String - repräsentiert eine einzelne Zeichenkette
    • StringBuffer - eine Folge von Zeichenketten (anders als java.lang.StringBuffer!)
  • waba.sys
    • Convert - dient der Konvertierung zwischen Datentypen
    • Time - repräsentiert Datum und Uhrzeit
    • Vm - enthält eine Reihe fundamentaler Dienste (ähnlich java.lang.System)
  • waba.ui - grafische Benutzeroberfläche
    • IKeys - Konstanten für eine Reihe von Eingabetasten
    • Button - eine einfache Schaltfläche (mit Aufschrift)
    • Check - quadratische Ankreuzfläche
    • Container - Basisklasse für "umgebende" Komponenten (ohne LayoutManager)
    • Control - Basisklasse aller Komponenten
    • ControlEvent - von einer Komponente ausgelöstes Ereignis
    • Edit - Texteingabe-Komponente
    • Event - Basisklasse aller Ereignisse
    • KeyEvent - von einer Taste ausgelöstes Ereignis
    • Label - einfache (statische) Textanzeige
    • MainWindow - Hauptfenster einer Applikation (ähnlich java.awt.Frame)
    • PenEvent - vom Stift ausgelöstes Ereignis
    • Radio - kreisförmige Ankreuzfläche (ohne java.awt.CheckboxGroup)
    • Tab - einzelnes Register einer "TabBar"
    • TabBar - eine Registerzeile mit mehreren "Tab"s
    • Timer - repräsentiert einen einer Komponente zugeordneten Zeitgeber
    • Welcome - die "Welcome"-Anwendung der Waba-VM
    • Window - generisches Applikationsfenster (ohne sonderliche Funktionalität)
  • waba.util
    • Vector - dynamisches Feld von Objekten (ähnlich java.lang.Vector)

Außerdem gehören Werkzeuge zum Bündeln von Klassendateien und anderen Ressourcen (wie z.B. Rastergrafiken) für die gewünschte Zielplattform sowie eine Art WabaVM-Emulator (als Java-Applikation, die das Austesten von Waba-Programmen auf einem "richtigen" Rechner ermöglicht) zum Lieferumfang.

Einschränkungen

Neben den bereits genannten Einschränkungen unterliegen Waba-Programme zusätzlich den folgenden Randbedingungen:

  • es ist keine "native code"-Schnittstelle vorhanden, ohne Veränderung des Laufzeitsystems können also nur reine Java-Programme ausgeführt werden;
  • es sind keine Java-Klassen erlaubt, die direkt oder indirekt Plattform-spezifischen (nativen) Code verwenden, wie z.B.
    • das Abstract Windows Toolkit (AWT, verwendet Plattform-spezifische "Peer"-Objekte)
    • Swing-Komponenten (beruhen auf einigen AWT-Klassen) sowie
    • etliche Klassen aus den Paketen java.io und java.net
  • System-bedingt steht meist nur vergleichsweise wenig Arbeitsspeicher zur Verfügung

Java-Klassen und -Klassenbibliotheken, die den genannten Beschränkungen genügen, können prinzipiell auch unter Waba eingesetzt werden. JAR-Archive müssen vorher jedoch entpackt und Klasse für Klasse in das "Paket" mit der gewünschten Waba-Anwendung übernommen werden.

Automatische Erstellung von Waba-Distributionen

Bis ein Waba-Programm auf einen PDA übertragen werden kann, müssen hintereinander mehrere Kommandos mit passenden Aufrufparametern abgesetzt werden. Um diese immer wiederkehrende Arbeit zu vereinfachen, hat sich der Autor eine kleine Windows-Kommandoprozedur geschrieben, welche die meisten der erforderlichen Aufgaben übernimmt:
 

@echo off

rem ****************************************************************************
rem *                                                                          *
rem *  File:        package.bat                         Revision:  1.0         *
rem *                                                                          *
rem *  Contents:    command procedure to package a given Waba application for  *
rem *               PalmOS and WindowsCE PalmPCs                               *
rem *                                                                          *
rem *  Creation:    06.03.1999                 Last Modification:  10.10.2001  *
rem *                                                                          *
rem *  Platform:    IBM-compatible PC running Windows 98SE                     *
rem *                                                                          *
rem *  Environment: Waba 1.0 beta 7                                            *
rem *                                                                          *
rem *  Author:      Andreas Rozek         Phone:  ++49 (711) 677 0682          *
rem *               Kirschblütenweg 15    Fax:    -                            *
rem *             D-70569 Stuttgart       EMail:  Andreas.Rozek@T-Online.De    *
rem *               Germany                                                    *
rem *                                                                          *
rem *  URL:         http://www.Andreas-Rozek.de                                *
rem *                                                                          *
rem *  Copyright:   this software is published under the "GNU Public License"  *
rem *               (see"http://www.gnu.org/copyleft/gpl.html" for details)    *
rem *                                                                          *
rem *  Comments:    (none)                                                     *
rem *                                                                          *
rem ****************************************************************************

rem **** parameter settings ****

rem  set      AppIcon=/i %1%.icon
  set      AppName=%1%
  set    ClassHeap=/l 32768
  set  NativeStack=/t 8192
  set   ObjectHeap=/m 32768
  set    WabaStack=/s 8192
  set WinCE_Folder=/p "\Rozek\Waba\Acquainting"

rem **** compile Waba program ****

rem  echo compiling Waba program...
rem    javac %AppName%.java
rem  echo done
rem  echo .

rem **** create Waba application launcher ****

  echo creating Waba application launcher...
    exegen %AppIcon% %ClassHeap% %NativeStack% %ObjectHeap% %WabaStack% %WinCE_Folder% %AppName% %AppName% %AppName%
  echo done
  echo .

rem **** create resource file ****

  echo creating resource file...
    warp c %AppName% *.class Images\*.bmp
  echo done
  echo .

rem **** remove PalmPilot files ****

  erase *.pdb
  erase *.prc

rem **** that's it! ****


Die Prozedur ist recht spezifisch und wird vor ihrem Einsatz vermutlich erst angepaßt werden müssen. Die in der oben gezeigten Darstellung rot markierten Passagen zeigen möglicherweise zu ändernde Stellen:

  • die Prozedur findet alle erforderlichen Dateien in "\Rozek\Waba\Acquainting" (und zugehörigen Unterverzeichnissen). Hier sollten Sie Ihr Waba-Quellenverzeichnis eintragen;

  • obwohl prinzipiell möglich, verwendet der Autor die Kommando-Prozedur nicht zur Übersetzung von Waba-Quelltexten. Im Bedarfsfalle entkommentieren Sie einfach die Zeilen für den Compiler-Aufruf;

  • evtl. erforderliche Rastergrafiken befinden sich konventionsgemäß im Unterverzeichnis Images. Sollten Sie keine Rastergrafiken einbinden oder ein anderes Verzeichnis berücksichtigen wollen, so ändern Sie die Zeile mit dem warp-Kommando entsprechend;

  • da der Autor vornehmlich für PDAs unter Windows CE entwickelt, werden die Paket-Dateien für Geräte unter PalmOS sofort gelöscht. Im Bedarfsfalle können Sie die Lösch-Anweisungen entfernen oder auskommentieren.

Der Aufruf der Kommandoprozedur ist denkbar einfach:

  package <ClassName>

Dabei steht <ClassName> für den Namen der Java-Klasse, die die gewünschte Anwendung enthält. Das Suffix ".java" darf nicht angegeben werden.

Literaturhinweise

[1] Rick Wild et al.
Wabasoft
Leitseite der Firma Wabasoft Corp., von hier aus haben Sie Zugriff auf die Waba-Distributionen, Anleitungen und Beispielprogrammen sowie (von anderen Autoren erstellte) Klassenbibliotheken und Programme
(siehe http://www.wabasoft.com)
[2] "Waba VM ports and VMs with cool features"
die genannte Seite verweist auf eine Reihe von Waba-Portierungen auf andere Plattformen (z.B. MS/DOS, den Compaq iPaq mit StrongARM-Prozessor oder das Newton MessagePad von apple) sowie Erweiterungen der ursprünglichen WabaVM
(siehe http://www.wabasoft.com/vms.shtml)
[3] Waba Diskussionsforum
news://news.massena.com/pilot.programmer.waba
[4] Guilherme Campos Hazan et. al.
SuperWaba
SuperWaba ist eine von etlichen Programmierern gepflegte Erweiterung von Waba, deren neuere Versionen jedoch häufig (und für längere Zeit) nur für PalmOS-Geräte verfügbar sind
(siehe http://www.superwaba.org)
[5] Michael L. Brereton
ewe
ewe ist eine z.T. erheblich erweiterte Version von Waba, die allerdings nur auf PDAs unter Windows CE funktioniert
(siehe http://www.ewesoft.com)

Haftungsausschluß

Bitte beachten Sie auch den Haftungsausschluß des Autors!

http://www.Andreas-Rozek.de/Waba/index.html    (letzter Stand: 06.04.2002)