© saicle/Shutterstock.com
Ein Blick über den Tellerrand … zu Vaadin

Java trifft Web


Auch wenn Java und JavaScript denselben Namensanfang haben: Wer sich länger mit den Sprachen auseinandersetzt, stellt bald fest, dass sie nicht viel miteinander zu tun haben. Im Web arbeitende Entwickler mussten sich bisher wohl oder übel mit JavaScript arrangieren. Vaadin bietet Java-Heads eine Alternative an, die mitunter durchaus spannend sein kann. Lassen Sie uns also einen Blick über den Tellerrand riskieren.

Wer sich heute mit Vaadin beschäftigt, muss sich im ersten Schritt klar darüber werden, worum es geht. Das Unternehmen bietet nämlich mittlerweile neben dem namensgebenden Java-Framework auch eine Gruppe von JavaScript-Steuerelementen an, die insbesondere beim Hantieren mit großen Datenmengen hilfreich sind.

Wir wollen uns in diesem Artikel allerdings auf den Klassiker beschränken: Als Entwicklungsumgebung setzen wir diesmal auf eine Achtkernworkstation, die unter Ubuntu 14.04 LTS betrieben wird. Wichtig ist zudem das Vorhandensein von Java 8 – mit älteren Versionen des JDK scheitert die Kompilation.

Wie funktioniert das?

Mit der Architektur von Browsern vertraute Entwickler gehen bei der Betrachtung von der Architektur von Vaadin normalerweise davon aus, dass es sich hier um eine der in den 90-ern populäre Plug-in-Lösung handelt.

Dieser erste Eindruck ist falsch. Das Entwicklerteam orientiert sich vielmehr an klassischen Grafiksystemen wie dem X-Server, der unter UNIX zum Einsatz kommt. Auf Wunsch können Entwickler sogar JavaScript-Elemente einbauen, die am Client ausgeführt werden. Eine Überblicksarchitekturdarstellung einer Vaadix-Applikation ist in Abbildung 1 zu sehen.

