Startseite>Professionelle Java-Webanwendungen mit Vaadin entwickeln
Aus Raspberry Pi Geek 02/2016

Professionelle Java-Webanwendungen mit Vaadin entwickeln

Eiskalt

Martin Mohr

Das Wort Vaadin steht im Finnischen für das weibliche Rentier sowie für den Ausdruck “Ich beharre”. Ganz so störrisch gibt sich das gleichnamige Webapp-Framework jedoch nicht: Mit ihm entwickeln Sie leistungsstarke Java-Anwendungen für den Raspberry Pi.

Sie haben sicherlich auch schon die Erfahrung gemacht, dass Sie nach Wochen der Arbeit voller Stolz Ihr Raspberry-Projekt der Familie präsentieren und als Feedback Aussagen bekommen wie: “Da kann ich ja gar nichts anklicken!”, “Geht das nicht auch ohne Kommandozeile …”, “Das kann ja keiner bedienen.”, “Geht das auch vom Smartphone?”. Ja, so geht es uns Geeks, wenn wir nicht daran denken, eine benutzerfreundliche Weboberfläche für unsere Projekte mitzuentwickeln. Eine elegante Möglichkeit, um eine gut bedienbare Benutzeroberfläche zu erstellen, bietet das Web-Application-Framework Vaadin [1]. Es basiert auf dem Google Web Toolkit und verwendet Java als Programmiersprache.

Warum sollte man nun gerade Vaadin als Framework zur Anwendungsentwicklung einsetzen? Es gibt ja viele andere, vermutlich sogar leichtgewichtigere Frameworks. Vaadin hat jedoch den entscheidenden Vorteil, dass sich damit Browserapplikationen erstellen lassen, ohne eine einzige Zeile HTML-Code oder Javascript selbst erstellen zu müssen. So schreiben Sie Ihre Anwendung wie eine normale Java-Standardapplikation, die Layouts und GUI-Komponenten erinnern an AWT- oder Swing-Elemente. Vaadin generiert daraus eine Browseranwendung und verbirgt so alle nervigen Probleme, die oft im Zusammenhang mit Webapplikationen auftreten. Wer Erfahrungen bei der Entwicklung von Webapps besitzt, wird sicherlich zustimmen, dass die Lösung genau dieser Problemchen unheimlich viel Zeit in Anspruch nimmt.

Die Homepage des Vaadin-Projekts bietet einen Demo-Bereich [2] mit einer Vorschau auf die Funktionsweise der einzelnen GUI-Komponenten (Abbildung 1), detaillierten Beschreibungen und dem zum Beispiel gehörenden Quellcode. Für all diejenigen, die nach dem ersten kurzen Eindruck schon mehr über das Framework erfahren möchten, empfiehlt sich die Lektüre des Online-Buchs zu Vaadin [3], das nach einer Registrierung frei verfügbar ist. Nun ließe sich noch einiges über die Vorteile von Vaadin referieren – es macht aber viel mehr Spaß, das Framework am “lebenden Objekt” selbst auszuprobieren.

Abbildung 1: Der Demo-Bereich auf der Homepage von Vaadin. Zu jeder Komponente gibt es Codebeispiele und eine Beschreibung.

Abbildung 1: Der Demo-Bereich auf der Homepage von Vaadin. Zu jeder Komponente gibt es Codebeispiele und eine Beschreibung.

Vorbereitungen

Im ersten Schritt bauen Sie einen RasPi-Server auf. Auf der Raspberry-Pi-Homepage gibt es für diese Aufgabe mittlerweile eine Light-Version von Raspbian [4]. Sie beinhaltet nur die nötigsten Komponenten, also weder einen X-Server noch umfangreiche Office-Programme. Daher eignet sich diese Variante ideal für einen RasPi-basierten Applikationsserver. Wie gewohnt laden Sie das Image von der Raspberry-Pi-Homepage herunter, entpacken es und schreiben es mit Dd beziehungsweise unter Windows mithilfe von Win32 Disk Imager oder eines anderen entsprechenden Tools auf eine SD-Karte (Listing 1).

Listing 1

 

$ wget https://downloads.raspberrypi.org/raspbian_lite_latest
$ unzip raspbian_lite_latest
$ sudo dd if=2015-11-21-raspbian-jessie-lite.img of=/dev/sdd bs=1M
$ sync

Als Output File (of) übergeben Sie Dd das in Ihrem System vorhandene Gerät, dessen Bezeichnung Sie im Zweifelsfall mithilfe des Kommandos lsblk herausfinden. Das Datum des Images wird bei Ihnen möglicherweise etwas aktueller ausfallen.

