Statische Codeanalyse mit unmittelbarem Feedback in der IDE mit SonarLint und SonarQube

Um in der Softwareentwicklung die Codequalität zu erhöhen, gibt es einige Tools zur statischen Codeanalyse, die unterschiedliche Sprachen und Kriterien abdecken. Während wir es gewohnt sind, beim Schreiben von Code von einer IDE mit Compiler, Debugger und dergleichen unterstützt zu werden, laufen solche Codeanalysetools regelmäßig im Zusammenhang mit einem Buildprozess, der separat angestoßen werden muss. Oder sie laufen im Rahmen einer Continuous Integration zentral, und man erhält als Entwickler erst im Nachhinein durch den Report Hinweise auf potentielle Probleme und Verbesserungsvorschläge. Und wie werden die Konfigurationen synchronisiert, wenn es nicht zentral auf einem Server läuft?

Continue reading
Posted in Java and Quality | Tagged , , , | Leave a comment

Parametrisierte Tests in JUnit 5

Parametrisierte Tests in JUnit 5 ermöglichen es uns, einen Test mehrmals mit verschiedenen Argumenten auszuführen. Dafür benutzt man die Annotation @ParameterizedTest an einer Testmethode anstelle der @Test Annotation. Außerdem ist noch mindestens eine Datenquelle zu definieren, die die Argumente für die Testmethode liefert. Zum Definieren von Datenquellen gibt es verschiedene Annotationen.

Continue reading
Posted in Java and Quality | Tagged , | Leave a comment

Welche neuen Features bringt Angular 8?

Geplant war das Release der neuen Angular-Version für Mai 2019 und tatsächlich, da ist es mit dem Release von Version 8.0.0 am 28.05.2019. Auch wenn Angular 7 noch bis April 2020 weiter unterstützt wird, macht es Sinn, sich mit der neuen Version jetzt schon vertraut zu machen.

In diesem Blog-Post werden wir uns daher anschauen, welche neuen Features bzw. Änderungen die neunte Version des Frameworks mit sich bringt. Eines dieser Features (das Ivy-Projekt) ist dabei etwas größer. Deshalb werden wir darauf zu Beginn einen genaueren Blick werfen.

Continue reading
Posted in Web as a Platform | Tagged , , , , | Leave a comment

Serverless Architecture, der neue Trend

Die Industrie hat gerade erst kürzlich den letzten größeren architekturellen Hype durchgemacht. Das Aufteilen traditionell monolithischer Applikationen in Microservices und das Betreiben dieser in der Cloud ist ein großer Schritt in eine neue Welt. In dieser neuen Welt scheint alles unendlich skalierbar und modularisierbar. Nun soll es aber jenseits dessen, in Form der Serverless Architecture, noch einen Schritt weiter gehen. Dieser Blog-Post beschäftigt sich mit den grundlegenden Fragen: was ist eigentlich Serverless und welche Vor- und Nachteile hat es?

Continue reading
Posted in Java Runtimes - VM, Appserver & Cloud | Tagged , , , | Leave a comment

Performance-Optimierungen mit JPA

Ihre Anwendung könnte schneller antworten, der Fachbereich ist nicht wirklich zufrieden – aber Entwickler und Datenbank-Administratoren finden keine Optimierungen mehr? Wie kann man die Performance ohne eine Investition in potentere Hardware – wenn dies überhaupt einen Effekt hat – verbessern und welche Fallstricke werden oft übersehen?

Continue reading
Posted in Java Persistence | Tagged , | Leave a comment

AdoptOpenJDK – kostenlos und langfristig

Die beiden vorangehenden Artikel dieser Serie befassten sich zum einen ausführlich mit den kommenden OpenJDK Lizenzänderungen, sowie auch mit den Alternativen, die weiterhin eine freie Nutzung des JDK ermöglichen. In diesem Artikel werden wir uns mit AdoptOpenJDK als eine der vielversprechendsten dieser Alternativen beschäftigen.

Continue reading
Posted in Java Runtimes - VM, Appserver & Cloud | Tagged , , | 1 Comment

Gradle 5.3

Ende letzten Monats wurde Gradle 5.3 veröffentlicht. Somit ist es mal wieder Zeit, sich anzuschauen, was es an Neuerungen und Änderungen gab:

Feature Variants ermöglichen es jetzt, optionale Abhängigkeiten basierend auf den Einstellungen des Builds zu konfigurieren. Mithilfe von dieser Funktionalität lassen sich mehrere Szenarien abbilden:

  • Es können optionale Abhängigkeiten vergleichbar zu Maven abgebildet werden.
  • Es können verschiedene Runtimes unterstützt werden, und beim Build muss sich für eine entschieden werden (wie z. B. Graal oder Hotspot).
  • Runtime Features, welche beim Ausführen optional vorhanden sein können (wie z. B. eine zusätzliche REST-API).
  • Es können verschiedene Varianten auf einmal gebaut werden (z. B. eine App mit Premium Version mit mehr Features und einer eingeschränkten Gratis-Version).

Sofern so eine Funktionalität in den eigenen Builds benötigt wird, lohnt sich insbesondere bei diesem Feature ein Blick in die englische Dokumentation: https://docs.gradle.org/5.3/userguide/feature_variants.html

Fehlermeldungen bezüglich Fehlern beim Löschen von Dateien und Ordnern wurden verbessert. So zeigt Gradle jetzt auch ohne extra Parameter an, welche Pfade nicht gelöscht werden konnten.

Als letztes sei noch erwähnt, dass die API ProjectLayout.configurableFiles() als veraltet markiert wurde und mit Gradle 6 entfernt wird. Als Alternative wird die Verwendung von ObjectFactory.fileCollection() empfohlen.

Posted in Build, config and deploy | Tagged , | Leave a comment