Wie die Jungfrau zum Kinde: Android als Java-EE-Entwickler

Wenn man als Java-Entwickler sonst immer komplexe Geschäftsanwendungen für den Server entwirft, bietet ein Android-Projekt willkommene Abwechslung. Spannend ist die Frage, ob sich liebgewonnene Architekturstile auf Android-Apps übertragen lassen. Und siehe da! Es klappt sogar erstaunlich gut.

Das Android-Ökosystem ist zwar umfangreich, aber es ist gut dokumentiert und man findet viele Bücher, gerade für den Einstieg. Als erfahrener Java-Entwickler reichen ein paar Tage aus, um die ersten eigenen Apps zu schreiben.

Weiter lesen…

Wie bleibt die Anwendung schnell? Performance-Regressionstests mit Hibernate!

In einer typischen Java-Enterprise-Anwendung steht und fällt die Performance mit den Datenbankzugriffen. Im Java-Code kommt es darauf an, sowohl die Anzahl der Datenbank-Roundtrips als auch die Größe der Ergebnismengen klein zu halten. Dies zu erreichen ist mit JPA, Hibernate & Co. schwierig – eine optimierte Anwendung langfristig schnell zu halten, aber noch schwieriger.

Die typische Java-Enterprise-Anwendung, die hier gemeint ist, hat einen mehrschichtigen Aufbau einschließlich einer Datenzugriffsschicht, die per JPA/Hibernate/EclipseLink auf eine relationale Datenbank zugreift. Für eine hohe Performance ist natürlich auch das Datenschema sehr wichtig. Gut gesetzte Indexe und eine optimierte Datenbankkonfiguration sind eine wichtige Basis für schnelle Zugriffe und einen hohen Durchsatz.

Weiter lesen…

Wer braucht eine Dokumenten-Datenbank? (Und wer nicht?)

Je mehr sich der Hype um NoSQL-Datenbanken legt, desto interessanter wird die Frage, wann sich der Einsatz einer solchen Datenbank wirklich lohnt. Werfen wir einen Blick auf die Dokumenten-Datenbanken wie MongoDB und CouchDB.

Was können Dokumentendatenbanken? (Und was nicht?)

Dokumentendatenbanken können, im Gegensatz zu relationalen Datenbanken, besonders gut hierarchische Daten speichern. Das heißt: Auch verschachtelt strukturierte Daten können einfach geladen und gespeichert werden. Somit entfallen aufwändige Tabellen-Konstruktionen, um die Daten zu speichern und komplexe Join-Operationen, um die Daten wieder zu laden. Wenn als Analogie eine relationale Datenbank einer Sammlung von CSV-Dokumenten entspricht, dann entspricht eine Dokumentendatenbank einer Sammlung von XML-Dokumenten.

Weiter lesen…

Finde die perfekten Möbel mit Hilfe von Einrichtungsideen und einem Magazin

Vor einer Weile hatte ich über den Relaunch von woont.com berichtet, einer Seite für alle, die sich gerne schön einrichten. Seit dem hat sich viel getan, sodass sich ein zweiter Blick lohnt.

Um dem Anspruch zu genügen, jedem Besucher das perfekte Möbel oder Accessoire zu vermitteln, hat woont zwei große neue Bereiche hinzu bekommen: ein Magazin mit Beiträgen über Wohnen und Leben sowie eine Community.

Weiter lesen…

Gut gedacht – zu viel gemacht: wenn User Stories Spielraum lassen

Auch in gut laufenden agilen Projekten ist am Ende eines Sprints nicht immer das entstanden, was am Wichtigsten gewesen wäre. Dafür lassen User Stories zu viel Spielraum.

In einem Projekt sind alle User-Stories gut durchdacht, die Prioritäten klar verteilt und die Entwickler arbeiten die Stories streng nach Priorität ab. Trotzdem ist der Kunde am Ende der Sprints nicht zufrieden: Wichtiges wurde nicht geschafft, Unwichtiges hingegen getan. Wie kann das passieren?

Weiter lesen…

