Web Development bleibt auch in den Zeiten der App-Programmierung ein aktuelles Thema. Ursprünglich wurden Browser-Anwendungen nach dem MVC2-Pattern unter Benutzung einer serverseitigen View konzipiert. Heutzutage überwiegen jedoch Single Page-Applikationen. Diese nutzen asynchrone AJAX-Aufrufe unter konsequenter Verwendung einer RESTful Architektur. Das führte zu einer Vielzahl an neuen Frameworks und Sprachen. Doch trotz des grundsätzlichen Wandels sind beide Herangehensweisen weiterhin im Spiel.
MVC2 versus REST
MVC2-Anwendungen werden mit JavaServer Faces, einem Bestandteil der Java Enterprise Edition implementiert. Aber auch das proprietären Spring MVC-Framework ist immer noch sehr beliebt. Beide Frameworks sind ausgereift und bieten ein einfaches Programmiermodell mit mächtigem Funktionsumfang.
RESTful Server werden mit JAX-RS programmiert. Diese Bibliothek ist zwar deutlich jünger als JSF, aber auch wesentlich schlanker, da REST bereits durch den http-Standard umgesetzt ist.
Synergien zwischen Java und JavaScript
In Konkurrenz zu JavaScript-Frameworks wie jQuery, Angular, Backbone und React, um nur einige der Neuentwicklungen zu nennen, verlor Java seine Führungsposition im Web Development. Mit Hilfe eines Tricks können Browser-Anwendungen dennoch auch weiterhin mit Java programmiert werden: Ein Source-to-Source-Compiler transcompiliert bzw. transpiliert Java-Logik nach JavaScript. JavaServer Faces definiert AJAX-Aufrufe deklarativ als Bestandteil der Seitendefinition − eine direkte Browser-Programmierung ist unnötig.
Frameworks wie Google Web Toolkit (GWT) oder Vaadin definieren die Client-Oberfläche und den RESTful Server mit Java-Programmen. Der Client-Code wird direkt nach JavaScript transpiliert. Eclipse RCP- und JavaFX-Anwendungen können nach moderaten Anpassungen im Browser ausgeführt werden. Mit ECMA2016 und Java 8 ähneln sich die beiden Programmiersprachen immer mehr. Eine standardisierte Übersetzung von Java direkt nach JavaScript rückt damit in greifbare Nähe.
Bildnachweis: pixabay.com, CCO License @unsplash