Posts

Software-Entwicklung mit KI-Hilfe von ChatGPT

Bild
Wie hilft uns KI beim Programmieren? Als erfahrener Software Entwickler zeige ich euch, in welchen Situationen mir ChatGPT beim Entwickeln besonders hilft. Die Trainingsdaten der KI enthalten viele Programmiersprachen und Technologien. Außerdem kennt sie viele Algorithmen, Tutorials, Opensource Codes, Probleme und deren Lösungen. Dein Arbeits-Kontext, der komplette Sourcecode dazu und euer Problem bzw. dessen echte Root-Cause sind der KI allerdings unbekannt. Die KI bzw. ChatGPT hilft euch also nur so gut, wie ihr euer Problem bzw. die Anforderung mit passendem Kontext klar beschreibt. Mein generelles Vorgehen dazu ist Teile und Herrsche . Ich zerlege meine User Story bzw. meine Aufgabe in kleinere Teile. Kleinere Teilprobleme oder Teilanforderungen lassen sich leichter und genauer beschreiben, so dass die KI bzw. ChatGPT mich besser unterstützen kann.  Um euch das zu verdeutlichen, zeige ich im Folgenden Beispiele aus meinem Entwickler-Alltag. In diesen Beispielen habe ich Teil-Proble

Java 21: Die wichtigsten Features seit Version 17

Bild
Java 21, die neue Version mit verlängertem Support, ist da! Hier stelle ich die wichtigsten Features vor: Interface SequencedCollection, Record Patterns, Neuerungen bei switch und das Highlight virtuelle Threads Falls Ihr noch Java 11 verwendet, schaut euch hier die Features von Java 17 an:  java-17-features.html 🎓 Auf Udemy findet ihr meinen kostenloses Online-Kurs zu Java 21 . Java 21 at YouTube in English Interface SequencedCollection Die neuen Sequenced -Interfaces erweitern Listen-Implementierungen um den Direktzugriff auf das erste und letzte Element. Am Beispiel einer  ArrayList  zeige ich hier die neuen, selbsterklärenden Methoden: // Mutable list created. List < String > list = new ArrayList<>( List . of ( "1st" , "2nd" , "3rd" )); log .info( "Read first & last element in list: %s & %s" .formatted( list .getFirst(), list .getLast())); var reversedList = list .reversed(); reversedList .addFirst( "4th"

CronJobs mit Spring

Bild
Mit Spring können zeitgesteuerte Aufgaben in Java Code integriert werden. CronJobs wie wir sie in Linux kennen, definieren wir mit Spring einfach per Annotation. In diesem Artikel zeige ich wie das geht und wie Spring die CronJobs entsprechend unserer Definition ausführt. Was ist ein CronJob? Unter CronJob verstehen wir die zeitlich gesteuerte Ausführung eines Kommandos zur Erledigung einer Aufgabe bzw. eines Jobs. Das Kommando wird durch einen bestimmten Zeitpunkt oder eine zeitliche Bedingung angestoßen. Typische Beispiele für durch CronJobs gestartete Aufgaben sind: Regelmäßiges Aufräumen der Datenbank - z. B. um veraltete Daten zu löschen oder DSGVO konform persönliche Daten nach einer definierten Zeit zu löschen. Wöchentlicher Versand von Newslettern oder Werbung per Email Nächtliche Datenbank-Backups Monatliches Erstellen von Rechnungen (z.B. Telefon-Rechnung) Das Betriebssystem Linux bietet crontab zum Erstellen von CronJobs an. Mit crontab könnten wir eine Spring Anwendung star

Copilot Evaluierung bei der Telekom

Bild
Hebt KI die Software-Entwicklung auf ein neues Level? Sind EntwicklerInnen mit KI Support schneller als ohne? Diesen Fragen stellen wir uns bei der Deutschen Telekom IT GmbH. Dazu führten mein Team und ich eine Evaluierung von GitHub Copilot durch. Ich stelle euch hier die Ergebnisse und Meinungen des Teams vor. Warum Copilot? Copilot integriert sich in die Entwicklungsumgebung der Programmierenden. Es analysiert den vorhandenen Sourcecode und macht mittels KI unterstützter Text-Completion Vorschläge für weiteren Code. Diesen können die ProgrammiererInnen per Tastendruck übernehmen. Das beschleunigt insbesondere das Schreiben von sich wiederholendem Code. Copilot in der Praxis ChatGPT hilft EntwicklerInnen bei technischen Fragestellungen. Dazu unterbrechen wir das Schreiben von Code in der IDE, öffnen im Browser die Chat-KI und stellen unsere Frage oder Anforderung. Mit der Antwort von ChatGPT wechseln wir in die IDE und probieren sie aus. Im Unterschied zu ChatGPT unterstützt Copilot

Model-View-Controller mit Spring und Thymeleaf

Bild
Thymeleaf ist eine moderne Template Engine, um Server-seitig html zu generieren. Hier zeige ich, wie es in einem Spring MVC Projekt eingesetzt wird. Dabei demonstriere ich verschiedene Thymeleaf Ausdrücke (if, loop, usw.), Lesen des Modells und Nutzung von CSS oder JavaScript. Model-View-Controller mit Spring und Thymeleaf Betrachten wir das bekannte Design Pattern MVC (siehe auch rest-json-apis-in-java-leicht-gemacht ), dann können wir die einzelnen Bestandteile mit dem hier vorgestellten Technologie-Stack implementieren: Das Modell ( Model ) wird mit einfachen Java Objekten realisiert (POJO). Die Ansicht ( View ) wird mittels Thymeleaf in html, css und JavaScript implementiert. Der Controller wird als Spring Bean vom Typ @Controller umgesetzt. Thymeleaf ( https://www.thymeleaf.org/ ) ist eine Template Engine deren Templates in html geschrieben werden. Dynamische Stellen im html werden dann durch Thymeleaf Ausdrücke definiert. Z.B. blenden wir mit folgendem if -Ausdruck eine Nachrich

Performanz Tuning: Strategien und Tipps aus der Praxis

Bild
Performanz-Problemen sind meist schwierig zu lösen. Hier zeige ich euch, wie wir unser letzten Problem analysiert, gemessen und gelöst haben. Unter dem Zeitdruck des bevorstehenden Go-Lives wählten wir Strategien, um Risiken durch Seiteneffekte zu vermeiden. Analyse von Performanz-Problemen Aus Kundensicht ist unser System eine Browser-Anwendung. Wenn die Seiten im Browser langsam laden, haben wir ein Performanz-Problem. Die Diskussion, was langsam bedeutet und ob langsame Ladezeiten in manchen UseCases akzeptabel sind, ignoriere ich hier. Unsere Situation war eindeutig, statt Ladezeiten von 1-2 Sekunden dauerte es in einigen Fällen mehr als 10 Sekunden. Logs sind ein guter Startpunkt für die Analyse. Eventuell habt Ihr einen Log-Eintrag am Anfang und Ende der Anfrage. Mit den Zeitstempeln dieser beiden Log-Einträge könnt Ihr die Bearbeitungsdauer der Anfrage überprüfen. Das bestätigt objektiv euer Preformanz-Problem. Wo treten Performanz-Probleme auf? In unserem Fall betraf das Perfor