14 FAEL-CORNER www.polyscope.ch Entwicklung browserbasierter Anwendungen mit dem Google Web To olkit Wachsende Komplexität erfordert starke Software-Tools Die Komplexität professioneller browserbasierter Anwendungen reicht heute an diejenige von Desktop-Anwendungen heran. Bei der Entwicklung und beim Unterhalt der Anwendungen wird eine durchgängige Entwicklungsumgebung immer wichtiger. Wie dies mit dem Google Web Toolkit gelingt, zeigt das Gespräch mit Till Bay, Dennis Rietmann und Jonas Zuberbühler, Comerge AG. » Dr. sc. ETH Michela Pedroni, Projektmanagerin Immer mehr Firmen bieten ihre Dienstleistungen über das Web an, indem sie browserbasierte Web2.0-Anwendungen entwickeln lassen, deren Funktionalität an die von Desktop-Programmen erinnert. Zusammen mit der Funktionalität der Web-Anwendungen wachsen auch deren Komplexität sowie der Aufwand bei der Entwicklung und beim Unterhalt. Comerge AG benutzt das Google Web Toolkit (GWT), um solche Anwendungen zu entwickeln. Können Sie mir kurz vorstellen, was das Google Web Toolkit ist? Till Bay: Das GWT eignet sich zur Programmierung von Web2.0-Anwendungen und enthält einen Compiler, der Java in JavaScript umwandelt. Eine GWT-Anwendung ist grundsätzlich wie eine klassische Web2.0Anwendung aufgebaut und beinhaltet für die grafischen Elemente HTML- und CSS-Dateien sowie Bilder, Videos und andere statische Ressourcen. Die Client-seitige Frontend-Logik, die man normalerweise bei Web2.0-Anwendungen in JavaScript entwickelt, realisiert man bei einem GWT-Projekt jedoch in Java mithilfe einer GWT-Bibliothek und wandelt sie beim Kompilieren in JavaScript um. Wie läuft die Kompilation von Java nach JavaScript ab? Dennis Rietmann: GWT generiert aus dem Java-Quellcode für jeden unterstützten Browser einen optimierten JavaScript-Code. Somit enthält das Endprodukt für jeden Browser eine angepasste JavaScript-Version. Das bietet den Vorteil, dass man bereits im Kompilationsschritt auf die verschiedenen Browsereigenheiten eingehen kann und somit die Kompatibilität des entstandenen Produkts zu den verschiedenen Browsern sehr hoch ist. Ausserdem lädt der Browser jeweils nur die für diesen Browser optimierten JavaScript-Codefragmente herunter, und somit wird die Geschwindigkeit des Produkts erhöht. In der Praxis führt dieses Vorgehen zu einer signifikanten Reduktion des Datenvolumens, das heruntergeladen werden muss. So haben wir zum Beispiel bestehende Webapplikationen abgelöst, deren früheres Datenvolumen bei Megabytes lag. Mit der GWT-Technologie liegt es heute für eine Anwendung mit derselben Funktionalität nur noch im Kilobyte-Bereich. Ein ähnliches Vorgehen bietet GWT für die Mehrsprachigkeit von Web2.0-Anwendungen. GWT erstellt auch hier pro Sprache eine einzelne Version, und es werden beim Laden der Webapplikation nur die Sprachdateien her- Das Endprodukt enthält für jeden Browser eine angepasste JavaScript-Version untergeladen, die für die momentan benutzte Sprache nötig sind. Es ist also so, dass GWT pro Browser und Sprache eine Version zur Verfügung stellt. Dr. sc. ETH Till Bay, Geschäftsführer Welche generellen Auswirkungen hat die Entwicklung von Web2.0-Anwendungen in Java? Jonas Zuberbühler: Der wahrscheinlich grösste Vorteil der Entwicklung in Java ist, dass Java statisch typisiert ist. Deshalb lassen sich Fehler bereits zur Kompilationszeit entdecken. Bei JavaScript ist dies erst zur Laufzeit der Fall, da dies eine dynamisch typisierte Programmiersprache ist. Die statische Typisierung dient der RobustPolyscope 3/12 15 FAEL-CORNER heit der Software, was vor allem bei grossen und komplexen Web2.0-Anwendungen wichtig ist. Ausserdem gibt es für Java sehr gute Entwicklungswerkzeuge, zum Beispiel für das Debugging des Quellcodes, und Bibliotheken, auf die man sich stützen kann. Die Programmierung der GWT-Anwendungen in Java GWT stellt pro Browser und Sprache eine Version bereit erlaubt es uns, in Projekten Synergien zu nutzen. Wenn wir zum Beispiel bei einem Projekt sowohl Desktop- wie auch mobile Anwendungen und GWT-Anwendungen in Java entwickeln, betreiben wir wo möglich Code Reuse und erhöhen somit unsere Produktivität. Zusätzlich ist natürlich ein Vorteil, dass wir unsere Entwickler sowohl für die Entwicklung von Web2.0-Anwendungen als auch für Desktop-Anwendungen und mobile Apps einsetzen können – wir müssen sie nicht in JavaScript schulen und sie können somit bekannte Entwicklungswerkzeuge nutzen. Hat die Entwicklung der Webapplikationen mit GWT einen Einfluss auf Ihren Entwicklungsprozess? Rietmann: Ein integraler Bestandteil unserer Entwicklungsarbeit besteht darin, Qualitätssicherung mittels Unit-Tests zu betreiben. Da wir GWT und somit Java benutzen, können wir auf JUnit zurückgreifen und die Tests in der Eclipse-Entwicklungsumgebung entwickeln und ausführen. Ausserdem erlaubt uns die Entwicklung in Java kontinuierliche Integration durchzuführen. Dabei wird regelmässig eine neue Version der Webapplikation kompiliert, installiert und es werden alle Tests durchgeführt. GWT gestattet es uns auch hier, von unserem bestehenden Technologie-Stack zu profitieren. Welche weiteren Vorteile hat die Entwicklung mit GWT? Zuberbühler: Dadurch, dass wir GWT als Framework benutzen, um Web2.0-Anwendungen zu entwickeln, stehen wir auf den Schultern von Google, einem Unternehmen, das im Entwickeln von komplexen Webanwendungen führend ist. Somit profitieren wir von der langjährigen Erfahrung eines globalen Unternehmens und steigern unsere eigene Effizienz. Haben Sie bei der Benutzung von GWT auch Nachteile kennengelernt? Bay: GWT übernimmt die Handhabung der Browserkompatibilität. Das ist sowohl eine Stärke von GWT als auch ein Nachteil, da man sich bezüglich der unterstützten Browser von GWT abhängig macht. Wenn also ein Wir profitieren von der langjährigen Erfahrung eines globalen Unternehmens Dennis Rietmann, GWT-Entwickler Polyscope 3/12 fundamental anderer Browser herauskommt, muss man auf ein neues GWT-Update warten. Es gibt auch die Variante, selbst neue Browser zu unterstützen, aber das ist in GWT-Projekten relativ kompliziert und wird deshalb eher selten getan. Ein weiterer Nachteil von GWT liegt in der Kompilierung. Der Kompiliervorgang von komplexen Webandwendungen dauert relativ lange, da GWT für jeden Browser und jede unterstützte Sprache eine Version erstellt. Bei einem unserer aktuellen GWT-Projekte dauert der Build 24 Minuten und erstellt 48 Versio- Jonas Zuberbühler, GWT-Entwickler nen. Durch das Erstellen von weniger Versionen lassen sich diese Zeiten konfigurieren. Ausserdem kann man in der Entwicklungsumgebung den «Development Mode» von GWT nutzen, bei dem die Interaktion mit der GWTApplikation ohne Übersetzung in JavaScript geschieht. Generell bietet uns GWT mehr Vorteile als Nachteile, und deshalb können wir seine Benutzung auch weiterempfehlen. « FAEL Kompakt FAEL: Swiss Engineering Fachgruppe for Elektronik & Informatik Mitglieder: 758 Gründung: 1978 Präsident: Thomas Hauser Dipl.-Ing. HTL/STV Kontakt: Thomas Hauser, Langackerweg 10 5003 Würenlingen, Tel. 079 573 20 27 [email protected], www.fael.ch Infoservice Comerge AG Bubenbergstrasse 11, 8045 Zürich Tel. 043 501 38 38, Fax 043 501 38 39 [email protected], www.comerge.net