Techblog

Herzlich Willkommen im Communardo Techblog, dem Entwickler-Weblog von Communardo. An dieser Stelle werden Ideen, Problemlösungen, Tipps und Problemstellungen rund um die Entwicklung webbasierter Software vorgestellt.

techblog-teaser

Javascript-Frameworks und Web-Toolkits im Vergleich

, von

Mit dem Siegeszug von AJAX ist zugleich auch die Anzahl verfügbarer
Javascript-Frameworks explodiert.
Die Entwicklung der diversen Frameworks ist mittlerweile so weit fortgeschritten, daß es ein “bestes” Framework nicht mehr gibt.

Vielmehr setzen die “großen” unter den zahllosen Frameworks unterschiedliche Schwerpunkte und sind für verschiedene Anwendungsszenarien konzipiert. Dabei ist nicht jedes Framework für jeden Einsatzzweck gleichermaßen geeignet.

jQuery

Das zuletzt am schnellsten gewachsene Framework was die Anzahl der Nutzer angeht, ist jQuery. Mittlerweile ist es das meistverwendete Framework überhaupt. jQuery verfolgt dabei neben dem “schneller, einfacher” Grundkonzept aller Frameworks den Ansatz, auch Anwendern ohne tiefgehende Javascript-Kenntnisse die Entwicklung relativ komplexer JS-Applikationen zu ermöglichen.

Der Fokus von jQuery liegt auf DOM-Manipulationen, die mit jQuery so einfach zu realisieren sind wie mit kaum
eimem anderen Framework. Da alle jQuery-Funktionen das jQuery-Objekt zurückgeben, können die
Funktionen miteinander verkettet werden, wodurch die Lesbarkeit und Verständlichkeit des Codes
stark erhöht wird.

$("div.test").add("p.quote").addClass("blue").slideDown("slow");

jQuery zielt hauptsächlich auf die Standard-Anwendungsfälle, die in aktuellen Web-Frontends auftauchen:
Ausklappmenüs, Accordeonfunktionen, Tabs, Tooltips, Formularvalidierung, Drag&Drop, AJAX etc.

Diese Standard-Anwendungen sind in der Umsetzung so einfach wie möglich gehalten, die Lernkurve bei jQuery ist daher recht flach und es stellen sich schnell erste Erfolge ein. Die 2000 frei verfügbaren Plugins bieten vorgefertigte Lösungen für nahezu alle denkbaren Anwendungsfälle allerdings in unterschiedlicher Qualität.

Aufgrund des eigenen Namensraums kann jQuery parallel zu allen anderen Frameworks betrieben werden.
Was die Performance angeht ist jQuery spätestens seit Version 1.3, mit der die Sizzle Selektor-Engine eingeführt wurde, führend unter den JS-Frameworks.

Prototype

Prototype ist eines der ältesten Frameworks (seit 2005) und hat dementsprechend großen Einfluss
auf die nachfolgenden Generationen gehabt. (z.B. MooTools)
Die Popularität von Prototpe ist nach wie vor ungebrochen, u.a. wird es zusammen mit Ruby on Rails ausgeliefert.
Prototype erweitert Javascript um zahlreiche Funktionen und verfolgt einen objektorientierten Ansatz, der die Nachbildung von eigenen, instanziierbaren Klassen sowie Vererbung erlaubt. Ein eigenes AJAX-Objekt steht zur Verfügung, ebenso wie JSON-Unterstützung.

Die umfangreiche Bibliothek eignet sich mit ihrer breiten inhaltlichen Ausrichtung zeichnet sich durch eine qualitativ hochwertige Codebasis und eine hohe Flexibilität aus. Allerdings erkauft man sich diese Flexibilität auch mit einem relativ hohen Einarbeitungsaufwand, Frameworks wie JQuery machen es dem Einsteiger in diesem Punkt leichter. Die gute Dokumentation hilft allerdings in den meisten Fällen über die auftauchenden Hürden hinweg.

