Zeit für Neues: Von Wicket zu Angular – einfacher als gedacht

In den vergangenen Jahren ging der Trend in der Client-Entwicklung weg vom serverseitigen Rendern hin zu clientseitigen Frameworks. Wer als Java-Entwickler nie richtig warm mit Javascript wurde, blieb trotzdem bei bewährten Frameworks wie Wicket. Mit Angular steht jetzt eine Alternative zur Verfügung, die auch hartgesottenen Java-Entwicklern entgegenkommt.

Angular bietet einem Java-Entwickler endlich eine Plattform, die sich gar nicht so sehr von der serverseitigen Welt unterscheidet. Weiter lesen…

Hacken mit Spring Boot und den Netflix-Bibliotheken

Microservices sind derzeit ein beliebter Ansatz für den Entwurf von Server-Anwendungen. Wer sich in einer Java-/Spring-Umgebung bewegt, sollte sich dazu mit den Netflix-Bibliotheken Ribbon, Eureka und Hystrix beschäftigen.

Bis vor kurzem war der Monolith das vorherrschende Muster beim Aufsetzen einer neuen serverseitigen Anwendung. Warum auch nicht? Solange sich die Funktionalität von einem überschaubaren Team umsetzen lässt und die Anforderungen an die Skalierbarkeit gering sind, hat der Alles-in-einem-Ansatz viele Vorteile.

Aktuell geht der Trend jedoch in Richtung Microservices. Weiter lesen…

Spring Boot und das Application-Server-Dilemma

Spring Boot erscheint als eine natürliche Weiterentwicklung des Spring-Frameworks. Das Spring-Ökosystem hat seit jeher das Ziel, die Entwicklung von serverseitigen Anwendungen zu vereinfachen und immer mächtigere Funktionalität zur Verfügung zu stellen.

Das Spring-Framework ist für mich deswegen unentbehrlich. Spring Boot verwende ich trotzdem ungerne. Weiter lesen…

Datenstrukturen ändern, aber bitte ohne Ausfallzeiten!

Bei einem anstehenden Release mit Änderungen an den Datenstrukturen hatte man es früher einfach: Server herunterfahren, Migrationsskripte laufen lassen, Server wieder hochfahren, fertig. In Zeiten von Server-Clustern und 24/7-Verfügbarkeit sind Änderungen an der Datenstruktur heute nicht mehr ganz so einfach.

Strukturänderungen im laufenden Betrieb müssen gut geplant und schrittweise umgesetzt werden. Ansonsten läuft man schnell in Gefahr, inkonsistente Daten oder Fehler in der Anwendung zu erhalten. Weiter lesen…

Thrift-API mit Spring: Wie integriert man beides?

Wenn man eine Server-Schnittstelle plant, denkt man heutzutage als Erstes an eine REST-API. Für öffentliche Schnittstellen ist REST oft auch eine gute Wahl. Für nicht-öffentliche Schnittstellen lohnt sich jedoch auch ein Blick auf Apache Thrift. Möchte man Thrift dann zusammen mit dem Spring-Framework verwenden, stellt man fest, dass die Integration etwas sperrig ist.

Öffentliche Schnittstellen sollten möglichst technologie- und plattformneutral und für Client-Anwendungen einfach zu nutzen sein. REST erfüllt diese Anforderungen, daher sind REST-basierte APIs weit verbreitet. Die Kehrseite der Technologieneutralität ist jedoch, dass REST keine Hilfe bei der Implementierung einer Anbindung bietet. Weiter lesen…

Priorisieren nach Zielen

Für eine belastbare Projektplanung ist es wichtig, alle Anforderungen eindeutig zu priorisieren. Und was tut man, wenn 80% aller Anforderungen Prio 1 haben?

Nur wenige Anforderungen an ein Projekt sind kontextfrei. Die meisten Anforderungen entstehen, um mit dem Projekt bestimmte Ziele zu erreichen. Daher erhalten so viele Anforderungen auch Prio 1 – sie sind wichtig für das jeweilige Ziel. Weiter lesen…

15 Jahre als Freiberufler in der IT – eine Zwischenbilanz

Meine 5 Gründe dafür, in der IT als Freiberufler zu arbeiten, sind auf viel Resonanz gestoßen. Mehrere Leser haben mich gefragt, wie man sich die Arbeit als Freiberufler vorstellen kann. Insbesondere: Wie findet man Projekte?

Da seit meinem ersten Projekt 15 Jahre vergangen sind, nehme ich das zum Anlass, eine persönliche Zwischenbilanz zu ziehen und auf diese Fragen einzugehen. Weiter lesen…

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…