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…

Wie schreibe ich ein Pattern?

Pattern schreiben

Nur was man aufschreiben kann, hat man richtig verstanden! Das Pattern-Format hilft, einen Lösungsansatz so zu verstehen, dass man ihn strukturiert niederschreiben kann.

Auch wenn der große Hype rund um das Thema Patterns schon länger vorbei ist, bleibt das Pattern-Format sehr hilfreich – nicht nur dann, wenn man nach einer Lösung für ein Problem sucht, sondern auch, wenn man schon eine Lösung hat und diese für andere dokumentieren möchte. Dieser Artikel gibt eine kurze Einführung, wie man sein erstes Pattern schreibt und was man dadurch gewinnt.

Weiter lesen…

Was kostet die Welt? Internationalisierung mit den International Components for Unicode (ICU)

Wie heißt „Japan“ auf Türkisch? Wie sortiert man koreanische Begriffe alphabetisch? Und wie viele Pluralformen gibt es im Arabischen? Wer sich ernsthaft mit diesen Fragen beschäftigen muss, kommt kaum an den International Components for Unicode (ICU) vorbei.

Als Java-Entwickler bietet einem die Java 7-Plattform gute Unterstützung, um lokalisierbare Anwendungen zu entwickeln, sowohl im Funktionsumfang als auch bei den unterstützten Sprachen. Jedoch ergeben sich schnell Anforderungen, die Java von Haus aus nicht unterstützt. Glücklicherweise gibt es eine Datensammlung zusammen mit einer Java-Bibliothek, die kaum einen Wunsch offen lässt: Das Common Locale Data Repository (CLDR) zusammen mit den International Components for Unicode (ICU).

Weiter lesen…

Testgetriebene Entwicklung: Test-first oder Test-last?

Testgetriebene Entwicklung (Test-driven development, TDD) sieht vor, die Tests vor dem eigentlichen Produktivcode zu schreiben (Test-first). Wer sich dabei nicht wohl fühlt, kann aber auch mit Test-last Systeme gut strukturieren und durch Tests absichern.

Mein Kollege Lutz hat in seinem Artikel zu Code-Retreats vor kurzem beschrieben, wie man – auch durch testgetriebene Entwicklung – zu einem besseren Entwickler werden kann. Seine Erfahrungen finde ich sehr beeindruckend. Sie haben mir Lust gemacht, ebenfalls an einem Code-Retreat teilzunehmen! Nur von einem der Grundsätze testgetriebener Entwicklung bin ich nicht vollständig überzeugt.

Weiter lesen…

JEE 6 und die Applikationsserver – ein Blick aus zwei Winkeln

JEE 6 ist eine ausgereifte, jedoch sehr komplexe Technologie. Vor allem der Betrieb eines Applikationsservers bringt eine erhebliche Komplexität mit sich. Was bedeutet der Einsatz eines JEE 6-Applikationsservers, vor allem im Zusammspiel von Architekten und Administratoren?

In einem früheren Beitrag habe ich argumentiert, dass ein Applikationsserver wie z.B. Glassfish zwar hilft, ein Projekt schnell zu starten. Langfristig jedoch erschweren JEE-Applikationsserver die Wartung und Weiterentwicklung eines Systems, vor allem, wenn sie aktualisiert werden – und mit ihnen die ganze technologische Basis eines Systems.

Meine Argumente möchte ich nun etwas vertiefen und einen weiteren Blickwinkel hinzufügen.

Weiter lesen…

Wie man ein besserer Entwickler wird! – Erfahrungen eines Code Retreats

Wer jahrelang Software entwickelt, hat sich in der Regel bewährte Programmierrezepte erarbeitet oder angeeignet. Doch wie entwickelt man sich selbst noch weiter? Die Software Craftsmanship/Clean Code Communities bieten dafür Ansätze. Eine Methode ist ein Code Retreat. Aber wie darf man sich das vorstellen und wird man als Entwickler dadurch besser?

Setup

Neun Uhr morgens, ein paar Häppchen und dann geht’s los. Mein erster Code Retreat. Ich warte mit etwa 20 Entwicklern gespannt in einem Raum mit Laptops, offener IDE und installiertem Testframework (z.B. JUnit) darauf, dass es los geht…

Weiter lesen…

Designermöbel v2 – oder: Wie migriere ich jede Nacht 227.487 Bilder?

woont.com ist eine der größten Seiten für Designermöbel im Internet. Letzte Woche ist der neue Auftritt live gegangen. Eine der größten Herausforderungen dabei war, die umfangreiche Bildersammlung zu migrieren.

Aufgrund einer strategischen Entscheidung hat sich der Betreiber von woont.com dazu entschlossen, die Technik hinter dem Web-Auftritt vollständig neu zu entwickeln. Im Laufe der letzten Monate ist dabei eine java-basierte Plattform entstanden, die von jetzt an die Basis für jegliche Weiterentwicklung sein wird. Mit JEE 6 und Apache Wicket als Grundlage steht die Plattform auf soliden Füßen.

Weiter lesen…

Kurze Wege nutzen – Software-Entwickler als Anforderungsmanager

Viele Software-Entwickler werden regelmäßig bei Ihrer Arbeit gestört. Nicht selten von Kollegen, die mit ihnen fachliche Anforderungen besprechen möchten. Anstatt jedoch den direkten Kontakt zu unterbinden, könnte man diesen auch gezielt fördern.

Das Thema Anforderungsmanagement wird in Projekten sehr unterschiedlich gehandhabt. Oft werden die fachlichen Anforderungen über den Projektleiter kanalisiert, damit er alle Themen im Blick hat und die Entwickler ungestört arbeiten können.

Es gibt jedoch gute Argumente dafür, sich anders zu organisieren.

Weiter lesen…

Freiberufler werden – 5 Gründe, sich in der IT selbstständig zu machen

Auf dem Weg in die Selbstständigkeit

Eine feste Stelle anzunehmen, ist nicht jedermanns Sache. Zwar gibt es gute Gründe, als Angestellter zu arbeiten, aber vieles spricht dafür, Freiberufler werden zu wollen.

Als selbstständiger Softwareentwickler arbeite ich seit jeher freiberuflich. Ich schätze diese Arbeitsweise sehr und empfehle sie gerne weiter. Dabei erlebe ich immer wieder, dass für andere Entwickler der Wechsel von einem festen Arbeitsplatz zur Selbstständigkeit eine große Hürde ist.

Welche Gründe sprechen aus meiner Sicht für die Freiberuflichkeit?

Weiter lesen…