Mit beflügelter Leichtigkeit Ajax-Applikationen in Java erstellen

Get your wingS back!

Benjamin Schmid

Mit der neuesten Version 3.0 hat das Open Source-Framework wingS auch das Ajax-Fieber gepackt. Ebenfalls neu sind ein paar neue Widgets, mit denen das an Swing angelehnte Webframework nun im Wettbewerb mit Eclipse RAP und Echo2 punkten will.

Es bedurfte eines etwas längeren Anlaufs, bis sich Swing zu dem Vorzeigebeispiel für plattformunabhängig saubere und modulare GUIs entwickelt hat. „Warum nicht eine gute API auch für die Erstellung von Web-Applikationen nutzen?“ dachten sich schon anno 2000 die Entwickler von wingS, als Sie die erste Version ihres Webframeworks mit weitestgehend identischer Schnittstelle veröffentlichten. Inzwischen geht der Trend im Web unter dem Schlagwort RIA weiter Richtung Desktop, womit auch seitenorientierte Programmierparadigmen zunehmend überholt sind. Damit wird die komponentenorientierte Entwicklung von Webapplikationen aktueller denn je: Statt HTML, XML und Javascript-Programmierung sind Java, MVC und Events die bevorzugten Mittel und für wingS von Anfang an kennzeichnende Merkmale.

Das einfache HelloWings-Beispiel in Listing 1 vermittelt einen ersten Eindruck in die Anwendungsentwicklung mit wingS und funktioniert in dieser Form unverändert auch mit allen bisherigen Vorgängerversionen. Ausführlichere Einstiegshilfen bieten die offizielle Projekt-Website und Dokumentation sowie unser Artikel in Java Magazin 7/2005: „Beflügelte Weiten“. Mit der Version 3 hat nun auch in wingS das Thema Ajax und RIA massiv Einzug gehalten, allerdings gänzlich ohne den Entwickler mit neuer Komplexität zu belasten. Die technischen Grundlagen hierzu wurden bereits im Vorfeld geschaffen: So wurde das Rendering auf isoliert austauschbare Komponenten optimiert, verstärkt CSS eingesetzt und erste RIA-Features wie Drag & Drop oder Tastatursteuerung in die API mit aufgenommen. Weitere Grundsteine waren durch das im Detail feiner mit Swing abgestimmte Verhalten der Komponenten und Layouts bereits gesetzt. Nun konnte bei unveränderter API eine neue Ajax Engine integriert werden, welche vollständige Seitenauslieferung überflüssig macht und damit einen völlig neuen Bedienkomfort ermöglicht. Zusätzliche Annehmlichkeiten bieten neu hinzugekommene Ajax-Widgets wie z.B. die Suggest-Box, der Date-Picker oder ein In-Place-Editor. Da es diese Widgets allesamt im Original Swing selbst nicht gibt, fanden sie ihren Platz im separaten Addon-Paket wingX.

Besonders bemerkenswert ist die transparente Verwendung der Ajax Technologie bei weiterhin guter Steuerbarkeit auf allen Ebenen. Der Anwendungsentwickler programmiert ausschließlich gegen eine reine Java API und nutzt dabei die altbekannten Funktionen und Design-Konzepte aus Swing. Trotz des hohen Abstraktionsgrades und der innovativen Technologie behält er jedoch die Möglichkeit, weiterhin auf Details Einfluss zu nehmen, wie wir im späteren Teil näher betrachten werden.

Listing 1: Ein kleines Ratespiel mit wingS
public class HelloWingS {
public HelloWingS() {
 SFrame frame = new SFrame();
 SForm p=new SForm(new SGridLayout(5,1));
 final SLabel msg = new SLabel(); 
 final STextField tf = new STextField();
 SButton ok = new SButton("Raten!");

 // Anordnung mittels GridLayout
 p.add(new SLabel("Hello wingS!nn" +
     "Rate meine Zahl zwischen 0 und 9!"));
 p.add(msg);
 p.add(tf);
 p.add(ok);
 frame.getContentPane().add(p);
 frame.setVisible(true);

 // Die Spiellogik als EventListener
 final int num = new Random().nextInt(10);
 ok.addActionListener(new ActionListener(){ 
 public void actionPerformed(ActionEvent e){
   if (("" + num).equals(tf.getText()))
     msg.setText("Richtig!");
   else
     msg.setText("Nicht die "+tf.getText());
 }});
}}
Geschrieben von
Benjamin Schmid
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.