Spring 3, Hibernate 4 und Wicket 6: ein starkes Gespann

Ohne Vorkenntnisse ist es gar nicht so einfach, eine Web-Anwendung mit Spring, Hibernate und Wicket aufzusetzen. Dabei reichen dafür nur wenige Zeilen Java-Code.

Im Laufe des Jahre sind im Spring-Framework verschiedene Varianten entstanden, wie man eine Web-Anwendung aufsetzt. Inzwischen ist es möglich, auf externe XML-Konfigurationsdateien vollständig zu verzichten. Wie man konkret vorgeht, eine Spring-Anwendung mit Hibernate und Wicket aufzusetzen, zeigt dieser Artikel.

Weiter lesen…

Wie lange kann man sprinten?

In Softwareprojekten hat sich der Begriff „Sprint“ als Synonym für ein- bis zweiwöchige Iterationen eingebürgert. Trotzdem ist ein Sprint keine passende Analogie in mittel- bis langfristig laufenden Projekten!

Im normalen Sprachgebrauch wird der Ausdruck Sprint vor allem im Sport verwendet. Dort bezeichnet ein Sprint die schnellstmögliche Fortbewegung, zu der ein Mensch in der Lage ist. Jedoch nur auf kurzen Strecken!

Weiter lesen…

Dokumentieren mit Patterns – Beispiele aus der Praxis

Die Dokumentation eines Projekts in Form von Patterns zu schreiben, klingt etwas gewagt. Dabei sind sie eine sinnvolle Ergänzung zur üblichen Software-Dokumentation.

Vor kurzem habe ich erläutert, wie man Patterns selber schreibt. Indem man eine vorhandene Lösung in Form eines Patterns beschreibt, lernt man viel über das Problem, das man gelöst hat. Die Dokumentation von Software enthält üblicherweise umfangreiche Beschreibungen, wie die Software strukturiert ist – die Gründe, warum die Software genau so strukturiert ist und nicht anders, werden selten intensiv ausgeleuchtet. Dabei sind gerade die Begründungen für die getroffenen Design-Entscheidungen wichtig, damit eine Software auch von neu zu einem Team hinzugekommenen Entwicklern langfristig konsistent weiterentwickelt werden kann.

An dieser Stelle möchte ich zwei Beispiele aus einem Projekt vorstellen, die zeigen, wie Patterns in der Realität einer Softwaredokumentation aussehen können.

Weiter lesen…

Speicherverbrauch von JEE-Anwendungen: Ein Beispiel aus der Praxis

JPA bietet viel Komfort beim Laden und Bearbeiten von Daten aus einer relationalen Datenbank. Nur darf man bei allem Komfort nicht vergessen, dass bei jeder Operation hinter den Kulissen viel geschieht. Am Beispiel von EclipseLink in einer Wicket-Anwendung zeigt sich, dass man beim Thema Speicherverbrauch auf größere Überraschungen stoßen kann.

Der Ausgangspunkt dieser Geschichte sind OutOfMemoryExceptions, die eine Web-Anwendung nach einigen Tagen Betriebsdauer warf. Ein Blick per JConsole in das Innere der Anwendung zeigte schnell, dass die durchschnittliche Session eines Besuchers knapp ein Megabyte groß war: bei vielen Besuchern ein extrem hohen Wert. Wie konnte das geschehen?

Weiter lesen…

Migration zu Apache Wicket 6: Was ist zu tun?

Apache Wicket hat viele Stärken. API-Kompatibilität zwischen den großen Versionsnummern gehört leider nicht dazu! Was muss man wissen, wenn man ein bestehendes Projekt zu Wicket 6 migrieren möchte?

Der Versionssprung von Wicket 1.4 zu Wicket 1.5 hatte schon für viel Arbeit gesorgt. Die Entwickler hatten nicht nur neue Funktionen hinzugefügt, sondern die API teilweise erheblich verändert haben. Der Wechsel von Wicket 1.5 zu Wicket 6 ist etwas leichter, doch es gibt erneut viel zu tun.

Weiter lesen…