Quelloffene Tools & Frameworks

7 Java-Projekte, die Entwickler begeistern

15.05.2023
Von 
Matthew Tyson ist Java-Entwickler und schreibt unter anderem für unsere US-Schwesterpublikation Infoworld.com.
Das Java-Ökosystem quillt über vor Tools und Frameworks für so gut wie alle Programmierbedarfe. Diese sieben Open-Source-Projekte sollten Sie sich nicht entgehen lassen.
Diese sieben Java-Projekte haben das Potenzial, Developer über Gebühr wachzuhalten.
Diese sieben Java-Projekte haben das Potenzial, Developer über Gebühr wachzuhalten.
Foto: Ground Picture - shutterstock.com

Bei dem enorm breitgefächerten Angebot an Open-Source-Projekten, die das Java-Ökosystem beherbergt, verliert man leicht den Überblick - und übersieht dabei möglicherweise einige wirklich hilfreiche und interessante Projekte. Etwa eines der folgenden sieben.

Vaadin Hilla

Das Full-Stack-Framework Hilla kommt mit Java-basiertem Backend sowie JavaScript-Frontend und unterstützt die reaktiven Frontend-Frameworks React und Lit. Hilla ermöglicht es Ihnen, ein neues Full-Stack-Projekt mit einem einfachen Befehl einzurichten: npx @vaadin/cli init --hilla foundry-hilla. Dabei handelt es sich um einen NPM-Befehl, der jedoch ein Standard-Maven-Layout mit einem von Vite erstellten Frontend-Verzeichnis bereitstellt und alles zusammen mit dem ./mvnw-Skript ausführt.

Hilla erzwingt Typing zwischen den beiden Anwendungshälften - Ihre IDE kann also Änderungen an der Java-API und dem TypeScript-Frontend erkennen und weitergeben. Mit diesem Framework funktionieren auto-complete und refactor einfach nur - ähnlich wie bei tRPC in der TypeScript-Welt. Hilla integriert darüber hinaus auch Persistenz über JPA (auf Hibernate) mit einer Reihe von SQL-Datenbanken wie MySQL und PostgreSQL.

Hilla ist in Bezug auf die Technologien, die es zusammenfügen kann (im Vergleich zu einigen anderen hier vorgestellten Projekten), weniger flexibel. Aber es liefert Ihnen eine hochwertige Basis, auf der Sie aufbauen können, ist gut gewartet und dokumentiert. Wenn Sie eine Full-Stack-Applikation mit Java bauen wollen und React oder Lit für Ihr Frontend bevorzugen, ist Hilla ein großartiges Framework.

jHipster

Auch bei jHipster handelt es sich um ein Full-Stack-Framework. Es verfolgt einen sehr flexiblen Ansatz, der eine Vielzahl verschiedener Technologien in einem zusammenhängenden Stack vereinen kann - wobei Java als API-Middleware zum Einsatz kommt. Dabei können Sie aus mehreren reaktiven Frontends und einer Vielzahl von SQL- und NoSQL-Data-Stores wählen.

Wie bei Hilla starten Sie auch bei jHipster damit, eine Applikation mit einem NPM-Package zu generieren - dem jhipster-Generator. Dieser führt Sie durch einen Fragebogen, der Ihnen einen guten Eindruck von seinen Fähigkeiten vermittelt. Falls Ihnen der Fehler ERR_PACKAGE_PATH_NOT_EXPORTED begegnet, HIER finden Sie die Lösung.

Um Ihnen einen Eindruck von der Bandbreite dieses Frameworks zu vermitteln: jHipster stellt Sie zunächst vor die Wahl zwischen einer monolithischen Anwendung, einer Microservices-Architektur und einem Gateway. Wenn Sie sich für die erstgenannte Option entscheiden, können Sie diese mit Spring WebFlux in eine reaktive Anwendung umwandeln. Dazu können Sie aus verschiedenen Authentifizierungs-Arten wie JWT oder Oauth 2 wählen. Und schließlich haben Sie auch noch die Wahl zwischen diversen Data Stores wie SQL, MongoDB und Cassandra - gefolgt von einem Anwendungscache der zweiten Ebene wie Ehcache, Memcached oder Redis.

In der Folge erlaubt der jHipster-Generator es Ihnen, eine Handvoll weiterer Technologien hinzuzufügen:

  • Elasticsearch für Ihre Suchmaschine,

  • WebSockets mit Spring WebSocket,

  • Apache Kafka als asynchroner Message Broker und

  • API-first-Entwicklung mit dem OpenAPI-Generator.