Prototype bringt von Hause aus keine Widgets und Funktionen für visuelle Effekte mit, diese können jedoch über die Erweiterung scriptaculous zusätzlich eingebunden werden. Zudem stehen in der Prototype Extension Library knapp 150 Erweiterungen und Widgets zur Verfügung.
Nachteile von Prototype sind die mäßige Performance insb. in den verschiedenen Versionen des IE, teilweise ist Prototype um den Faktor 6 langsamer als die Konkurrenz (JQuery).

Google Web Toolkit (GWT)

Das Google Web Toolkit (GWT) verfolgt einen gänzlich anderen Ansatz als die anderen Javascript-Frameworks.
Das GWT bietet eine Java-Bibliothek, die es ermöglicht, AJAX-Anwendungen in Java zu schreiben und
den Bytecode dann in Java-Script kompilieren zu lassen. Dadurch kann die komplette Client/Server-Entwicklung auf Java-Basis erfolgen. Die Web-Applikation (gleich ob mit oder ohne AJAX) wie eine Desktop-Applikation im Java-Umfeld erstellt, die Oberflächenprogrammierung ähnelt dabei Swing. Seit Version 1.5 wird auch Java 5 voll unterstützt.

Dieses Java-basierende Konzept unterscheidet das GWT fundamental von allen anderen Frameworks aus dem Bereich
und bietet eine Reihe von Vorteilen:

  • es können alle bekannten Entwicklertools aus dem Java-Umfeld eingesetzt werden, incl. JUnit Tests und Debugger
  • Fehlermeldungen zur Compilezeit
  • es sind im Prinzip keine Javascript-Kenntnisse erforderlich
  • Aktualisierung des GWT genügt, um sich aktuellen (Browser)-Entwicklungen anzupassen

Auch an weitere Merkmale aus dem Enterprise-Segment wurde gedacht: So ist eine einfache Internationalisierung über Property-Dateien möglich und zahlreiche vorgefertigte Widgets stehen einsatzbereit zur Verfügung.
Die asynchrone Kommunikation mit dem Server verläuft über Remote Procedure Calls und XML oder JSON.

Zum Testen steht ein Hosted Mode zur Verfügung, dieser führt den Java-Bytecode direkt aus und ermöglicht unmittelbares Testen, ohne den “Umweg” über Javascript. Der Web Mode ist dagegen für die Produktivumgebung gedacht und arbeitet mit dem generierten Javascript.

Auch Ansätze zur Barrierefreiheit sind vorhanden. So wird über History-API die volle Funktionsfähigkeit des zurück-Buttons des Browsers auch bei AJAX-Aufrufen sichergestellt, zudem wird eine reine Tastaturbenutzung und Schriftgrößeneinstellung ermöglicht.

Im die Performance zu steigern, erzeugt der Javascript-Compiler pro Browser und Sprache eine eigene Javascript-Datei. Dadurch werden geringe Dateigrößen ermöglicht. Außerdem werden Icons automatisch zu einem Einzelimage (ImageBundle) zusammengefasst, wodurch die Zahl der HTTP-Requests und damit die Ladezeit drastisch reduziert werden kann.

Für das GWT stehen zahlreiche Widgets und Extensions auch von Fremdanbietern zur Verfügung.

Google Dienste wie Google Maps werden können über die API nahtlos integriert werden, auch Google Gears wird unterstützt.
Die Klassen des GWT können bei Bedarf auch mit handgeschriebenen JavaScript innerhalb des Java-Quellcodes gemischt werden (JavaScript Native Interface (JSNI))

Aufgrund seiner Konzeption als Java-Bibliothek ist das GWT in erster Linie für umfangreiche Javascript-basierende Applikationen wie bspw. GMail gedacht. Als bloßes Hilfsmittel für DOM-Manipulationen ist es überdimensioniert und der Einarbeitungsaufwand ist zu hoch. Für Entwickler aus dem JAVA-Umfeld aber durchaus interessant, sofern die Projekte massiven Javascript-Einsatz erfordern und Java-Entwicklungswerkzeuge genutzt werden sollen.

Artikel als PDF speichern

Diese Webseite basiert auf Wordpress. © 2014 Communardo Software GmbH / Kleiststraße 10 a / D-01129 Dresden / Fon +49 (0) 351/8 33 82-0 / info@communardo.de