Angular und Spring Boot – ein Gewinner-Team

In regelmäßigen Abständen evolvieren oder revolutionieren sich die Frameworks mit denen Java Entwickler ihre Web Anwendungen entwickeln. Während wir mit dem endgültigen Siegeszug der clientseitigen Frameworks eine kleine Revolution gesehen haben, können wir derzeit die Evolution dieser Frameworks beobachten, die nun ihre Reifungsphase erleben und wohl noch die kommenden Jahre den Mainstream in der Web Entwicklung bilden werden.

Von welchen Frameworks spreche ich? Ich rede von jenen Frameworks, die von der Mehrzahl großer Unternehmen, die Web Entwicklung betreiben, für neue Projekte verwendet werden:

  • Angular
  • Spring Boot

“Woher will der wissen, was die großen Unternehmen verwenden?” wird sich der eine oder andere nun fragen. Nun, wir sind in Kundenworkshops im gesamten deutschsprachigen Raum ständig bei anderen Unternehmen vor Ort, sprechen mit Entwicklern, Architekten, halten Schulungen, übernehmen Entwicklungsaufträge, reviewen Code. Und wir sehen eine große Welle, die immer größer wird: Spring und Angular.

“Angular ist doch schon ein alter Hut” wird der eine oder andere sagen, es gibt viel coolere und schnellere Frameworks wie Play oder Vue und andere. Ja, die gibt es. Sie sind aber nicht Mainstream. Ist es uncool im Mainstream zu schwimmen? Nein. Es bedeutet Investitionssicherheit für jene Unternehmen, die darauf angewiesen sind, Anwendungen zu entwickeln, die über viele Jahre gepflegt werden müssen. Zu oft habe ich gesehen, wie riesige Anwendungen eingestampft werden mussten, weil auf Frameworks gesetzt wurde, die nach wenigen Jahren wieder weg vom Fenster waren.

React ist doch auch Mainstream, oder? Ja, auch wir haben schon Projekte in React erfolgreich umgesetzt, wir beobachten aber, dass gerade jene Unternehmen, die eine Java EE und Spring Historie haben, mit großer Mehrheit auf Angular setzen. Warum das so ist? Einerseits weil das Angular Framework in Kombination mit Typescript viele Konzepte aus der Java / Spring / Java EE Entwicklung übernommen bzw. gemein hat. Ich denke dabei an Dependency Injection, testgetriebene Entwicklung, Schichtenaufbau und starke Kapselung. Andererseits kommt Typescript dem Java Entwickler sehr entgegen, der perfekt funktionierende Autocompletion und die Sicherheit eines Compilers schätzen gelernt hat. Hardcore JavaScript Entwickler neigen nach unserer Beobachtung eher zu React als Framework.

Wie auch immer, clientseitige Frameworks bilden bei Neuentwicklungen die Mehrheit, das hat sich die letzten Jahre abgezeichnet und setzt sich weiter fort. Was wurde aus JSF, Spring MVC, Spring Webflow und anderen? Sie haben nach wie vor ihren Platz. Vor allem JSF in Kombination mit Primefaces hat eine riesige Basis und dank Primefaces gibt es auch immer wieder innovative Impulse. Die Entwicklungsgeschwindigkeit ist hier der dominierende Anreiz. Es gibt nach wie vor kaum eine effizientere Möglichkeit Web Anwendungen zu entwickeln als mit JSF / Primefaces / JPA und Java EE. Nur für den Benutzer hat es Nachteile. Viele JSF Anwendungen sind stark überfrachtet, große Monolithen, schwierig zu modularisieren. 

Und genau hier kommt der wesentliche Punkt: Die Wandlung von einer monolithischen zu einer Microservice basierten Anwendungsarchitektur ist in vollem Gange, fast alle IT Abteilungen haben Cloud / Microservice Architekturen als große strategische Ziele. JSF ist hier ein Puzzlestein, der einfach nicht integrierbar ist. Angular, das Rest APIs anspricht und dynamisch die UI aufbaut passt hier perfekt, ohne in einem JavaScript Sauhaufen zu enden.

Und im Backend? Spring Boot ist ein einziger Genuß. Es macht so eine Freude ein Framework zu haben bei dem man sagt: Ja, genau, dieses und jenes Feature sind genau jene, die mir das Leben erleichtern und die trotzdem konzeptionell perfekt durchdacht sind. Ein Framework bei dem man sich denkt, wenn ich das so und so mache, dann wäre es logisch, dass sich das Framework so und so verhält und genau so ist es dann. Kein Framework von Theoretiker mit der Seele eines Bürokraten, sondern ein Framework von genialen Entwicklern für Entwickler, die ihren Job perfekt machen und dabei Freude haben wollen.

Der große Unterschied zu Java EE? Spring ist nicht stehengeblieben, es entwickelt sich kontinuierlich weiter. VMWare, EMC und Dell stehen als Inhaber hinter Spring Boot und investieren kräftig.

Spring Boot hat alles, um in Docker- und Kubernetes Umgebungen betrieben zu werden:

  • minimale Abhängigkeiten
  • volle Parametrisierbarkeit im Container
  • integriertes Monitoring
  • herausragende Unterstützung für testgetriebene Entwicklung

Spring Boot ist großartig, anders kann man es nicht sagen. Es ist die Plattform, um realistische Microservices Plattformen umzusetzen. “Spring ist zu schwergewichtig” werden einige sagen. Ja, wenn man auf Nano Services setzt, dann stimmt das. Der Mehrheit der Entwicklungsteams neigt aber dazu, einen nicht zu radikalen Ansatz bei der Implementierung der Cloud Plattformen zu gehen. Keine Extreme, keine Nano Services, der goldene Mittelweg. Ist der das richtige? Ich glaube, ja.

Und Java? Ich würde es lieben, Kotlin wie einen Stern steigen zu sehen. Momentan passiert es aber nicht, trotz Google, die in großem Umfang auf Kotlin setzen, sei es als Sprache für Android, oder auch für interne Entwicklungsprojekte.  2 große Unternehmen im deutschsprachigen Raum kenne ich, die auf Kontlin setzen und derzeit migrieren, 2 Unternehmen aus dem öffentlichen Umfeld. Also Organisationen ohne hohen wirtschaftlich Druck. Ein Luxus also?

Und serverseitiges JavaScript? Und Python? Bei unseren Kunden kaum sichtbar. 

Was auch immer danach kommt, ich freue mich darauf.

 

Michael Schaffler-Glößl

19.06.2020

CIIT