Der JAST-Stack

Der JAST-Stack besteht aus einem Java-Backend, einem Angular Frontend, einer relationalen Datenbank (SQL) sowie Tomcat als Laufzeitumgebung. Es handelt sich um keinen feststehenden Begriff aus der Praxis, sondern ist aus der Übertragung des MEAN-Begriffs (siehe MEAN-Stack) auf die Java-Welt entstanden. Dieser Artikel gibt einen kurzen Überblick auf die Herangehensweise bei der Entwicklung einer webbasierten Anwendung auf Basis des JAST-Stack, wobei Spring Boot als direkte Laufzeitumgebung in Verbindung mit einer Container-Virtualisierung zum Einsatz kommt.

Beispiel Szenario

Das Szenario umfasst eine sehr einfache, webbasierte Geschäftsprozesslösung zur Erfassung, Verwaltung und Freigabe von Urlaubsanträgen. Das System unterscheidet vier unterschiedliche Rollen: Antragsteller, Vorgesetzter, Personaler sowie Administrator. Diese haben verschiedene Lese- und Schreibrechte. Antragsteller reichen ihren Urlaubsantrag ein, der von ihren vorgesetzten geprüft und freigegeben wird. Verschiedene Übersichtsseiten helfen Personalern dabei, den aktuellen Status der Antragsbearbeitung einzusehen, sich einen Überblick über anstehende Urlaubszeiten zu verschaffen und das Kontingent an Resturlaubstagen zu kalkulieren.

Implementierungsdetails des Servers

Das Spring-Framework besteht aus über 22 Haupt- und vielen weiteren Community Projekten. Um das Problem mit den Versionsabhängigkeiten zwischen einzelnen Modulen in den Griff zu bekommen, findet bei Spring Boot eine kontextabhängige, automatische Konfiguration der sinnvollsten Abhängigkeiten statt. Die Implementierung innerhalb dieses Szenarios setzt Spring Data-JPA, Spring Security und Spring Web ein.

  • Spring Data-JPA baut auf Jakarta EEs JPA (Java Persistence API) auf. Spring Data unterstützt einem beim Erstellen von Repositories. Diese können mit der @Autowired Annotation und per Dependency Injection in eine Klasse injiziert und so verwendet werden. Die Methoden von Repositories werden über bestimmte Konventionen auf SQL-Befehle abgebildet, so dass die Datenbankanbindung in Gänze ohne Implementierungsdetails möglich wird (Query Builder-Mechanismus).
  • Spring Security unterstützt die Implementierung der Authentifizierung und Autorisierung in einem System. Über eine Fluent-API lassen sich konfigurativ Einstellungen vornehmen, welche URLs einer Webanwendung die Authentifizierung eines Anwenders erfordern. Darüber hinaus lässt sich definieren, ob ein Anwender eine bestimmte Rolle besitzen muss. Über Bordmittel lassen sich mit Hilfe von Spring Security wichtige sicherheitsrelevante Funktionen, wie zum Beispiel das „Cross-Site-Request-Forgery“ oder „Cross-Origin-Resource-Sharing“ aktivieren. Die Rest-Schnittstellen für den Login und Logout werden automatisch von Spring zur Verfügung gestellt. Es ist dennoch möglich diese durch selbst Implementierung zu Überschreiben.
  • Bei Spring Web handelt es sich um ein Full-Stack-Web-Development-Framework nach dem MVC-Paradigma.
Implementierungsdetails des Clients

Angular unterstützt einen bei der Erstellung von SPAs (Single Page Application). Eine SPA lädt HTML-Fragmente und Daten einer Website Dynamisch. Sodass der Server weniger belastet wird und der Benutzer eine bessere User Erfahrung hat, da alles schneller lädt. Angular verwendet als Programmiersprache TypeScript. Für Angular gibt es zahlreiche UI-Bibliotheken. Die Komponenten zur Verfügung stellen, was sehr hilfreich für ein schnelles Design ist. Als Beispiel sind zu nennen, Angular Material und PrimeNG. Die nachfolgende Abbildung zeigt den groben Aufbau einer Angular-Webanwendung.

Fazit

Die Kombination aus Spring Boot für die Server- und Angular für die Clientseite hat sich bewehrt. Die Techniken sind gut kompatibel und man wird in vieler Hinsicht unterstützt. Gerade bei aufwändigeren Details wie den Sicherheitsaspekten mit Authentifizierung und Autorisierung sowie bei der Datenbankkommunikation bietet Spring eine Reihe von out-of-the-box Lösungen an, die eine hohe Produktivität in der Entwicklung sicherstellen.

Quellen