10 Java-Bibliotheken die man kennen sollte

  1. Spring
  2. Vaadin
  3. MetaWidget
  4. Lucene
  5. Neo4j
  6. Jackson
  7. Freemarker
  8. slf4j
  9. Apache Commons
  10. Reflections

Alle Bibliotheken sind Open-Source und Freie Software.

Das Spring Framework ist ein kleines Universum und bietet neben dem Hauptkonzept der Dependency-Injection viele weitere Bibliotheken für gängige Use-Cases. So gibt es Bibliotheken für den Sicherheits-Layer, ein deklaratives Model-View-Controller Framework fürs Web, eine Persistenz-Abstraktionsschicht, um nur die wichtigsten zu nennen.

JavaScript-Bibliotheken sprießen wie Pilze aus dem Boden. Es gibt sicherlich hunderte davon, alle mit einem ähnlichen Ziel. Wer aber Java-Webanwendungen implementieren und kein Sprachmix mehr haben möchte, der kann mit Vaadin nun Server-seitig grafische Oberflächen programmieren. Ähnlich wie Swing bietet Vaadin eine umfangreiches, komponentenbasiertes GUI-Toolkit an. In Java geschriebene Oberflächen werden von Vaadin in JavaScript übersetzt und an den Client übertragen. Auch die Synchronisation der Daten zwischen Client und Server und umgekehrt übernimmt Vaadin.

MetaWidget ist ebenfalls im Bereich der grafischen Oberflächen angesiedelt und löst das Problem, dass viele Masken ähnlich sind. Mittels Introspection und/oder deklarativen Annotationen kann man automatisiert Formulare und Listenansichten für Daten anzeigen lassen. Ein sogenanntes MetaWidget untersucht beispielsweise alle Felder, Getter, Setter (mit oder ohne Annotationen) eines POJOs und generiert ein Formular zur Verwendung im Webbrowser. Änderungen im Formular kann man in das zurückschreiben und anschließend speichern. Woher die Daten kommen, ist abstrahiert, ebenso mit welcher Frontend-Technologie diese Daten angezeigt werden. Das bedeutet einerseits, dass man Daten aus POJOs, einer Datenbank, von REST Webservices, usw. verwenden kann. Andererseits kann man daraus Formulare und Listenansichten für Frontends wie Swing, Android, HTML & JavaScript, Vaadin, JSF, usw. generieren lassen.

Ein oft auftretender Use-Case ist die Suche. Statt selbst Indexe zu erstellen und zu updaten, sollte man dies eine Bibliothek machen lassen, die darauf spezialisiert ist. Lucene ist eine solche Bibliothek und bringt alle notwendigen Werkzeuge mit: Analyser, Index-Writer und Querys. Lucene ist zudem die Basis für Solr, einer Bibliothek, die die Anwendung abermals abstrahiert und vereinfacht. Beispielsweise kümmert sich Solr um Cache, Replikation und die Bereitstellung eines REST-Webservices, den man in Webanwendungen prima gebrauchen kann.

Relationale Datenbanken sind prima, sind aber nicht immer die ideale Weise um Daten zu persistieren. Konkurrenz kommt dank dem Hype-Wort “NoSQL” von allen Seiten – und das zu Recht! Eine dieser Alternativen stellen Graphendatenbanken dar, dessen prominentester Vertreter Neo4j ist. Graphendatenbanken sind der Schlüssel für eine hochgradig vernetzte (hoch-dimensionale) Datenlandschaft. Durch die Vernetzung der Daten untereinander ist es möglich, dass semantische Informationen nicht verloren gehen. Damit lassen sich komplexere Abfragen formulieren, die bereits nahe am menschlichen Denken sind, wie beispielsweise: “gib mir alle Personen einer Organisation, deren Freunde Freunde haben, die bei Google arbeiten”. Eine solche Suchanfrage lässt sich über ein Navigieren von Knoten zu Knoten über eine oder mehrere benamte Relation(en) bewerkstelligen.

Jackson dient zum Serialisieren und Deserialisieren von Daten im JSON- und XML-Format. Diese Bibliothek ist sehr einfach zu verwenden und erfreut sich einer Integration in viele Web-Frameworks.

Man kennt Templates bereits von Serienbriefen, doch auch im Web sind Templates gefragt. Ob als Template für eine Webseitenansicht oder als Vorlage für eine E-Mail-Kampagne, Freemarker liefert dafür eine soliden Funktionsumfang.

Wer Debugging so liebt wie ich, der freut sich über slf4j. Denn slf4j abstrahiert das Logging-Framework und löst damit das Problem, dass in einer Anwendung mehrere Logging-Frameworks gleichzeitig zum Einsatz kommen, da die Bibliotheken unterschiedliche Logging-Frameworks einsetzen.

Wer mit Java programmiert, sollte die Apache Commons Projekte kennen. Darunter befinden sich einige Perlen, die dem Java-Programmierer das Leben deutlich erleichtern. Beispielsweise wird der Umgang mit Collections durch Apache Commons Collections vereinfacht. Aber auch das Apache Commons VFS ist sehr interessant, wenn es um den Zugriff auf Dateien geht. Denn über ein virtuelles Dateisystem kann beispielsweise auf den Inhalt von ZIP-Dateien oder FTP-Ordnern zugegriffen werden, als ob es lokale Dateien wären. Ein Blick auf die Commons-Projekte ist daher jedem dringend angeraten.

Schließlich sollte man einen Blick auf Reflections werden. Diese Bibliothek abstrahiert die von Java mitgelieferte Reflection-Funktionalitäten und vereinfacht damit deutlich die Suche nach Klassen, Methoden oder Feldern nach Typ, Interface, Annotationen etc.