hanna_vaadin_1.tif_fmt1.jpgAbb. 1: Eine Vaadin-App besteht aus mehreren Schichten (Bildquelle: https://vaadin.com/docs)

Die Betrachtung dieser Architektur zeigt, dass Vaadin nicht für alle Aufgaben gleichermaßen geeignet ist. Die Applikation funktioniert ja immer im Zusammenspiel mit dem Backend-Server. Zur Realisierung von Actionspielen ist Vaadin beispielsweise eher schlecht geeignet, da die hohe Latenz das Spielvergnügen mindern würde. Bei einer Geschäftsapplikation ist das indes weniger wichtig. Die eine oder andere Wartezeit mag den Nutzer vielleicht ein wenig nerven, ist aber insbesondere bei Vertikal-Applikationen nicht wirklich von Bedeutung.

Die Vorbereitungen

Auch wenn Vaadin mehrere Entwicklungsumgebungen unterstützt: In den folgenden Schritten wollen wir auf Eclipse setzen. Laden sie unter [1] die Version Eclipse IDE for Java EE Developers herunter. Achten sie darauf, nicht versehentlich statt der EE-Version die normale Java-Version zu erwischen. Nach dem Extrahieren des Inhalts des Archivs starten Sie die IDE wie gewohnt – es ist empfehlenswert, einen neuen Workspace anzulegen.

Klicken Sie auf Help | Install New Software und durchforsten Sie das Repository http://vaadin.com/eclipse nach folgenden Komponenten:

  • Vaadin

    • Vaadin Designer 1.0.8

    • Vaadin Plug-in for Eclipse 3.0.0

Das Herunterladen der Plug-ins nimmt statistisch einige Minuten in Anspruch. Die dabei auftauchende Warnung bezüglich fehlender Signaturen können Sie bedenkenlos ignorieren.

Die Auslieferung von Vaadin-Applikationen erfolgt durch einen Applikationsserver: Für aktuelle Versionen des Frameworks empfiehlt sich die Version 8.0, die unter [2] zum Download bereitsteht. Extrahieren Sie das Archiv apache-tomcat-8.0.35.tar.gz in einen beliebigen Ordner und starten Sie den Server in einem dedizierten Konsolenfenster durch Eingabe des Befehls ./startup.sh.

Achten Sie darauf, dass der Server im nächsten Schritt beendet werden muss – Eclipse kann nicht an laufende Instanzen andocken. Das lässt sich mit einem ./shutdown.sh bewerkstelligen.

Die EE-Version von Eclipse bietet von Haus aus den in Abbildung 2 gezeigten Serverstab an: Nach dem Start der IDE ist er nicht aktiv, sondern muss durch seinen Header aktiviert werden. Klicken Sie auf das darin angezeigte Label, um den Serverkonfigurationsassistenten zu erstellen.

Der von uns benötigte Serveradapter hört auf den Namen Apache > Tomcat 8.0 Server. Der Installationsassistent fragt sie unter anderem nach dem Installationsverzeichnis des Servers. Nach getaner Arbeit scheint er anfangs im Zustand „Stopped, Publish“ auf. Ein Klick auf Start the server sollte ihn normalerweise anwerfen.

hanna_vaadin_2.tif_fmt1.jpgAbb. 2: In diesem Tab werden Applikationsserver verwaltet

Erzeugen Sie im nächsten Schritt per File | New Project | Other ein neues Projekt auf Basis der Vorlage Vaadin | Vaadin 7 Project (Maven). Das leere Fenster mit der Frage nach dem Maven-Archetyp wird durch Anklicken von Next übersprungen, die restlichen Einstellungen können für dieses Beispiel ebenfalls 1:1 übernommen werden. Stoßen Sie nun eine komplette Rekompilation des Projekts an, um Eclipse zur Analyse des neu erstellten Skeletts zu animieren. Der erstmalige Kompilationsprozess setzt eine Internetverbindung voraus und ist relativ langsam, weil Maven diverse Daten herunterladen muss.

Fehler der Art „Unbound classpath container: ‚JRE System Library [JavaSE-1.8]“ weisen auf eine Fehlkonfiguration von Eclipse hin. Prüfen Sie in diesem Fall den Inhalt von Window | Preferences | Java | Installed JREs – die Java 8-Laufzeitumgebung muss installiert und aktiviert sein (Abb. 3).

hanna_vaadin_3.tif_fmt1.jpgAbb. 3: So ist es richtig …

Als letzten Akt des ersten Abschnitts wollen wir das Programm auf die Reise schicken. Markieren Sie den Projektstammordner im Project Explorer, und klicken Sie auf Debug as | Debug on Server. Nach der Auswahl des zu verwendenden Servers zeigt Eclipse eine Liste der auszuliefernden Ressourcen an – Ihr Projekt muss in der Liste Configured stehen. Nach dem Anklicken von Finish startet die App im in Eclipse eingebauten Browser. Wer sein Programm stattdessen in einem anderen Browser testen möchte, kann dies durch Kopieren des im Adressfeld angezeigten URL bewerkstelligen.

Skelettale Studien

Unsere Applikation liegt im /src/-Unterverzeichnis des Projekthauptordners. Die von UI abgeleitete MyUI-Klasse repräsentiert das Benutzerinterface als Ganzes: Jede in einem Browser laufende Applikationsinstanz wird von einer UI-Ableitung repräsentiert.

Die init-Methode ist für die eigentliche Belebung der Applikation zuständig – das Benutzerinterface entsteht durch manuelles Zusammenfügen von Widgets, Layouts und den dazugehörenden Event Handlern (Listing 1).

Listing 1

@Theme("mytheme") @Widgetset("com.example.myapplication.MyAppWidgetset") public class MyUI extends UI { @Override pro...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang