15.37 Alternativen zu AWT und Swing
 
Es gibt Anwendungsfälle, da wollen weder AWT noch Swing passen. Swing ist zwar sehr mächtig, doch kostet es auch viele Ressourcen. AWT ist zwar schlank und recht schnell, bietet aber wenig Komponenten. Sun zeigt auch bisher keine Ambitionen, das AWT weiterzuentwicklen. Das AWT ist aber bei Geräten mit wenig Speicher noch lange nicht abgeschrieben. Für Webseiten müssen es aber oft nicht Applets mit AWT oder sogar Swing-Komponenten sein. Eine einfache Mischung aus HTML und ein wenig JavaScript können durchaus ausreichen. Auch Macromedia Flash ist als alternative Benutzungsschnittstelle eine Wahl, wenn Designer und Programmier nicht beabsichtigen, Benutzungsschnittstellen-Komponenten ganz neu zu entwerfen. Flash ist plattformübergreifend und sehr stark verbreitet – fast jeder Client ist mit einem Flash-Plugin ausgestattet.
15.37.1 XML-Beschreibungen der Oberfläche: Swixml, XUL/Luxor
 
Eine andere Philosophie ist die Trennung der Beschreibung der Benutzungsschnittstelle und der Logik. Zwar ist es ohnehin guter Stil, dies zu trennen, doch einen Schritt weiter geht die völlige Loslösung von Java und dem Hinweis zu einer externen Beschreibung von grafischen Oberflächen, etwa in XML. Diese Lösung hat auch Microsoft erkannt und arbeitet an XAML (Extensible Application Markup Language), einem Teil des grafischen Subsystems Avalon der nächsten Generation von Windows (Longhorn). In der Java-Welt gibt es zwei populäre Implementierungen: Swixml und XUL.
Swixml (http://www.swixml.org/) ist das Ergebnis einer XML-Abbildung von Wolf Paulus; eine Swixml-Datei sieht in etwa folgendermaßen aus:
<?xml version="1.0" encoding="UTF-8"?>
<frame size="640,480" title="Hallo Welt" DefaultCloseOperation="JFrame.EXIT_ON_CLOSE">
<panel constraints="BorderLayout.CENTER">
<label LabelFor="tf" text="Hallo Welt!"/>
<textfield id="tf" Columns="20" Text="Swixml"/>
<button Text="Klick mich" Action="submit"/>
</panel>
</frame>
Swixml nutzt SAX und JDOM, um die XML-Datei einzulesen und zu repräsentieren und zur Laufzeit eine Swing-Anwendung darzustellen.
In eine andere Richtung geht XUL (XML User Interface Language), eine plattformunabhängige Beschreibung der Gui, die ursprünglich nur für Mozilla gedacht war; daher ist XUL auch unter http://www.mozilla.org/xpfe/ aufgehoben. Eine XUL-Datei mit einer Schaltfläche sieht ungefähr so aus:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="bsp" title="XUL-Beispiel"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<button id="open-button" label="Klick mich"/>
</window>
Die Umsetzung dieser XUL-Dateien übernimmt ein Konverter wie Luxor (http://luxor-xul.sourceforge.net/). Das Ergebnis ist wieder eine Oberfläche in Swing.
Weitere Lösungen wie Thinlet, GUI Builder und Ibex sind auf http://xul.sourceforge.net/ aufgelistet.
15.37.2 SWT
 
Da die AWT-Entwicklung nicht erkennbar weitergeführt wird, Swing aber nicht immer die beste Wahl ist, hat IBM für die Entwicklungsumgebung Eclipse eine Alternative zum AWT entwickelt: das SWT (Standard Widget Toolkit). Es erfreut sich größerer Beliebtheit und ist mittlerweile von Eclipse losgelöst: http://www.eclipse.org/swt/. SWT baut auf einem kleinen nativen Kern auf, sodass SWT-Applikationen mit einer DLL oder dynamischen Bibliothek ausgeliefert werden müssen. Eine Umsetzung ist aber auf vielen Plattformen gelungen, neben Windows und MacOS etwa auf diversen Motif-Plattformen, Gtk, Qt und QNX/Photon. (Wer nur unter GNOME und GTK programmiert, der sollte einen Blick auf Java-GNOME unter http://java-gnome.sourceforge.net/ werfen.)
SwingWT
Normalerweise nutzt Swing zur Darstellung der Komponenten die Grundeigenschaften von AWT: mit einem Stift in einer Farbe kann auf eine Oberfläche gezeichnet werden. SwingWT (http://swingwt.sourceforge.net) versucht eine Abbildung vom AWT der Swing-Komponenten.
|