Nach dem Übertragen des Images schieben Sie die SD-Karte in einen Raspberry Pi der zweiten Generation und schließen diesen an das Stromnetz an. Theoretisch würde Vaadin auch mit einem Typ-1-Raspberry funktionieren; der Fairness halber muss man jedoch zugeben, dass Java auf einem RasPi 1 nicht wirklich Spaß macht. Selbst auf dem RasPi 2 verschlingen einige Installationsschritte noch sehr viel Zeit. Zum Glück arbeiten die erstellten Programme dann aber recht schnell.

Damit Sie später den Raspberry Pi über SSH erreichen, aktivieren Sie über das Konfigurationswerkzeug Raspi-config den entsprechenden Daemon. Bei dieser Gelegenheit erweitern Sie auch gleich noch das Dateisystem auf die komplette Kapazität der SD-Karte, da das Bauen des Projekts recht viel Platz in Anspruch nimmt. Mit dem Befehl ssh [email protected]IP-Adresse verbinden Sie sich dann von einem Linux-PC aus mit dem Mini-Rechner. Windows-Anwender greifen dafür meist auf PuTTY [5] zurück.

Vaadin stellt keine besonderen Anforderungen an das JDK (Java Development Kit). Sie müssen daher nicht unbedingt das neuste JDK von der Oracle-Homepage herunterladen und manuell einspielen. Es genügt, stattdessen das in den Paketquellen von Raspbian enthaltene Oracle Java zu installieren. Um das erste Vaadin-Beispiel starten zu können, benötigen Sie zusätzlich noch das ebenfalls in den Paketquellen vorhandene Build-Tool Maven (siehe Kasten “Maven”). Im selben Zug bringen Sie das Raspbian-System (wie eigentlich immer vor der Installation zusätzlicher Software) auf den aktuellen Stand (Listing 2).

Listing 2

 

$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install oracle-java7-jdk maven

Maven

Mit Maven [7] lassen sich Java-Projekte standardisiert bauen. Halten Sie sich an die durch Maven vorgegebenen Konventionen, erstellen und verwalten Sie mit dem Build-Management-Werkzeug Ihre Projekte ohne viel Aufwand. Die Konventionen beziehen sich überwiegend auf die Struktur des Projekts, also etwa Verzeichnisbäume oder Namenskonventionen.

Als zentraler Bestandteil von Maven dient die Datei pom.xml (Project Object Model), in der Sie festlegen, welche Abhängigkeiten das Projekt zu anderen Software-Komponenten besitzt. Diese weisen oft wiederum Abhängigkeiten zu dritten Projekten auf, sodass ein Baum von Projekten entsteht, die Maven beim ersten Start gemeinsam lädt. Damit der Build-Prozess nach dem ersten Mal schneller läuft, speichert Maven alle diese Komponenten in seinem lokalen Repository.

Erste Schritte

Nach dem Installieren der nötigen Software-Komponenten auf dem RasPi-System starten Sie mit dem ersten Beispiel. Um ein funktionsfähiges Vaadin-Projekt zu erstellen, verwenden Sie den Befehl aus Listing 3. Die ersten drei Parameter geben an, aus welcher Quelle das Projekt stammt. Mit den dann folgenden Angaben bestimmen Sie, wie das Projekt heißen soll. Jedes Java-Projekt lässt sich über die Group-ID (Unternehmen), Artefact-ID (Projekt) und die Version eindeutig wiederauffinden.

Listing 3

 

$ mvn archetype:generate \
  -DarchetypeGroupId=com.vaadin \
  -DarchetypeArtifactId=vaadin-archetype-application \
  -DarchetypeVersion=7.5.10 \
  -DgroupId=local \
  -DartifactId=myproject \
  -Dversion=1.0 \
  -Dpackaging=war

Der letzte Parameter gibt an, dass Maven ein WAR-Archiv erstellen soll. Ein solches Archiv beinhaltet in Form gepackter Webapplikation sämtliche für das Projekt nötigen Bibliotheken, Klassen und Ressourcen. Das WAR-Archiv lässt sich in einem beliebigen Servlet-Container ausrollen und ausführen. Bekannte Servlet-Container und gleichzeitig Webserver sind zum Beispiel Tomcat oder Jetty (siehe Kasten “Jetty”).

Jetty

Jetty [8] fungiert als Servlet-Container und Webserver, ähnlich wie etwa Tomcat von der Apache Group. Im Vergleich zur Apache-Konkurrenz benötigt Jetty weniger Ressourcen, lässt sich dementsprechend aber auch nicht ganz so flexibel einsetzen. Der Vorteil dieses Werkzeugs liegt vielmehr darin, dass es sich recht einfach in andere Projekte integrieren lässt. So verwendet beispielsweise das Google Web Toolkit seit der Version 1.6 Jetty als Webserver.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland