Seit Jahren entwickeln wir für und mit unseren Kunden Software im Jave EE Umfeld. Der Standard bot uns dazu immer die entsprechende Basis damit wir uns auf die Anwendung selbst konzentrieren konnten. JPA für die Zugriffe auf die Datenbank, CDI für die Kopplung unserer Business Logik, Bean Validation zur Überprüfung unserer Daten und die Benutzeroberfläche? Auch da blieben wir dem Standard treu. In Projekten in denen es „früher“ Swing-Clients zu entwickeln galt traten über die Zeit mehr und mehr die Webtechnologien in den Vordergrund und damit Java Server Faces als fester Bestandteil der „Java EE Welt“. Die vielen Projekte haben gezeigt dass sich mit JSF komplexe, sichere und stabile Anwendungen implementieren lassen die fast allen Ansprüchen gerecht werden kann.
„Fast Allen“? Sucht man dieser Tag im Netz stößt man über kurz oder lang auf Blog-Posts und Forums-Diskussionen die das Ende von JSF voraussagen. Solche Meinungen wird es nun vermutlich zu jedem Framework geben und doch wird das Spielfeld auf dem sich JSF gegen andere Frameworks messen muss voller. Seit jeher ist „Spring MVC“ sicherlich eine Alternative wenn es um die Frage nach einem geeigneten Webframework geht, aber auch die Verbreitung von GWT, Vaadin und besonders von JavaScript-Varianten àla AngularJS nimmt drastisch zu. Dazu kommt mit MVC in Java EE 8 selbst im Standard eine weitere Möglichkeit Weboberflächen zu entwickeln.
Was ist also verkehrt an JSF?
Nehmen wir noch einmal zum Vergleich die Beiden Alternativen Vaadin und AngularJS. Vaadin entbindet den Entwickler weitestgehend davon sich Gedanken um http, CSS, JavaScript und HTML zu machen. Anwendungen werden in Java geschrieben, ähnlich zu der Entwicklung mit Swing und am Ende entsteht, dank‘ Vaadin, eine Anwendung die im Browser läuft. Was die Einen mit größter Freude erfüllt, lässt die Anderen die Hände über den Kopf zusammen schlagen. Eine Webanwendung wird mit Webtechnologien geschrieben wird man dann aus dem Lager der AngularJS – Anhänger hören, nur so besteht die größte Kontroller über das was der Browser des Anwenders am Ende wirklich zeigen und ausführen soll. Und JSF? JSF liegt irgendwie in der Mitte. Zwar muss, dank Komponenten Bibliotheken, niemand Experte im Umgang mit CSS und JavaScript sein um eine JSF Anwendung zu schreiben, aber trotzdem sind grundlegende Kenntnisse in diesen Bereichen erforderlich, zudem steht der JSF Lebenszyklus und das serverseitigen Rendering zwischen dem Coding und der schlussendlichen Anzeige im Browser.
Projekte die sich also ganz auf die Entwicklung in Java konzentrieren wollen (an dessen Ende aber trotzdem eine Webanwendung steht) wird JSF als „Mittelweg“ demnach nicht gefallen, da die Berührungspunkte mit den Webtechnologien zu stark Ausgeprägt sind. Das genaue Gegenteil trifft auf Projekte zu die sich auf die Entwicklung von ansprechenden und flexiblen Oberflächen fokussieren. In diesem Fall steht JSF mit seinem reinen serverseitigen Rendering, starren Lebenszyklus und vorgefertigten Komponenten im Weg. Auch in Sachen mobile Entwicklung / responsive Design ist JSF sicherlich nicht die erste Wahl. Die großen Komponenten Bibliotheken versuchen hier Abhilfe zu schaffen und bieten häufig auch mobile Varianten ihrer Komponenten an und auch moderne Ansätze wie Bootstrap lassen sich bedingt zusammen mit JSF umsetzen. Das JSF – Framework selbst bietet im Bereich der mobilen Entwicklung, aufgrund seiner Architektur, allerdings nur sehr wenig Unterstützung.
Nichtsdestotrotz: JSF ist und bleibt ein stabiles und standardisiertes Framework um Webanwendungen zu entwickeln. Genau wie alle anderen Technologien hat JSF aber natürlich seine Schwächen und Bereiche wo andere Frameworks glänzen können. Grund genug einen genaueren Blick auf die „Konkurrenz“ zu werfen. Dieser Tage kommt man dabei an einem Framework nicht vorbei „AngularJS“. Aber wie passt AngularJS in unsere Java EE Welt? Vergessen wir mal die hübschen OnePage-Webseiten, die gut aussehen aber wenig mit unseren Projekten gemeinsam haben. AngularJS + Java EE; BeanValidation, Internationalisierung und und und … geht das? Und vor allem „Gut“?
In inzwischen vielen Beiträgen hier im Blog haben wir einen Blick auf Angular geworfen, auf dessen Möglichkeiten und auch die Integration mit Java. Stöbern Sie durch unsere Beiträge.
Weiterführende:
AngularJS und Java EE : Projekt Setup
AngularJS und Java EE: Build Prozess
AngularJS und Java EE: Bean Validation
RESTful Lazy-Load mit Jackson und Hibernate
Bye Bye Basic Auth Popup für Java EE
JSON Web Tokens – JWT – Angular
… und viele viele mehr …
7 Kommentare. Hinterlasse eine Antwort
Der Artikel hört gerade da auf, wo es spannend wird 🙁
Da gibt es noch ne Menge weiterer Posts. Einfach mal “Angular” in die Suche auf der Seite eingeben …
Es sind eine Menge weiterführender Artikel im Blog. Links sind nun am Ende des Artikels.
“Fortsetzung folgt…”
Wann gibts denn die Fortsetzung 😉
Es gibt eine ganze Reihe Fortsetzungen. Leider waren die durch ihre Titel nicht so leicht als Fortsetzungen zu erkennen. Wir haben den Artikel daher um ein paar weiterführende Links ergänzt. Danke für den Hinweis!
Ich finde das 2. Teil einfach nicht! Warum geben Sie nicht einfach den Link? Danke
Wir haben den Artikel um Links zu weiterführenden Artikeln ergänzt.