Im Anschluss dürfen Sie aus mehreren Frontend-Frameworks wählen und eine Admin-UI erstellen (Themes vorhanden). Auch Domänenmodelle, die dazugehörigen Datenstrukturen und Benutzeroberfläche lässt sich generieren. Zu den Features gehören darüber hinaus Internationalisierung und Testing sowie Support für Maven und Gradle. jHipster ist eine gute Wahl für die allermeisten Java-Anwendungen.

GraalVM

Das GraalVM-Projekt wurde im März 2018 mit dem Ziel gestartet, eine umfassendere Implementierung der Java Virtual Machine (JVM) bereitzustellen. Entsprechend kann GraalVM alles, was eine JVM kann - und noch einiges mehr: Sie ermöglicht es, eine Vielzahl von Programmiersprachen zu verwenden und in zahlreiche Ausführungsumgebungen auszuliefern. GraalVM beinhaltet außerdem verschiedene Compiler-Stile, darunter die eines Performance-steigernden JIT-Compilers.

GraalVM kann jede Sprache ausführen, die sich mit LLVM kompilieren lässt, darunter C, C++, Rust, Swift und viele weitere. Auch Bytecode-Sprachen wie Java, Scala, Kotlin und Groovy bleiben nicht außen vor. Zudem werden auch JavaScript, Python, Ruby und R unterstützt. In naher Zukunft könnte Zig hinzukommen.

Die Ähnlichkeiten zur JVM bedeuten, dass Sie auch all deren Vorteile für alle unterstützten Sprachen nutzen können - insbesondere das "Write once, run anywhere"-Prinzip. GraalVM kann mit dem Befehl lli beispielsweise ein C-Programm ausführen, das zu LLVM-Bytecode kompiliert wurde. clang würde den Code hingegen direkt in eine ausführbare Datei kompilieren. Dabei gibt GraalVM eigenständige Standalone-Execution-Versionen für viele (aber nicht alle) Sprachen und Plattformen aus.

Ebenfalls enthalten: Support für viele Target-Binaries wie Wasm, Linux-Varianten, macOS, Windows, iOS und Android. Auf diversen Zielsystemen unterstützt GraalVM auch native Images, die ohne Installation ausgeführt werden können. Entwicklern stehen zusätzliche Execution Modes zur Verfügung wie JIT- und AOT-Kompilierung.

GraalVM wird gut gepflegt und dokumentiert und kann eine aktive Community vorweisen. Ein überzeugendes Projekt, das auf dem besten Weg ist, sich zu einer Art universellem Sprachwerkzeug zu entwickeln.

Micronaut

Micronaut geht in Sachen Java-Entwicklung neue Wege und zielt dabei auf moderne Cloud- und Serverless-Umgebungen ab. Dabei bietet es eine Fülle von Funktionen (etwa Befehlszeilen-Tools), um Projekte mit einer Reihe von integrierten Technologien aufzubauen, zu erstellen, umzusetzen und zu testen. Am bedeutendsten ist dabei: Micronaut wurde um ein AOT-fähiges Inversion-of-Control (IoC)-Framework herum entwickelt, das die Startup-Zeiten auch angesichts großer Codebasen hält. In Kombination mit Microservices-orientierten Support-Maßnahmen wie Service Discovers, Tracing und Container Deployments ist Micronaut eine gut durchdachte und überzeugende Option für die moderne Java-Entwicklung.

Micronaut bietet einen webbasierten Projektdesigner, mit dem Sie sich einen Eindruck von der Bandbreite der Tools verschaffen können, die sich in den Micronaut-Kern einbinden lassen. Das Tool ähnelt dem Online-Generator von jHipster, setzt aber eigene Akzente. Micronaut ist im Kern reaktiv und unterstützt reaktive Implementierungen wie RxJava und Reactor - alles weitere baut auf dieser zentralen Säule auf. Micronaut enthält zudem seinen eigenen, reaktiven HTTP-Client.

Jeder Knoten in Micronaut ist eine reaktive Komponente, die unter Verwendung eines zentralen Service-Brokers wie ZooKeeper oder Eureka zu einer größeren Microservices-Architektur zusammengesetzt werden kann. Dabei erleichtert das Tool es, Best Practices in einem One-Stop-Shopping-Framework zu übernehmen, das ähnlich umfangreich wie Spring ist, sich aber stärker auf konkrete Implementierungsdetails konzentriert. Eine verlockende Wahl für Entwickler, die an Java-basierten Cloud- und Serverless-Umgebungen arbeiten.