Posts

Posts mit dem Label "Java" werden angezeigt.

Spring Native Microservices mit GraalVM - Blitzstart in der Cloud

Bild
Der perfekte Microservice skaliert in der Cloud optimal, so dass sprunghaft steigende Last fehlerfrei verarbeitet wird. Mit Spring Native und der GraalVM können wir Cloud native Images bauen. Container von nativen Images starten trotz geringerem Ressourcenverbrauch blitzschnell. Dazu zeige ich euch hier eine Demo. AOT Kompilierung mit GraalVM GraalVM ist eine Java VM (Virtuelle Maschine) und ein JDK (Java Development Kit) in den Java LTS Versionen 11 oder 17. Oracle entwickelt GraalVM und bietet es als freie Community Edition oder lizenzpflichtige Enterprise Edition an. Seit Version 19 im Mai 2019 gilt GraalVM als produktionsreif. Die große Besonderheit von GraalVM ist die ahead-of-time (AOT) Kompilierung des Sourcecodes. Damit bauen wir in der Build-Phase (z.B. mit Maven) ein natives Image. Native Images enthalten alle benötigten Applikations Klassen, Dependencies, 3rd Party Bibliotheken und JDK Klassen. Das native Image ist eine alleinstehende, ausführbare Binärdatei, deren Vorteile

Eclipse als IDE für Java-/Spring-Projekte einrichten

Bild
Microservice-Entwicklung leicht gemacht mit einer passend eingerichteten Entwicklungsumgebung!  In diesem Post gebe ich Tipps, wie ihr eure IDE installiert, konfiguriert und mit guten Plugins erweitert. Als Bonus für Konzern-Angestellte erkläre ich, wie der Proxy eingestellt wird. Eclipse & JDK installieren Dieser Abschnitt ist irgendwie wenig überraschend... "Eclipse IDE for Java Developers" herunterladen und installieren bzw. entpacken. https://www.eclipse.org/downloads/packages/ JDK in Version 17 herunterladen und installieren. https://www.oracle.com/java/technologies/downloads/#java17 Das aktuelle Eclipe 2022-06 wird mit inkludiertem JRE geliefert. Diese JRE Version wird nur zum Starten von Eclipse benötigt. Das JDK 17 verwendet ihr dann für eure Software-Entwicklung in Eclipse. Ihr könnt natürlich noch weitere JDK Versionen installieren und diese dann auch für die Entwicklung in Eclipse nutzen. Eclipse konfigurieren / Proxy setzen Alle Eclipse Konfigurationen werden

Clean Code Dojo: Katas bei Code Wars

Bild
Du bist Software-EntwicklerIn und möchtest besser werden? Das geht durch eigene Übung und Lernen vom Code von anderen. Code Wars ist eine tolle Plattform, die genau das kostenlos anbietet.   Was ist Code Wars? Code was ist eine Plattform für Software-EntwicklerInnen, die Katas in (fast) allen gängigen verschiedenen Programmiersprachen anbietet. Katas sind Übungsaufgaben für Software-EntwicklerInnen, die ich hier schon ausführlicher vorgestellt hatte: clean-code-dojo.html . Das Tolle an Code Wars ist, dass es sehr viele Katas in unterschiedlichen Schwierigkeitsgraden gibt. Die Katas werden von der Code Wars Community erstellt, jeder kann Katas trainieren oder neue für andere Code Wars Benutzer schreiben. Deshalb gibt es hier bereits viele Übungsaufgaben und es werden immer mehr. Die Code Wars Community liefert dann auch den 2. tollen Lerneffekt. Wir können uns nämlich zu jedem Kata, die Lösungen von anderen Code Wars Benutzern anschauen und so Lernen wie andere Probleme lösen oder die

Clean Code am Minesweeper Beispiel

Bild
Mit Clean Code ist man nie fertig... Als ich mir den Code zu meinem vorherigen Clean Code Artikel ein zweites und drittes Mal angeschaut habe, habe ich immer wieder neue Punkte gefunden, die nicht so richtig sauber waren. Deshalb möchte ich in diesem Artikel weitere Beispiele für Clean Code anhand meiner Minesweeper Demo zeigen . Im Code zum Artikel wird das Spiel Minesweeper implementiert, die Regeln findet ihr  hier .  Den kompletten Code von mir findet ihr in GitHub: https://github.com/elmar-brauch/minesweeper.git Und ein passendes Online-Training bei Udemy . Verzicht auf (unnötige) Setter Häufig generieren wir für alle Attribute unserer Klassen Getter und Setter Methoden. Das hat zum Beispiel den Nachteil, dass wir ungenutzte und damit unnötige Attribute in unserer Klasse nicht erkennen, da sie vom Getter und Setter genutzt werden.  In der Klasse Cell des Minesweeper Spiel ist mir aber noch ein 2. Nachteil aufgefallen. Aus Clean Code wissen wir, dass die optimale Methode keine Para

Bedrohungslage Rot: Ist meine Anwendung von der kritischen log4j Schwachstelle betroffen?

Bild
Das Bundesamt für Sicherheit in der Informationstechnik hat wegen einer Schwachstelle im stark verbreiteten Java Logging-Framework log4j die IT-Bedrohungslage 4 / Rot ausgerufen. Daher schreibe ich aus aktuellem Anlass diesen Artikel, um euch eine Hilfestellung bei der Analyse zu geben. Seit dem 12.12.2021 geht dieser Alarm durch die Presse, hier Meldungen: https://www.heise.de/ratgeber/Schutz-vor-schwerwiegender-Log4j-Luecke-was-jetzt-hilft-und-was-nicht https://www.spiegel.de/netzwelt/web/log4-j-schwachstelle-ja-leute-die-scheisse-brennt-lichterloh https://www.bsi.bund.de/DE/Service-Navi/Presse/Alle-Meldungen-News/Meldungen/Schwachstelle_Log4j Wie prüfen, ob mein System betroffen ist? Um herauszufinden, ob ihr betroffen seid, durchsucht ihr die Dependencies bzw. verwendeten Bibliotheken in euer Software. Dabei prüft ihr, ob ihr generell log4j verwendet und wenn ja in welcher Version. Laut BSI sind die Versionen 2.0 bis 2.14.1 von log4j betroffen. Die ältere Version 1.x ist nicht betr

Clean Code Regeln zum Loslegen

Bild
In diesem Artikel stelle ich euch einige von mir ausgewählte Clean Code Richtlinien und Regeln vor. Sie sollen euch dabei helfen künftig leichter verständlichen und besser wartbaren Code zu schreiben, damit ihr euren KollegInnen das Entwickler-Leben angenehmer macht. Im Code zum Artikel wird das Spiel  Minesweeper  implementiert - ihr findet den Code in GitHub: https://github.com/elmar-brauch/minesweeper.git Und ein passendes Online Training bei Udemy . Namen mit Bedeutung Regel: Verwende Namen, welche die Absicht der Variable, Methode oder Klasse verraten. Im folgenden Code-Ausschnitt habe ich Kommentare ergänzt, um auf schlechte oder zumindest suboptimale Variablennamen hinzuweisen: public class MineField {      // Not optimal names: cells, field, listOfListOfCells, ...      private List<List<Cell>> fieldRows = new ArrayList<>();      ...      // Bad names: x, y, r, c      public MineField(int rows, int columns) {      ...      public void placeMineRandomly(int min