Posts mit dem Label Best Practices werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Best Practices werden angezeigt. Alle Posts anzeigen

Samstag, 23. November 2024

Gradle vs Maven: What builder should I use for my Java projects?

Short Answer

Maven. Maven have some small advantages over Gradle but you drive good with Gradle.

 

TLDR

Gradle Pro

It works, mostly. New features appearing earlier. Great driver for Maven features.

Gradle Con

Some times it doesn't work. 

Semantic changes. 

Log handling is not intuitive.

Build file structure is not so clear like in Maven.

The build.gradle file looks like a mess if some newbie try to adapt, improve, re-structure, optimize the build process. The scripting ability is a clear con. If you think you have to adapt the build process in the build.gradle, think twice maybe your process is the problem.

Maven Pro

Higher stability and fixed well designed build process.

Maven Con

XML is for the upcoming devs a new things to learn. XML is little bit bloating.



Dienstag, 20. Juni 2023

The outcome of tech debt.

 

Es gibt zwei Gründ für Software Bugs

  1. Tech debt
  2. Komplexität

Komplexität ist auch nur eine Form von Tech debt. Baue technische Schulden ab sonst errecihst den Softwarestand wo die ganze Entwicklerkapazität für das Fire Fighting aufgezerrt wird und es keine Resourcen für die Weiterentwicklung gibt. Dann ist die Software tot.

Technische Schulden sind ein oder sogar der Grund für Fehler.

Donnerstag, 2. Februar 2023

Managing Dependencies for Micro Services

Dependency Hell, das kennen viele Softwareentwickler oft aus mature Projekten. Was bedeutet das fuers Projekt?

  1. Es kann nicht auf aktuelle Versionen von Libs migriert werden, Java eingeschlossen. Dadurch bleiben nuetzliche Funktionen verschlossen.
  2. Das Projekt ist statisch wie Beton und nur unter sehr grossem Zeitauswand aenderbar.
  3. CVEs koennen nicht behoben werden.

Um Dependencies effiktiv zum meisten und obige Schwaechen zu umschiffen, hier ein paar Best Pracices im Umgang mit Dependencies.

  1. Goldene Regeln
    1. Less is more
    2. Convention over configuration
  2. Versuche mit moeglichst wenig Konfigurationen auszukommen.
  3. Versiuche moeglichst wenig Dependencies zu benutzen.
  4. Benutze Parents wenn moeglich.
  5.  Benutze Dependeny Management (Maven) wenn es moeglich ist.
  6. Benutze nur fixe Versionen von Libs wenn sie nicht im Parent verfuegbar sind.
  7. Wenn du Excludes/Includes brauchst z.B. um CVEs zu fixen, dann hinterlasse einen entsprechenden Kommentar mit der CVE Nummer. So kann diese Konfiguration spaeter sehr einfach entfernt werden.
  8. Update regelmaessig deine Dependencies um keinen Wartungsstau aufkommen zu lassen. Du kannst leicht einen Check Step in der Build Pipeline einbauen die dir Anzahl der outdated Libs ausgibt.
  9. Aktuelle Libs verbessern die Sicherheit, aktuelle Libs haben weniger CVEs. 
  10. Pruefe ob Dependencies noch benutzt werden
    1. Grep isy dein Freunf fuer Compile Scope Dependencies: grep -r com.strange-package src/
    2. Organize your imports
  11. Das Build file ist genauso ein Teil deines Softwareprojetes wie der Code selbst.