Blogkategorie: Java

SLF4J und Logback in Android

Wenn man als Java-Entwickler in die Android-Entwicklung einsteigt, ist zunächst vieles aus Java bekannt. Einige Aspekte sind aber auch anders gelöst. So zum Beispiel das Thema Logging. Hier bringt Android seine eigene API mit, die ohne weitere Konfiguration bequem verwendet werden kann. Bei fortgeschrittenen Herausforderungen zeigt dieser Ansatz jedoch seine Grenzen. Hier kann auf vorhandenes Wissen und Bibliotheken aus der Java-Welt zurückgegriffen werden.

Mutation Testing mit Pitest

Codequalität und -korrektheit lassen sich unter anderem mit Hilfe von Unit-Tests sicherstellen. Aber nicht jeder Unit-Test ist sinnvoll und häufig schaffen es Bugs von Unit-Tests unerkannt zu bleiben. Wie lässt sich die Testqualität erhöhen, um Programmierfehler zuverlässiger und früher zu erkennen?

Eine Groovy-DSL zum Erzeugen von Testdaten über JPA

Beim automatisierten, integrativen Testen von Software, die mit einem komplexen JPA-Datenmodell arbeitet, steht man unweigerlich früher oder später vor der Frage, wie sich semantisch sinnvolle Testdaten ohne großen Aufwand erzeugen lassen. Dieser Artikel zeigt, wie man mit Groovy eine Domain Specific Language (DSL) definieren kann, die es erlaubt, Testdaten leicht lesbar, modular und getrennt vom eigentlichen Test-Code zu definieren.

Jenkins Pipeline Plugin: Code-Vervollständigung in IntelliJ

Das Pipeline Plugin (früher Workflow Plugin) für Jenkins revolutioniert die Arbeit mit Jenkins, indem es das Erstellen von Build Jobs als Code ermöglicht. Dadurch werden Build Pipelines unter anderem wiederverwendbar, versionierbar, testbar und einfacher lesbar als etwas “Zusammengeklicktes“.

Statische Codeanalyse mit SonarQube

Manchmal fragen sich Entwickler: „Was mache ich hier eigentlich?“ Das hat dann nichts mit einer plötzlichen Sinneskrise oder dem Zusammenbruch der persönlichen Weltanschauung zu tun. Vielmehr wacht der innere Softwarearchitekt auf und verlangt nach einer Darstellung des Großen Ganzen.

Versionsnamen mit Maven: Auslesen des Versionsnamens

Der erste Artikel in dieser Serie – „Versionsnamen mit Maven: Erzeugen des Versionsnamens“ zeigt, wie mit Hilfe von Maven während des Builds eine Versionsnummer, angereichert mit weiteren Informationen in eine Manifest-, Properties- oder HTML-Datei geschrieben wird. Darauf aufbauend beschreibt dieser Artikel, wie diese innerhalb der Anwendung ausgelesen wird. Dies ist in vielen Fällen hilfreich: Man sieht sofort, welche Version auf welcher Stage deployt ist, die Versionsangabe kann Missverständnisse in Fehlerberichten vermeiden, etc.

Versionsnamen mit Maven: Erzeugen des Versionsnamens

In vielen Fällen kann es hilfreich sein, einer Anwendung ihre aktuelle Versionsnummer entnehmen zu können: Man sieht sofort, welche Version auf welcher Stage deployt ist, die Versionsangabe kann Missverständnisse in Fehlerberichten vermeiden, etc.

Code Conventions

80% der Lebenszykluskosten von Software entfallen auf Wartung. Keine Software wird von nur einem Entwickler betreut. Deswegen ist es entscheidend, dass der Code in einer gut verständlichen und nachvollziehbaren Art und Weise geschrieben ist. Code Conventions helfen, dabei das zu erreichen.

Apache Shiro: Komplexe Permissions selbst implementieren

Obwohl Apache Shrio mit seinen WildcardPermissions ein mächtiges und flexibles Werkzeug zur feingranularen Vergabe von Berechtigungen mitliefert, stößt man damit bei komplexen Szenarien an Grenzen. Dieser Artikel zeigt, wie sich beliebige Berechtigungsprüfungen über das Permission-Interface selbst implementieren lassen.