Aus der Werkzeugkiste, Teil 4: Adam Bien

Adam Bien gehört zu den bekanntesten Enterprise-Java-Entwicklern aus Deutschland. Welche Werkzeuge er tagtäglich bei Kunden oder in eigenen Projekten nutzt, erzählt er im vierten Teil unserer Tool-Interview-Reihe.

Werkzeuge  –  2 Kommentare
Aus der Werkzeugkiste, Teil 4: Adam Bien
Anzeige

Nach drei Autoren mit JavaScript-Background stellt nun Adam Bien anhand von Kategorien wie Codegenerierung, Editor/IDE, Debugging, Codeanalyse, Unit Testing, Integration Testing, Code Coverage, Building, Deployment und Continuous Integration seine präferierten Werkzeuge vor.

Adam Bien

Seine Kunden sind zunehmend an Ergebnissen, Produktivität und Wartbarkeit interessiert. Die Techniken spielen in den Projekten deswegen eine untergeordnete Rolle. Kurze Entwicklungszyklen, schnelle Deployments und kurzes "Time to Market" führen zum ausschließlichen Einsatz von Java EE 7 auf dem Server. So kann er sich von der ersten Minute an auf die Fachlichkeit fokussieren und auf jegliche Evaluierungen der Techniken verzichten. Mit der Wahl von Java EE 7 fallen für ihn alle "Best of Breed"-Diskussionen und Entscheidungen weg. Es stellt für ihn die Agilität pur dar: Alle nichtessenziellen Entscheidungen werden verschoben. Für die Entwicklung wird lediglich die Java EE 7 API benötigt. Die Anwendung lässt sich später, ohne jegliche Änderungen auf die Anwendungsserver WildFly, TomEE, Payara, Weblogic oder WebSphere Liberty deployen. Nun lassen wir aber ihn zu Wort kommen:

Java EE basiert auf dem Prinzip "Convention over Configuration" und gibt sinnvolle Standardwerte für jegliche Konfigurationen bereits vor. Bei den meisten Anwendungen kann man völlig auf XML-Konfigurationen oder Deployment-Deskriptoren verzichten. Auch das Layout eines WAR – der "ausführbaren" Anwendung – ist vorgegeben. Maven stellt sich als das effektivste Build-Werkzeug für Java-EE-Anwendungen heraus. Es ist lediglich die Abhängigkeit zur Java EE 7 API zu deklarieren.

Das Projekt selbst lässt sich mit einem Wizard, dem sogenannten Maven Archetype, aber auch von der Kommandozeile erstellen:

mvn archetype:generate -Dfilter=com.airhacks:javaee7-essentials-archetype

Java-EE-Anwendungen benötigen keine externen Abhängigkeiten für die Implementierung typischer Use Cases. Die Build-Zeiten liegen im Sekundenbereich und die WARs sind nur in Ausnahmefällen wenige MBytes groß.

Aus der Werkzeugkiste ...

Für die Java-EE-Entwicklung wird lediglich eine IDE mit guter Maven-Unterstützung benötigt. Als Consultant ist es einfacher, auf kostenlose Tools zu setzen – ansonsten kann es passieren, dass der Bestellprozess einer konstenpflichtigen IDE die Länge des Projekts übersteigt. Meine persönliche Wahl fällt auf die NetBeans Java EE Edition. Die IDE ist frei verfügbar und bringt alle notwendigen Features gleich mit. Passend zu Java EE und Maven kommt auch NetBeans ohne jegliche Konfiguration oder Plug-ins aus.

Auch IntelliJ IDEA Ultimate eignet sich hervorragend für die Entwicklung von Java-EE-Anwendungen. Ich verwende die IDE insbesondere in meinen Freizeitprojekten und freue mich jedes Mal auf das abwechslungsreiche Look-and-feel.

Java-EE-Anwendungen werden wie normale POJOs mit JUnit getestet. Für Unit-Tests und Integrationstests verwende ich JUnit mit Mockito und die Implementierung entsprechender Persistenzprovider wie EclipseLink oder Hibernate. Für die isolierten Tests des Mappings der Entitäten auf Datenbanktabellen eignet sich DerbyDB besonders gut. Die Datenbank lässt sich sowohl im In-Memory-Modus als auch mit dateibasierter Persistenz betreiben.

Für die Implementierung von Systemtests nutze ich Jersey, die Standard-Client-Implementierung von JAX-RS 2.0. Aus den Systemtests entstehen Stresstests. Die werden mit dem Apache Benchmarking Tool, Apache JMeter oder Java Microbenchmark Harness regelmäßig durchgeführt.

Die NetBeans IDE bringt einen guten Debugger und Profiler mit. Mit Letzterem lässt sich die Performance der Anwendungen nicht nur analysieren, sondern auch verfolgen. Diese wenige exakte, dafür aber nicht intrusive Variante bietet gute Einsichten in die Performance der Anwendung ohne nennenswerten Overhead. Eine abgespeckte Version des NetBeans Profiler wird mit jedem JDK ausgeliefert – es handelt sich um die VisualVM.

Das Werkzeug Java Mission Control (jmc) bietet noch tiefere Einblicke in die JVM. Mit ihm lassen sich Locks, Dateien und Netzwerk-I/O sowie Garbage-Collector-Aktivitäten nicht nur visualisieren, sondern auch aufzeichnen und nachträglich analysieren. Der Flight Recorder ist allerdings mit einem -XX-Schalter beim Start der zu analysierenden Anwendung freizuschalten. Der Flight Recorder muss für den produktiven Einsatz lizenziert werden.

Sowohl mit jvisualvm als auch mit jmc lassen sich bequem JVM Heapdumps erstellen. Diese kann man mit dem Eclipse-basierenden Memory Analyzer Tool (MAT) analysieren.

Anzeige