Java

Maven

Für Java gibt es diverse Buildsysteme. Aber wozu braucht man überhaupt ein Buildsystem? Man kann doch auch mit Eclipse eine JAR- oder WAR-Datei erstellen. Grundsätzlich stimmt das, allerdings erlaubt ein Buildsystem viele Dinge, die über den Fokus von Eclipse hinausgehen. Ich habe zu Beginn meiner Java-Erfahrung ausschließlich Apache Ant verwendet. Ant ist extrem flexibel, allerdings ist relativ viel händischer Aufwand nötig. Um eine einfache JAR-Datei aus einigen Sourcen zu erstellen, musste man XML-Code schreiben um die Sourcen zu kompilieren, Resourcen zu kopieren und die JAR-Datei zu erstellen. Da ich das DRY-Prinzip („Don’t Repeat Yourself“) für Software sehr gerne anwende, habe ich nach einer Alternative gesucht. Maven war damals das Mittel der Wahl für Ant-Verweigerer, und nach wenigen Versuchen konnte ich bereits komplexe Projekte automatisiert übersetzen. Ich bin seit dem bei Maven geblieben und nutze es ausschließlich für meine Projekte. Bereut habe ich den Wechsel zu Maven bisher nicht.

Ich habe mitlerweile Maven in mehreren Firmen als Buildsystem eingeführt. Damit steht für alle Entwickler eine identische und konsistente Arbeitsumgebung zur Verfügung. Zusätzlich können automatisierte Buildsysteme aus den Quellen die Softwarepakete erstellen. Alles in Allem kann man sich mit Maven viel Zeit sparen, wenn man weiß wie es zu benutzen ist. Ich stehe daher meinen Kollegen und Freunden bei Fragen zu Maven immer zur Verfügung.

Mitlerweile hat Ant mit Ivy ebenfalls Fähigkeiten zum Dependency-Management bekommen, und es existiert mit Gradle eine Alternative zu Maven, die konzeptionell eine Mischung aus Ant und Maven darstellt. Allerdings bin ich mit Maven bisher nicht an die Grenzen gestoßen, so dass ich diese nicht im Detail getestet habe.

JPA mit Hibernate

Wie kann man mit Java einfach auf eine Datenbank zugreifen? Mit JDBC. JDBC ist zwar schön und gut, aber für viele Anwendungen, die lediglich Objekte in einer relationalen Datenbank speichern wollen, will man etwas mehr Komfort. Man will nicht aufwendig die Daten zwischen der Datenbank und den Entitäten hin und her kopieren. Man möchte auch keinen sinnlosen Code schreiben. Und man will Lazy Loading! All dies bekommt man mit JPA. Ich persönlich nutze in den meisten Fällen Hibernate als JPA-Implementierung, ganz einfach aus dem Grund, dass ich HIbernate bereits verwendet habe, bevor die JPA-Spezifikation erstellt wurde. Ich kenne daher mitlerweile die Fähigkeiten und Grenzen des Frameworks. Zusammen mit Seam ist es eine sehr mächtige Technologie, um in kurzer Zeit CRUD-basierte Anwendungen zu erstellen.

Wenn man JPA außerhalb eines JavaEE-Applicationservers betreibt, kann man mit verschiedenen Techniken den EntityManager verwalten. Eine sehr effiziente Technik ist dabei die EntityManager in View. Diese kann z.B. mittels eines Servlet-Filters realisiert werden, so dass für die gesamte Abarbeiten des Requests eine konsistente Sicht auf die Datenbank zur Verfügung steht.

Copyright © christophbrill.de, 2002-2017.