Die Zukunft von GWT: J2CL

Ursprünglich wurde das Google Web Toolkit entwickelt, um in einem nur sehr begrenzt existierenden JavaScript-Ökosystem mit sich teils stark unterscheidenden JavaScript-Implementierungen einheitlich und sicher Anwendungen entwickeln zu können.

Seit damals haben sich einige Probleme am GWT-Konzept offenbart. Da GWT einen großen Funktionsumfang hat und sich somit unter anderen um Compiler, CSS und die Widget-API kümmert, hat das Framework sehr lange Release-Zyklen.

Wenn nun Browserhersteller einige Teile ihrer Implementierung ändern oder Fehler beheben, wie z. B. hier, ist man leider aufgrund der langen Release-Zyklen dazu gezwungen, selbst einen Workaround einzubauen.

Ebenfalls ist inzwischen das JavaScript-Ökosystem deutlich gereift, die meisten Browser setzen Standards relativ sauber um und spezielle Behandlung von Browsern wird nur noch selten benötigt. Zudem hat sich ein großes Umfeld um JavaScript mit vielen anderen Tools entwickelt, welche Teilaspekte von GWT portabel umsetzen.

Aus den beiden genannten Änderungen ergibt sich der Bedarf, den Compiler vom restlichen Library-Teil zu trennen. Dies stellt der J2CL da, es handelt sich hierbei um einen reinen Java nach JavaScript Compiler, welcher kompatibel zu ClosureScript ist. Hierbei handelt es sich um speziell kommentiertes JavaScript, welches weitere Metadaten, wie z. B. Typinformationen enthält.

Bei dem J2CL handelt es sich im Gegensatz zum GWT Compiler auch nicht mehr um einen optimierenden Compiler. Das JavaScript wird lediglich als 1-zu-1-Umsetzung ausgegeben. Hierdurch verbessert sich nicht nur die Möglichkeit, dies als Mensch zu lesen, signifikant, es ermöglicht zudem ein inkrementelles Kompilieren.

Viele einzelne Teile, die der GWT-Compiler zuvor durchgeführt hat, können nun mit verschiedensten Tools je nach Bedarf in die Build-Pipeline eingebaut werden. Z. B. einen JavaScript-Minimizer, einen Obfuscator, ein Build-Optimierer und viele weitere.

Nun stellt sich natürlich die Frage, wie der geplante Migrationsweg von einem aktuellen GWT Projekt nach J2CL ist, insbesondere woher die nun ausgebauten Teilstücke bezogen werden können. Viele der ehemals in GWT enthaltenen Module (wie z. B. die Widget-API) sind inzwischen als Community-Projekte auf github.com/gwtproject zu finden. Durch die Trennung der einzelnen Bibliotheken vom Compiler, können diese jetzt separat gepflegt und veröffentlicht werden, womit Fehlerbehebungen schnell erledigt und verbreitet werden können.

Derzeit sind sowohl der J2CL als auch die Bibliotheken, die Teile der alten GWT API implementieren, noch relativ neu, und sofern kein akuter Leidensdruck besteht, empfiehlt es sich noch etwas zu warten. Aber die gute Nachricht ist, dass nachdem es um GWT 3.0 so ruhig geworden ist, jetzt wieder ein klares Ziel vor Augen ist und ein GWT Projekt auf absehbare Zeit weiter gepflegt werden kann, ohne die ursprünglichen Vorteile von GWT zu verlieren.

Short URL for this post: https://wp.me/p4nxik-3ej
This entry was posted in Java Web Frameworks and tagged , . Bookmark the permalink.

Leave a Reply