Stellt euch vor, ihr setzt ein neues Projekt auf. Vielleicht mit Spring und Angular? Dann werden einige Schritte wohl bekannt sein:
- Man modelliert die Entities.
- Man erstellt das Backend in Form von JPA Respositories und REST Services zum Abspeichern und Anzeigen der Daten
- Man erstellt das Frontend um Daten anzuzeigen und zu bearbeiten.
- Die Applikation wird mithilfe von Spring Security abgesichert
- Unit und Performance Tests wollen geschrieben werden
- Eine CI Konfiguration für Jenkins und/oder GitLab wird geschrieben
- Ach ja: Und Monitoring… eventuell?
Vieles davon sind Anforderungen an unsere Software die wir für jedes neue Projekt implementieren. Dabei haben sich Standards und Best Practices (BEST-P) durchgesetzt. Diese halten wir als Entwickler natürlich immer ein, vor allem wenn der Zeitdruck hoch ist. Naja zumindest sind wir alle immer "stehts bemüht". Ein schöner Traum, wenn wir all dies, in kurzer Zeit, erstellen könnten ohne auch nur selber eine Zeile Code zu schreiben und gleichzeitig alle BEST-P einhalten.
Ein hipper Traum
JHipster is a development platform to generate, develop and deploy Spring Boot + Angular/React Web applications and Spring microservices.
JHipster
-JHipster-
Was ist JHipster eigentlich?
Im Grunde ein Code Generator auf Yeoman Basis. Doch das Projekt „nur" als Code Generator zu bezeichnen kommt diesem bei weitem nicht gerecht. Viel mehr liefert JHipster eine komplette „Development Plattform", dessen Ziel es ist Applikationen zu generieren, zu entwickeln und zu deployen. Bei der Generierung einer Java Web Applikation werden dabei aktuelle BEST-P genutzt. Unter anderem:
- Security mit Spring Boot inklusive eines einfachen User Managements
- Dokumentierte REST Apis mit OpenAPI
- Eine ausführliche Testabdeckung des generierten Codes
- Ein strukturierter, gut kommentierter Code
- Ein responsive Frontend auf Basis von Bootstrap
JHipster bietet daneben noch eine ganze Reihe von Subgeneratoren an, die Teile der Anwendung generieren können. Unter anderem den Entity Subgenerator. Der Subgenerator kann Entity Klassen, die Spring JPA Repositories, REST Services und den dazugehörigen Frontend Code generieren. Das Frontend besteht dabei aus einem CRUD Frontend. Inklusive sind natürlich alle BEST-P!
Installation von JHipster
Um JHipster zu nutzen, gibt es verschiedene Möglichkeiten.
- Ganz klassisch, eine lokale Installation über NPM oder YARN
- JHipster online, ermöglicht online eine Applikation zu erzeugen
- Ein Docker Image, dass mit einer Basis Installation von JHipster daherkommt
- Eine Vagrant box Installation, eine komplette virtuelle Maschine die alle nötigen Tools vorinstalliert hat
- Installation mit einem Package Manager. Als Beta markiert und nur für Windows und MacOS erhältlich.
JHipster kann also auf verschiedensten Wegen installiert oder genutzt werden. Bei einer klassischen Installation über NPM oder YARN steht eine CLI zur Verfügung. Mit dieser können neue Applikationen erstellt oder Subgeneratoren aufgerufen werden. Wir wollen uns einmal JHipster Online genauer angucken und welchen Mehrwert uns das bietet.
JHipster Online
Angenommen ich möchte nun eins meiner Modelle auf ein Projekt anwenden, dann wird ein Branch mit den entsprechenden Änderungen erstellt. Diesen kann ich nun manuell reviewn und dann mergen. Analog funktionier das ganze, wenn ich eine CI Konfiguration erstelle. Jetzt haben wir sogar unsere Entites mit einem CRUD Frontend. Und immer noch keine eigene Zeile Code geschrieben!