<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>API &amp; Frameworks on JAVAPRO Germany</title><link>https://javapro.svenruppert.com/categories/api--frameworks/</link><description>Recent content in API &amp; Frameworks on JAVAPRO Germany</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Wed, 01 Apr 2026 12:01:51 +0000</lastBuildDate><atom:link href="https://javapro.svenruppert.com/categories/api--frameworks/index.xml" rel="self" type="application/rss+xml"/><item><title>Kostenlose Java-Training-Videos verfügbar: Von den Grundlagen bis zu modernen Frameworks</title><link>https://javapro.svenruppert.com/kostenlose-java-trainings-playlists-verfuegbar-von-den-grundlagen-bis-zu-modernen-frameworks/</link><pubDate>Wed, 01 Apr 2026 12:01:51 +0000</pubDate><guid>https://javapro.svenruppert.com/kostenlose-java-trainings-playlists-verfuegbar-von-den-grundlagen-bis-zu-modernen-frameworks/</guid><description>&lt;p&gt;Eine umfassende Sammlung von Java-Trainingsvideos ist ab sofort öffentlich verfügbar und bietet Entwicklerinnen und Entwicklern wertvolle Einblicke in moderne Backend-Technologien und Frameworks.&lt;/p&gt;
&lt;p&gt;Die Playlists decken zentrale Themen wie &lt;strong&gt;Spring Boot, Quarkus, Helidon, Payara, EclipseStore und MicroStream&lt;/strong&gt; ab und vermitteln sowohl eine solide Grundlage als auch ein tiefergehendes technisches Verständnis. Die Inhalte richten sich an Entwickler aller Erfahrungsstufen – vom Einstieg in moderne Java-Frameworks bis hin zu erfahrenen Engineers, die ihr Wissen weiter vertiefen möchten.&lt;/p&gt;</description></item><item><title>Produktionsreife KI-Agenten mit Java und Spring AI entwickeln</title><link>https://javapro.svenruppert.com/produktionsreife-ki-agenten-mit-java-und-spring-ai-entwickeln/</link><pubDate>Mon, 16 Mar 2026 07:00:18 +0000</pubDate><guid>https://javapro.svenruppert.com/produktionsreife-ki-agenten-mit-java-und-spring-ai-entwickeln/</guid><description>&lt;p&gt;Java-Entwickler bauen seit Jahrzehnten Enterprise-Anwendungen, aber wenn es um KI geht, wurde die Diskussion von Python dominiert. &lt;a href="https://spring.io/projects/spring-ai"&gt;Spring AI&lt;/a&gt; ändert diese Situation. Es bringt die gleichen Muster, die wir von Spring kennen - Dependency Injection, Auto-Configuration, portable Abstraktionen - in die KI-Entwicklung.&lt;/p&gt;
&lt;p&gt;Im Januar 2026 haben wir eine Beispielanwendung für einen Agenten entwickelt und möchten unsere Erkenntnisse aus dem Entwicklungsprozess teilen. Der KI-Agent führt Konversationen mit Memory, beantwortet Fragen aus internen Knowledge Bases, nutzt externe APIs und integriert sich mit bestehenden Microservices - alles läuft auf &lt;a href="https://aws.amazon.com/bedrock/"&gt;Amazon Bedrock&lt;/a&gt;. Wenn Kunden es selbst ausprobieren möchten, führt diese den Workshop &lt;a href="https://catalog.workshops.aws/java-spring-ai-agents"&gt;Building AI Agents with Java and Spring AI&lt;/a&gt; [1] durch typische Herausforderungen von Generative AI Modellen und bietet Schritt-für-Schritt-Lösungen mit Code auf &lt;a href="https://github.com/aws-samples/java-on-aws"&gt;GitHub&lt;/a&gt; [2].&lt;/p&gt;</description></item><item><title>Schluss mit YAML: Cloud-Infrastruktur in purem Java definieren, testen und deployen</title><link>https://javapro.svenruppert.com/schluss-mit-yaml-cloud-infrastruktur-in-purem-java-definieren-testen-und-deployen/</link><pubDate>Mon, 09 Mar 2026 07:03:25 +0000</pubDate><guid>https://javapro.svenruppert.com/schluss-mit-yaml-cloud-infrastruktur-in-purem-java-definieren-testen-und-deployen/</guid><description>&lt;p&gt;Als Java-Entwickler brüsten wir uns gerne mit professioneller, ingenieursmäßiger Entwicklung: Typsicherheit, Unit-Tests, Refactoring, Code-Reviews. Dann müssen wir ein Deployment durchführen und schreiben plötzlich hunderte Zeilen YAML, akzeptieren mangelnde Ausdrucksstärke, fehlende Abstraktionen und fehlende Flexibilität als alternativlos. Oder schlimmer: Wir loggen uns in die Cloud-Konsole ein und klicken uns zum Deployment durch.&lt;/p&gt;
&lt;p&gt;Dieser Artikel möchte eine Alternative vorstellen: Cloud-Infrastruktur in Java definieren, mit denselben Werkzeugen und Best Practices, die wir für Anwendungscode verwenden. Wir bauen ein funktionierendes Beispiel: einen Java-Service, der auf AWS ausgerollt wird, und decken den gesamten Lebenszyklus ab: von der Ressourcendefinition über Tests bis hin zu CI/CD. Das Beispiel verwendet Quarkus, die gezeigten Infrastruktur-Patterns lassen sich aber genauso auf Spring Boot, Jakarta EE oder jedes andere containerisierte Java-Framework anwenden. Der begleitende Code ist hier verfügbar: &lt;a href="https://github.com/wlami/stop-writing-yaml-javapro"&gt;github.com/wlami/stop-writing-yaml-javapro&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Ein unerwartet problemloses Upgrade</title><link>https://javapro.svenruppert.com/ein-unerwartet-problemloses-upgrade/</link><pubDate>Wed, 18 Feb 2026 07:05:47 +0000</pubDate><guid>https://javapro.svenruppert.com/ein-unerwartet-problemloses-upgrade/</guid><description>&lt;p&gt;Der Ausgangspunkt für diesen Artikel war kein strategischer Architektur‑Workshop und kein langfristig geplanter Migrationspfad, sondern ein vergleichsweise unspektakulärer Schritt: die Aktualisierung der Versionsnummern im bestehenden Projekt. Im Rahmen der Weiterentwicklung meines URL‑Shortener‑Projekts stand ohnehin ein reguläres Dependency‑Update an. Vaadin 25 ( &lt;a href="https://3g3.eu/vdn25"&gt;&lt;strong&gt;https://3g3.eu/vdn25&lt;/strong&gt;&lt;/a&gt; ) war zu diesem Zeitpunkt bereits verfügbar – also lag es nahe, den Schritt einfach zu gehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Quelltexte zu dem Projekt befinden sich&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;auf GitHub unter&lt;/strong&gt; &lt;a href="https://3g3.eu/url"&gt;&lt;strong&gt;https://3g3.eu/url&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/02/image-11-1024x632.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Die Erwartungshaltung war dabei realistisch, vielleicht sogar leicht skeptisch. Ein neues Major‑Release, neue Mindestanforderungen, ein modernisierter Stack – all das sind üblicherweise gute Gründe, zumindest mit kleineren Anpassungen oder ersten Reibungen zu rechnen. Entsprechend gering war die Hoffnung, dass ein einfaches Hochziehen der Versionsnummern tatsächlich ausreichen könnte.&lt;/p&gt;</description></item><item><title>Java 26 übernimmt HTTP/3 mit der Weiterentwicklung des HttpClient</title><link>https://javapro.svenruppert.com/java-26-uebernimmt-http-3-mit-der-weiterentwicklung-des-httpclient/</link><pubDate>Mon, 19 Jan 2026 07:00:49 +0000</pubDate><guid>https://javapro.svenruppert.com/java-26-uebernimmt-http-3-mit-der-weiterentwicklung-des-httpclient/</guid><description>&lt;h2 id="die-zukunft-der-kommunikation-zwischen-microservices"&gt;die Zukunft der Kommunikation zwischen Microservices&lt;/h2&gt;
&lt;p&gt;Moderne verteilte Architekturen, wie etwa Microservices, sind eng mit der Weiterentwicklung von Netzwerkprotokollen verknüpft. Da sich Microservice-Architekturen als der vorherrschende Ansatz für den Aufbau skalierbarer und resilienter Anwendungen etabliert haben, ist die Effizienz der Service-zu-Service-Kommunikation zu einem zentralen Anliegen geworden.&lt;/p&gt;
&lt;p&gt;Obwohl HTTP/1.1 und HTTP/2 bedeutende Verbesserungen brachten, wie etwa persistente Verbindungen und Request-Multiplexing, waren sie weiterhin grundsätzlich durch ihre Abhängigkeit von TCP eingeschränkt. In Netzwerken mit hoher Latenz oder Instabilität können diese Einschränkungen nach wie vor zu Leistungseinbußen, erhöhter Tail-Latenz und geringerer Resilienz unter Last führen. Mit JEP 517 führt Java 26 Unterstützung für HTTP/3 im HttpClient ein und ermöglicht damit QUIC-basierte Kommunikation. Sehen wir uns an, was sich mit HTTP/3 ändert.&lt;/p&gt;</description></item><item><title>Adventskalender – 2025 –Persistence – Teil 02</title><link>https://javapro.svenruppert.com/adventskalender-2025-persistence-teil-02/</link><pubDate>Fri, 05 Dec 2025 07:05:13 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-persistence-teil-02/</guid><description>&lt;p&gt;Heute werden wir den StoreIndicator final in die UI integrieren.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der Quelltext für diese Version befindet sich auf GitHub unter &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-02"&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-02&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hier ist der Screenshot der Version, die wir nun implementieren.&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2025/12/image-8.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="vaadin-integration-live-status-des-stores"&gt;&lt;strong&gt;Vaadin-Integration: Live-Status des Stores&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Nachdem die Kommunikation zwischen Client und Server über den AdminClient etabliert wurde, rückt nun die Integration in die Vaadin-Oberfläche in den Mittelpunkt. Das Ziel ist, den aktuellen Systemzustand für den Benutzer sichtbar zu machen, ohne dass eine manuelle Aktualisierung erforderlich ist. Der Mechanismus basiert auf zyklischer Abfrage, Ereignissteuerung und einem reaktiven UI-Konzept, die vollständig in Vaadin implementiert wurden.&lt;/p&gt;</description></item><item><title>Jakarta Data und NoSQL - Standardisierte Datenzugriffe für Jakarta EE</title><link>https://javapro.svenruppert.com/jakarta-data-und-nosql-standardisierte-datenzugriffe-fuer-jakarta-ee/</link><pubDate>Mon, 10 Nov 2025 07:00:12 +0000</pubDate><guid>https://javapro.svenruppert.com/jakarta-data-und-nosql-standardisierte-datenzugriffe-fuer-jakarta-ee/</guid><description>&lt;p&gt;Die Datenmenge, die Anwendungen heutzutage erfassen, wächst rasant. Viele Anwendungen müssen sowohl relationale SQL- als auch nicht-relationale NoSQL-Datenbanken unterstützen. Jakarta Data bietet eine API für einfachen Datenzugriff. Entwickler können den Persistenzmechanismus und das Modell mithilfe gemeinsamer Funktionen wie dem Repository-Muster trennen und nahtlos zwischen SQL- und NoSQL-Datenbanken wechseln oder sogar beide in derselben Anwendung verwenden.&lt;/p&gt;
&lt;h2 id="was-sind-nosql-datenbanken"&gt;Was sind NoSQL-Datenbanken?&lt;/h2&gt;
&lt;p&gt;NoSQL-Datenbanken, auch „Nicht Nur SQL“, „Nicht-Relational“ oder „Nicht-SQL“ genannt, sind eine Art Datenbankverwaltungssystem, bei dem die Speicherung und Abfrage von Daten anders erfolgt als bei herkömmlichen relationalen Datenbanken.&lt;/p&gt;</description></item><item><title>High Speed JPA</title><link>https://javapro.svenruppert.com/high-speed-jpa/</link><pubDate>Mon, 03 Nov 2025 07:01:32 +0000</pubDate><guid>https://javapro.svenruppert.com/high-speed-jpa/</guid><description>&lt;p&gt;JPA, dem Jakarta Persistence API, wird immer wieder nachgesagt „zu langsam für die Praxis“ zu sein. Dennoch steckt sie seit Jahren in unzähligen Projekten – und sorgt dort unauffällig für stabile Unternehmensanwendungen. Sind die Vorwürfe bezüglich der Performance also nur Panikmache? Die Wahrheit liegt irgendwo dazwischen: JPA selbst ist nicht das Problem, aber die Art, wie wir es einsetzen, kann in ein Performance-Desaster führen.&lt;/p&gt;
&lt;p&gt;In diesem Artikel schauen wir uns an, warum grüne Tests trügerisch sein können – und welche einfachen Tricks helfen, JPA von einem vermeintlichen Bremsklotz zu einem zuverlässigen Highspeed-Werkzeug zu machen.&lt;/p&gt;</description></item><item><title>Teste deine Tests: Mutation Testing in Java mit PIT</title><link>https://javapro.svenruppert.com/teste-deine-tests-mutation-testing-in-java-mit-pit/</link><pubDate>Mon, 20 Oct 2025 07:20:49 +0000</pubDate><guid>https://javapro.svenruppert.com/teste-deine-tests-mutation-testing-in-java-mit-pit/</guid><description>&lt;h2 id="mehr-als-nur-code-coverage"&gt;Mehr als nur Code Coverage&lt;/h2&gt;
&lt;p&gt;Automatisierte Tests gehören inzwischen fest zur professionellen Softwareentwicklung. Ob klassisch mit Unit-Tests oder im voll testgetriebenen Workflow (TDD) – Tests sorgen dafür, dass Anwendungen korrekt, wartbar und refaktorierbar bleiben. Die meisten Java Teams messen ihre Testabdeckung mit Tools wie JaCoCo und binden die Metriken in ihre CI/CD-Pipelines ein. Auf den ersten Blick wirkt das ausreichend: Hohe Testabdeckung – also sind wir sicher, oder?&lt;/p&gt;
&lt;p&gt;Leider führt genau diese Annahme oft in eine trügerische Sicherheit. Testabdeckung zeigt nur, dass eine Zeile oder ein Branch beim Testlauf ausgeführt wurde. Sie sagt aber nichts darüber aus, ob der Test auch wirklich das Ergebnis überprüft hat. Eine Zeile Code kann „abgedeckt“ sein, nur weil ein Test zufällig darüberläuft – ohne eine sinnvolle Assertion. Selbst 100 % Branch Coverage garantieren nicht, dass kritische Bedingungen auch korrekt getestet wurden.&lt;/p&gt;</description></item><item><title>Signal per SSE, Daten per REST – eine Vaadin-Demonstration in Core Java</title><link>https://javapro.svenruppert.com/signal-per-sse-daten-per-rest-eine-vaadin-demonstration-in-core-java/</link><pubDate>Wed, 03 Sep 2025 13:10:48 +0000</pubDate><guid>https://javapro.svenruppert.com/signal-per-sse-daten-per-rest-eine-vaadin-demonstration-in-core-java/</guid><description>&lt;h2 id="1-einleitung"&gt;1. Einleitung&lt;/h2&gt;
&lt;h3 id="11-motivation-ereignisgetriebene-aktualisierung-ohne-polling"&gt;1.1 Motivation: Ereignisgetriebene Aktualisierung ohne Polling&lt;/h3&gt;
&lt;p&gt;In klassischen Webanwendungen dominiert nach wie vor das Pull-Prinzip: Clients stellen wiederholt Anfragen an den Server, um Veränderungen zu erkennen. Dieses Polling ist einfach, führt aber zu unnötiger Last auf Server- und Netzwerkseite, insbesondere wenn sich der Datenbestand nur sporadisch ändert. Mit &lt;em&gt;Server-Sent Events (SSE)&lt;/em&gt; steht ein standardisiertes Verfahren zur Verfügung, mit dem der Server Änderungen aktiv an verbundene Clients signalisieren kann. Dadurch lassen sich unnötige Anfragen vermeiden, während Aktualisierungen zeitnah an die Oberfläche gelangen.&lt;/p&gt;</description></item><item><title>Die Blockchain in deiner Java Anwendung</title><link>https://javapro.svenruppert.com/die-blockchain-in-deiner-java-anwendung/</link><pubDate>Mon, 01 Sep 2025 07:01:53 +0000</pubDate><guid>https://javapro.svenruppert.com/die-blockchain-in-deiner-java-anwendung/</guid><description>&lt;h2 id="kurzes-vorwort"&gt;kurzes Vorwort&lt;/h2&gt;
&lt;p&gt;Dieser Artikel befasst mit der Integration von Blockchain Mechanismen in Java Anwendungen. Hierbei befassen wir uns nicht mit Preisen oder insgesamt einzelnen Kryptowährungen, dies ist mir wichtig zu Beginn zu erwähnen. Im Verlaufe des Artikels nenne ich Blockchain Netzwerke, sodass ich klarstellen möchte, es handelt sich hierbei ausdrücklich nicht um Anlageberatung oder Werbung für diese Netzwerke und deren Kryptowährungen. Es handelt sich um eine technische Erklärung der Integration von Blockchain in Java mit Web3j.&lt;/p&gt;</description></item><item><title>MockServer NeoLight: Eine schlanke Alternative für API-Tests mit Testcontainers</title><link>https://javapro.svenruppert.com/mockserver-neolight-eine-schlanke-alternative-fuer-api-tests-mit-testcontainers/</link><pubDate>Fri, 29 Aug 2025 13:22:36 +0000</pubDate><guid>https://javapro.svenruppert.com/mockserver-neolight-eine-schlanke-alternative-fuer-api-tests-mit-testcontainers/</guid><description>&lt;p&gt;Das Open-Source-Projekt &lt;a href="https://github.com/xdev-software/mockserver-neolight"&gt;MockServer NeoLight&lt;/a&gt; wurde als leichtgewichtige Neufassung des ursprünglichen &lt;a href="https://github.com/mock-server/mockserver"&gt;MockServer&lt;/a&gt; veröffentlicht. Der Schwerpunkt liegt auf &lt;strong&gt;Einfachheit&lt;/strong&gt;, &lt;strong&gt;Wartbarkeit&lt;/strong&gt; und der nahtlosen Integration mit &lt;a href="https://java.testcontainers.org/"&gt;&lt;strong&gt;Testcontainers&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Das MockServer-Konzept ermöglicht es Entwicklern, HTTP- und HTTPS-Anfragen zu &lt;strong&gt;mocken und damit APIs für Testzwecke zu simulieren&lt;/strong&gt;. Durch das Festlegen von Erwartungen an eingehende Anfragen und definierten Antworten lassen sich kontrollierte Umgebungen für Integrationstests schaffen. Dadurch wird das zu testende System von realen externen Abhängigkeiten isoliert, was zu vorhersehbaren und wiederholbaren Ergebnissen führt.&lt;/p&gt;</description></item><item><title>Testcontainer Tests in Lichtgeschwindigkeit: Tests schneller und flexibler gestalten</title><link>https://javapro.svenruppert.com/testcontainer-tests-in-lichtgeschwindigkeit-tests-schneller-und-flexibler-gestalten/</link><pubDate>Fri, 29 Aug 2025 12:53:22 +0000</pubDate><guid>https://javapro.svenruppert.com/testcontainer-tests-in-lichtgeschwindigkeit-tests-schneller-und-flexibler-gestalten/</guid><description>&lt;p&gt;Testcontainers ist in vielen Java-Projekten zu einem unverzichtbaren Werkzeug geworden, um Integrations- und Systemtests in realistischen Umgebungen durchzuführen. Wenn Testszenarien jedoch komplexer werden, stoßen Entwickler oft an Grenzen – insbesondere in Bezug auf Konfiguration, Parallelisierung und Ressourcennutzung. Ein auf Testcontainers aufbauendes Open-Source-Framework begegnet einigen dieser Herausforderungen mit leistungsstarken Erweiterungen.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/xdev-software/tci-base"&gt;&lt;strong&gt;Testcontainers Infrastructure (TCI)&lt;/strong&gt; Framework&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="1-verbesserte-anpassbarkeit-und-parallelisierung"&gt;&lt;strong&gt;1. Verbesserte Anpassbarkeit und Parallelisierung&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Durch die Verwendung des Factory Patterns bei der Erstellung von Container wird es für den Entwickler einfacher, die Container nach Bedarf anzupassen:&lt;/p&gt;</description></item><item><title>Wie man den Milliarden-Dollar-Fehler repariert</title><link>https://javapro.svenruppert.com/wie-man-den-milliarden-dollar-fehler-repariert/</link><pubDate>Mon, 25 Aug 2025 07:00:45 +0000</pubDate><guid>https://javapro.svenruppert.com/wie-man-den-milliarden-dollar-fehler-repariert/</guid><description>&lt;p&gt;Es gibt Fehler, die sind einfach nur teuer. Und dann gibt es die Nullreferenz. Ein Sprachfeature, das 1965 eingeführt wurde – „einfach, weil es so leicht zu implementieren war“. Seitdem hat die Nullreferenz unzählige Bugs, Systemabstürze und Sicherheitsprobleme hervorgerufen – und Milliarden an Kosten für Wartung und Fehlersuche verursacht. In vielen modernen Programmiersprachen wurde die Referenz daher bereits eliminiert. Dieser Artikel zeigt praktische Wege, wie sich dieser Sprachfehler auch in Java vermeiden lässt.&lt;/p&gt;</description></item><item><title>Java verbindet seit 30 Jahren Systeme und Communities</title><link>https://javapro.svenruppert.com/java-verbindet-seit-30-jahren-systeme-und-communities/</link><pubDate>Mon, 18 Aug 2025 07:06:45 +0000</pubDate><guid>https://javapro.svenruppert.com/java-verbindet-seit-30-jahren-systeme-und-communities/</guid><description>&lt;p&gt;&lt;em&gt;Von der Erfüllung des Slogans „The Network is the Computer“ über den Java EE-Standard bis hin zur Unterstützung von SOAP- und REST-Webdiensten bis hin zur Schaffung eines starken Ökosystems und Communities, die Microservices und Cloud-native Anwendungen unterstützen, die ohne den Schwerpunkt auf APIs nicht möglich sind. Java ist seit seiner Einführung mit dem Internet verflochten und unterstützt bestehende sowie eigene herstellerneutrale Standards und De-facto-Standards, die aktuelle Herausforderungen widerspiegeln, wie etwa MicroProfile oder die Unterstützung der Integration mit KI.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Ist Java Cloud-nativ?</title><link>https://javapro.svenruppert.com/ist-java-cloud-nativ/</link><pubDate>Mon, 14 Jul 2025 07:00:00 +0000</pubDate><guid>https://javapro.svenruppert.com/ist-java-cloud-nativ/</guid><description>&lt;p&gt;2025 feiert Java sein 30-jähriges Bestehen und erfreut sich nach wie vor großer Beliebtheit. Dank der hervorragenden Abwärtskompatibilität, der engagierten Community sowie der Vielzahl an Tools und Lösungen zur Erleichterung der Entwicklung mit Java bleibt die Plattform die bevorzugte Wahl für Unternehmensanwendungen.&lt;/p&gt;
&lt;p&gt;Wenn es allerdings um Cloud-native Programmiersprachen geht, zeichnen sich Go, JavaScript, Ruby, Kotlin oder Rust durch ihre besonders hohe Geschwindigkeit und Effizienz sowie Benutzerfreundlichkeit aus – Eigenschaften, die sie zur bevorzugten Wahl für neue Projekte machen. Auch WebAssembly (Wasm) wird bei der Webentwicklung immer beliebter. Die Fähigkeit von Java zur Erstellung Cloud-nativer Programme wird allerdings oft mit Vorsicht genossen.&lt;/p&gt;</description></item><item><title>Eine visuelle Zeitreise durch die Entwicklung des JDK</title><link>https://javapro.svenruppert.com/eine-visuelle-zeitreise-durch-die-entwicklung-des-jdk/</link><pubDate>Mon, 16 Jun 2025 07:01:14 +0000</pubDate><guid>https://javapro.svenruppert.com/eine-visuelle-zeitreise-durch-die-entwicklung-des-jdk/</guid><description>&lt;p&gt;Das Java Development Kit (JDK) hat seit seiner Entstehung erhebliche Veränderungen durchlaufen. Von den Anfängen unter dem Motto &amp;ldquo;Write once, run everywhere&amp;rdquo;, über die Applet-Kriege, die erste Veröffentlichung des OpenJDK bis hin zum neuen Release-Zyklus, der uns mittlerweile seit acht Jahren begleitet – in 30 Jahren ist viel passiert.&lt;/p&gt;
&lt;p&gt;Der Großteil dieser Reise ist – zumindest aus heutiger Sicht – eher trocken dokumentiert: in Textform. Dort steht, wie viele Features hinzugefügt, geändert oder (ganz selten) entfernt wurden.&lt;/p&gt;</description></item><item><title>Nachhaltige Softwareentwicklung in Java – Native Builds und serverlose Deployments auf Kubernetes</title><link>https://javapro.svenruppert.com/nachhaltige-softwareentwicklung-in-java-native-builds-und-serverlose-deployments-auf-kubernetes/</link><pubDate>Mon, 02 Jun 2025 07:03:34 +0000</pubDate><guid>https://javapro.svenruppert.com/nachhaltige-softwareentwicklung-in-java-native-builds-und-serverlose-deployments-auf-kubernetes/</guid><description>&lt;p&gt;&lt;strong&gt;Rechenzentrums-Migration - Im IT-Umfeld, insbesondere in großen Unternehmen, ist der Begriff &lt;em&gt;Rechenzentrums-Migration&lt;/em&gt; (Data Center Migration) weit verbreitet. In vielen Fällen liegen bereits praktische Erfahrungen mit der Migration in die Cloud vor. Solche Projekte wurden schon lange realisiert, noch bevor der Begriff &lt;em&gt;Cloud-Rechenzentrum&lt;/em&gt; überhaupt geprägt wurde.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Kosteneinsparungen sind für die meisten Entscheidungsträger das Hauptmotiv. Doch es gibt noch einen weiteren entscheidenden Faktor — Nachhaltigkeit. Rechenzentren verbrauchen enorme Mengen an Strom. Im Jahr 2022 wurde ihr weltweiter Energieverbrauch auf 415 TWh geschätzt — nahezu so viel wie der gesamte Stromverbrauch Frankreichs (426 TWh). Und das war noch vor dem durch KI-Tools wie ChatGPT ausgelösten Boom. Der Verbrauch wird in Zukunft voraussichtlich weiter steigen.&lt;/p&gt;</description></item><item><title>Von Reactive Streams zu Virtual Threads</title><link>https://javapro.svenruppert.com/von-reactive-streams-zu-virtual-threads/</link><pubDate>Mon, 12 May 2025 07:01:28 +0000</pubDate><guid>https://javapro.svenruppert.com/von-reactive-streams-zu-virtual-threads/</guid><description>&lt;p&gt;Virtual Threads bieten eine schnelle und ressourcenschonende Threading-Lösung für die JVM – sowohl im Hinblick auf Speicherverbrauch als auch auf Umschaltgeschwindigkeit. Sie versprechen die Rückkehr zu einem direkten, synchronen Programmiermodell. Doch reicht das aus, um den Status quo im Bereich Daten-Streaming infrage zu stellen? Können wir das Beste aus beiden Welten haben: die Einfachheit, die Virtual Threads versprechen, und gleichzeitig die Robustheit und Sicherheit von Reactive Streams? Finden wir es heraus!&lt;/p&gt;</description></item><item><title>Vektor-Embedding in Java-Anwendungen: Gen-AI-Funktionen direkt aus der Datenbank</title><link>https://javapro.svenruppert.com/vektor-embedding-in-java-anwendungen-genai-funktionen-direkt-aus-der-datenbank/</link><pubDate>Tue, 06 May 2025 12:01:21 +0000</pubDate><guid>https://javapro.svenruppert.com/vektor-embedding-in-java-anwendungen-genai-funktionen-direkt-aus-der-datenbank/</guid><description>&lt;p&gt;Generative KI (GenAI) hat sich in den vergangenen Jahren rasant weiterentwickelt und findet zunehmend Einzug in die praktische Softwareentwicklung. Was früher als Forschungsfeld galt, wird heute zum Werkzeug für den Entwickleralltag – auch im Java-Umfeld. Eine Schlüsselrolle spielen dabei Vektor-Embeddings: Sie ermöglichen Funktionen wie semantische Suche, Textklassifikation oder Empfehlungssysteme und eröffnen damit völlig neue Anwendungsmöglichkeiten.&lt;/p&gt;
&lt;p&gt;Doch wie lassen sich diese Technologien in bestehende Java-Anwendungen einbinden, ohne dass komplexe Frameworks oder externe Cloud-Dienste notwendig werden?&lt;/p&gt;</description></item><item><title>Überwinde 20 Jahre mit Migration Engineering</title><link>https://javapro.svenruppert.com/ueberwinde-20-jahre-mit-migration-engineering/</link><pubDate>Mon, 28 Apr 2025 07:14:31 +0000</pubDate><guid>https://javapro.svenruppert.com/ueberwinde-20-jahre-mit-migration-engineering/</guid><description>Java hat sich in den letzten 30 Jahren stark gewandelt. Viele Organisationen haben Probleme mitzuhalten, Migration Engineering hilft hier.</description></item><item><title>Entwicklung von KI-Anwendungen mit Spring AI</title><link>https://javapro.svenruppert.com/entwicklung-von-ki-anwendungen-mit-spring-ai/</link><pubDate>Wed, 16 Apr 2025 07:01:07 +0000</pubDate><guid>https://javapro.svenruppert.com/entwicklung-von-ki-anwendungen-mit-spring-ai/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=PEDJ_8TXMSU&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=13"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2025/04/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Künstliche Intelligenz (KI) wird für moderne Anwendungen immer wichtiger. Während KI unterschiedliche Technologien umfasst, ist der Fokus derzeit aufgrund der jüngsten Fortschritte bei großen Sprachmodellen (LLMs) auf Generative KI (GenAI).&lt;br&gt;
&lt;br&gt;
Traditionell ist Python die dominierende Sprache für KI. Doch für Java-Entwickler, die Generative KI nutzen möchten, bietet das Spring AI Projekt eine attraktive Alternative. Es vereinfacht die Entwicklung von KI-gestützten Enterprise-Anwendungen erheblich und ermöglicht es, so mit der rasant fortschreitenden KI-Landschaft Schritt zu halten.&lt;br&gt;
&lt;br&gt;
Spring AI abstrahiert komplexe Interaktionen mit verschiedenen KI-Anbietern, die REST APIs bereitstellen, darunter OpenAI, Anthropic, Microsoft, Google, Amazon und sogar lokalen LLMs. Durch diese Abstraktionen ist ein einfacher Wechsel zwischen verschiedenen Modellen möglich, gleichzeitig ist aber, wie in Spring üblich, gewährleistet, auf spezifische Funktionen und Konfigurationen einzelner Modelle zugreifen zu können.&lt;br&gt;
&lt;br&gt;
Das Framework bietet eine Vielzahl an Funktionen, wie die Konvertierung von Modellausgaben in Java Objekte, Multimodalität, KI-bezogene Observability und Testunterstützung zur Bewertung von Modellausgaben, bereit.&lt;br&gt;
&lt;br&gt;
Darüber hinaus unterstützt Spring AI fortgeschrittene Techniken wie Tool Calling, Retrieval-Augmented Generation (RAG) und das Model Context Protocol (MCP), um den Kontext von LLMs anzureichern.&lt;br&gt;
&lt;br&gt;
Spring AI baut auf den Kernfunktionalitäten des Spring Frameworks und weiteren Spring Projekten wie Spring Data zur Integration von Vektor-Datenbanken auf. Durch die automatische Konfiguration von Spring Boot, wird die Entwicklung von KI-gestützten Funktionen erheblich vereinfacht und beschleunigt.\&lt;/p&gt;</description></item><item><title>Die Kunst der statischen Codeanalyse</title><link>https://javapro.svenruppert.com/die-kunst-der-statischen-codeanalyse/</link><pubDate>Tue, 04 Feb 2025 22:49:43 +0000</pubDate><guid>https://javapro.svenruppert.com/die-kunst-der-statischen-codeanalyse/</guid><description>&lt;p&gt;Die meisten Java-Entwickler (und nicht nur) haben zumindest eine Art statisches Analysetool verwendet, um eine Aufgabe wie (um nur einige zu nennen) auszuführen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ableiten von Quellcodemetriken wie Codezeilen oder zyklomatische Komplexität;&lt;/li&gt;
&lt;li&gt;Entdecken von Fehlern, Schwachstellen oder Code-Smells wie ungenutzten Variablen (was beliebte IDEs typischerweise tun);&lt;/li&gt;
&lt;li&gt;Durchführen eines automatisierten Refactorings oder einer Code-Vervollständigung;&lt;/li&gt;
&lt;li&gt;Durchsetzung von Code- und Qualitätsstandards.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Um eine statische Codeanalyse durchzuführen, benötigen wir normalerweise eine geeignete Darstellung des Quellcodes, die für die Analyse geeignet ist. Eine Programmiersprache kann durch eine formale Grammatik beschrieben werden. Darüber hinaus kann ein Parser erstellt oder generiert werden, indem man den Regeln einer formalen Grammatik folgt, um aus dem Quellcode eine ordnungsgemäße Darstellung (normalerweise einen Analysebaum) zu erstellen. Abhängig von der Art der Sprache, die wir darstellen möchten, können wir unterschiedliche Arten formaler Grammatiken verwenden:&lt;/p&gt;</description></item><item><title>Bewährte Praktiken für APIs</title><link>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-apis/</link><pubDate>Wed, 27 Jul 2022 10:17:43 +0000</pubDate><guid>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-apis/</guid><description>Das Tor zum Himmel. Alle oben genannten Mechanismen sind langwierig zu implementieren und zu warten. Anstatt das Rad neu zu erfinden, sollten Sie sich für eine ausgereifte und leistungsstarke API-Verwaltungslösung mit all diesen Optionen entscheiden, um Geld, Zeit und Ressourcen zu sparen und Ihre Markteinführungszeit zu verkürzen. Ein API-Gateway hilft Ihnen, Ihren Datenverkehr zu sichern, zu kon</description></item><item><title>Ein Ansatz für Cloud-Transformation und Cloud-Migration - erster Teil</title><link>https://javapro.svenruppert.com/ein-ansatz-fuer-cloud-transformation-und-cloud-migration-erster-teil/</link><pubDate>Fri, 24 Jun 2022 18:07:31 +0000</pubDate><guid>https://javapro.svenruppert.com/ein-ansatz-fuer-cloud-transformation-und-cloud-migration-erster-teil/</guid><description>Die anhaltende COVID 19-Pandemie stellt fast alle Branchen vor neue Herausforderungen. Sie hat erhebliche Auswirkungen auf Geschäfts- und Betriebsmodelle. Unternehmen denken darüber nach, wie sie ihr Geschäft für solch große Störungen robuster gestalten können, wie sie schneller Neurungen einbringen und ihren Kunden neue Dienstleistungen anbieten können, wie sie die Gesamtbetriebskosten senken kön</description></item><item><title>Builder-Pattern auf Steroiden</title><link>https://javapro.svenruppert.com/builder-pattern-auf-steroiden/</link><pubDate>Tue, 23 Mar 2021 11:45:20 +0000</pubDate><guid>https://javapro.svenruppert.com/builder-pattern-auf-steroiden/</guid><description>&lt;p&gt;&lt;strong&gt;Das Buch der GangOfFour gehört bei so ziemlich jedem Ausbildungszweig der Informatik mit zu der Grundlagenlektüre. Dort werden die Basispattern beschrieben und gruppiert, so dass man einen guten Start in das Thema DesignPattern bekommt. Aber wie sieht es dann später in der Verwendung aus? Hier werden wir das eine oder andere Pattern genauer unter die Lupe nehmen und erweitern.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Das Builder-Pattern erfreut sich derzeitig immer größerer Beliebtheit, ermöglicht es einem doch die Konstruktion eines fluent-API. Angenehm ist es ebenfalls, dass eine IDE dieses Pattern recht einfach generieren kann. Dem Einsatz steht nun also nichts mehr im Wege, aber&amp;hellip; Wie sieht es mit der Verwendung im täglichen Leben aus?&lt;/p&gt;</description></item><item><title>Helidon</title><link>https://javapro.svenruppert.com/helidon/</link><pubDate>Wed, 20 Jan 2021 15:15:16 +0000</pubDate><guid>https://javapro.svenruppert.com/helidon/</guid><description>&lt;p&gt;&lt;strong&gt;Helidon ist ein Framework für die Entwicklung von Microservices. Helidon ist schnell, leichtgewichtig und einfach zu bedienen. Es kombiniert die Portabilität von Microprofile mit der Leistungsfähigkeit reaktiver APIs und möchte dabei völlig neue Maßstäbe bei der Erstellung von Microservices setzen.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://helidon.io/#/"&gt;Helidon&lt;/a&gt; stammt aus dem Griechischen und bedeutet Schwalbe. Sie ist ein Vogel aus der Gattung der Sperlingsvögel mit langen, scharfen Flügeln und dem charakteristischen Doppelschwanz. Der Flug und die Anmut dieser Vögel ist bewundernswert. Die Art und Weise, wie sie in Schwärmen leben, erinnert ein wenig an die Welt der Microservices.&lt;/p&gt;</description></item><item><title>Bessere Java-Desktop Deployments</title><link>https://javapro.svenruppert.com/bessere-java-desktop-deployments/</link><pubDate>Wed, 23 Dec 2020 10:18:55 +0000</pubDate><guid>https://javapro.svenruppert.com/bessere-java-desktop-deployments/</guid><description>&lt;p&gt;**Durch gravierende Änderungen bei den Java-Versionen ab Java 9, hat sich vor allem die Entwicklung klassischer Java-Desktop-Anwendungen stark verändert. Die Problematik ist sehr vielschichtig. Doch mit Java-Version-14 gibt es jetzt endlich anwenderfreundliche Lösungen für die Auslieferung von Java-Desktop-Applikationen.   **&lt;/p&gt;
&lt;p&gt;Im Jahr 2014 war die Java-Welt noch in Ordnung. Drei Jahre zuvor kam nach langer Zeit mit Java 7 endlich wieder eine neue Version. Dann wurde mit Java 8 eine Version mit vorher nie dagewesenen Neuerungen vorgestellt. Lambdas und Streams sollten die Art wie wir Java programmieren für immer verändern. Java 9 führte im Jahr 2017 ein Modulsystem mit dem Codenamen Jigsaw ein. Dieses Modulsystem war sehr umstritten und führte dazu, dass der Release verschoben werden musste. Dieses Modulsystem ist wohl der Grund dafür, warum viele Entwickler sich geweigert haben auf Version 9 umzusteigen. Java 9 war gleichzeitig auch der Startschuss für eine neue Release-Strategie von Oracle. Von nun an sollte jedes halbe Jahr eine neue Hauptversion erscheinen. Und mit jeder neuen Version wurden weitere starke Einschnitte in das Java-System vorgenommen, so dass sich in relativ kurzer Zeit sehr viele Änderungen ergaben, die mit der Abwärtskompatibilität gebrochen haben.&lt;/p&gt;</description></item><item><title>JSR-385 hätte Mars Orbiter retten können</title><link>https://javapro.svenruppert.com/jsr-385-haette-mars-orbiter-retten-koennen/</link><pubDate>Tue, 22 Dec 2020 14:18:40 +0000</pubDate><guid>https://javapro.svenruppert.com/jsr-385-haette-mars-orbiter-retten-koennen/</guid><description>&lt;p&gt;&lt;strong&gt;1999 verlor die NASA den Mars-Climate-Orbiter im Wert von 125 Millionen US-Dollar, als er in die Umlaufbahn eintrat. Aufgrund einer Diskrepanz zwischen US-Customary und SI-Maßeinheiten in unterschiedlichen Teilsystemen kam das Raumschiff dem Planeten zu nahe, passierte die obere Atmosphäre und zerfiel. Dies war nicht der einzige Fall, in dem eine fehlerhafte Umrechnung zwischen Maßeinheiten katastrophale Folgen hatte, aber es war sicherlich einer der spektakulärsten und kostspieligsten.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="immer-wieder-unglücksfälle-wegen-rechenfehler"&gt;Immer wieder Unglücksfälle wegen Rechenfehler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Patriot Missile: Hier war die Ursache eine ungenaue Berechnung der Zeit, die seit dem Start verstrichen ist, auf Grund von Arithmetik-Fehler im Computersystem.&lt;/li&gt;
&lt;li&gt;Ariane 5 Explosion: Es wurde eine Fließkommazahl umgewandelt, welche danach einen größeren Wert hatte, als durch den verfügbaren 16-Bit-signed Integer-Wert speicherbar gewesen ist.&lt;/li&gt;
&lt;li&gt;Beinahe Absturz einer US-Verkehrsmaschine auf dem Flug zwischen den USA und Kanada, in der Gegend der Großen Seen und Großraum Chicago. Hier wurden beim Betanken der Maschine die Volumeneinheiten US-Gallone und Britischer Gallone für Flüssigkeit und Treibstoffe verwechselt, was die tatsächlich verfügbare Menge an Kerosin erheblich reduzierte und dazu führte, dass die Maschine in der Warteschleife beim Landeanflug ohne ausreichend Treibstoff endete.&lt;/li&gt;
&lt;li&gt;Zahlreiche manchmal auch tödliche Fehldosierungen von Medikamenten.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das Maß einer körperlichen Quantität ist der Prozess des Schätzens des Verhältnisses seiner Größe zu einer anderen Quantität der gleichen Art, die wir als Einheit gegeben annehmen. Zum Beispiel 5 Meter ist eine Schätzung der Länge eines Gegenstandes im Verhältnis zu einer anderen Länge - das Messinstrument, das wir in diesem Beispielfall als die Standardmaßeinheit der Länge annehmen. Eine ähnliche Annäherung kann für finanzielle Quantitäten angenommen werden und voraussetzen, dass eine Währungseinheit richtig und allgemein gültig definiert wird.&lt;/p&gt;</description></item><item><title>Kafka-Connect - Drittsysteme an Kafka anbinden</title><link>https://javapro.svenruppert.com/kafka-connect-drittsysteme-an-kafka-anbinden/</link><pubDate>Tue, 22 Dec 2020 11:18:21 +0000</pubDate><guid>https://javapro.svenruppert.com/kafka-connect-drittsysteme-an-kafka-anbinden/</guid><description>&lt;p&gt;**Kafka ist eine verteilte Streaming-Plattform die verschiedene Nutzungsszenarien unterstützt. Sie kann als Messaging- oder Speichersystem eingesetzt werden und Datenströme transformieren. Dieser Artikel beschreibt, wie Sie mit Kafka-Connect Drittsysteme wie Redis an Kafka anbinden können.  **&lt;/p&gt;
&lt;p&gt;Kafka bietet eine flexible Grundlage, um darauf komplexe Datenverarbeitungsarchitekturen zu bauen. Eine wichtige Frage bei diesen Architekturen ist, wie die Daten in die Plattform gelangen und wie sie diese wieder verlassen. Hier kommt Kafka-Connect ins Spiel, ebenfalls eine quelloffene Komponente von Kafka. Kafka-Connect ist ein Framework mit dem man externe Systeme, wie zum Beispiel Datenbanken, Key-Value-Speicher, Suchindizes oder Dateisysteme an Kafka anschließen kann. Für Kafka-Connect gibt es bereits zahlreiche vorgefertigte Konnektoren, wie zum Beispiel für Splunk oder &lt;a href="https://bit.ly/kafka-k1"&gt;Elasticsearch&lt;/a&gt;¹. Diese Konnektoren teilen sich in zwei Gruppen auf: Sources und Sinks -also Quellen und Senken. Quellkonnektoren können zum Beispiel ganze Datenbanken auslesen und Änderungen in der Datenbank dann in Kafka-Topics veröffentlichen. Ein anderer Anwendungsfall ist das Sammeln von Metriken von Microservices, um sie dann dem Stream-Processing mit geringer Latenz zur Verfügung zu stellen und sie dann auswerten zu können. Sinks bringen die Daten aus den Kafka-Topics dann zum Beispiel in Suchindizes wie Elasticsearch oder in Batch-Systeme wie Hadoop, zur späteren Offline-Verarbeitung.&lt;/p&gt;</description></item><item><title>Vernetzte Systeme mit FEPCOS-J</title><link>https://javapro.svenruppert.com/vernetzte-systeme-mit-fepcos-j/</link><pubDate>Mon, 21 Dec 2020 09:17:49 +0000</pubDate><guid>https://javapro.svenruppert.com/vernetzte-systeme-mit-fepcos-j/</guid><description>&lt;p&gt;&lt;strong&gt;FEPCOS-J ist ein Programmiergerüst für Java, das die Entwicklung von zusammengesetzten, vernetzten Systemen, wie zum Beispiel Roboterschwärme, beschleunigt, indem es die benötigte Netzwerkprogrammierung automatisiert und die Spezifikation von Nebenläufigkeit vereinfacht. In diesem Artikel werden die Grundlagen und, mit einem einfachen Beispiel, die Anwendung von FEPCOS-J vorgestellt.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;„Das Ganze ist mehr als die Summe seiner Teile.“ Aristoteles (384 v.Chr. - 322 v.Chr.). Dieses Prinzip ist auf ein vernetztes, technisches System, das aus Teilsystemen zusammengesetzt ist, übertragbar. Zum Beispiel ist bei einem Roboterschwarm der Schwarm das Ganze und die Roboter sind die Teile. Jeder Roboter kann für sich fahren. Der Schwarm kann mehr. Er kann zum Beispiel ausschwärmen, indem die einzelnen Roboter in verschiedene Richtungen fahren. Dies ist ein möglicher Mehrwert. Allerdings bekommt man diesen nicht geschenkt. Bei der Entwicklung eines vernetzten, technischen Systems, das ein aus Teilen zusammengesetztes Ganzes ist, ist mehr zu beachten als bei einem einzelnen System. Die Programmierung derartiger Systeme umfasst Netzwerkkommunikation und systemübergreifende Nebenläufigkeit, da die Teile kommunizieren und hochgradig parallel arbeiten. Dies ist ein Mehraufwand.&lt;/p&gt;</description></item><item><title>MicroStream 4 – High-Performance Java-Native Persistence</title><link>https://javapro.svenruppert.com/microstream-4-high-performance-java-native-persistence/</link><pubDate>Fri, 18 Dec 2020 10:17:15 +0000</pubDate><guid>https://javapro.svenruppert.com/microstream-4-high-performance-java-native-persistence/</guid><description>&lt;p&gt;&lt;strong&gt;Native Anwendungen mit Java. Java-Services so schnell wie C. Startzeiten in Millisekunden und minimaler Memory-Footprint. Auf Basis von GraalVM entsteht ein neuer Java-Stack für moderne Cloud-Native-Applikationen, der Java auf ein völlig neues Level bringt. Mit MicroStream kommt jetzt eine hoch performante und gleichzeitig leichtgewichtige Persistence dazu die mit bis zu 1000 Mal schnelleren Datenbankzugriffen eine extrem hohe Performance bietet.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mit GraalVM, Quarkus und leichtgewichtigen Microservice-Frameworks wie Micronaut und Helidon dringt Java in neue Dimensionen vor. Java-Anwendungen so schnell wie C-Programme, Startzeiten in Millisekunden, mit all den Stärken von Java – das klingt beeindruckend. Das ist der neue Java-Cloud-Native-Stack mit GraalVM im Kern. Er wird von Oracle stark vorangetrieben,, das von Oracle stark vorangetrieben wird um Java fit zu machen für die Entwicklung moderner, hoch performanter und resourcensparender Applikationen und Services für die Cloud. Das einzige was diesem Stack noch fehlt, ist eine ebenso leistungsfähige wie leichtgewichtige Persistence. Genau dafür wurde MicroStream entwickelt – seit kurzem in Version 4 mit bedeutenden Neuerungen verfügbar. Genau dafür wurde MicroStream entwickelt, das seit kurzem in Version 4 verfügbar ist und bedeutende Neuerungen mit sich bringt.&lt;/p&gt;</description></item><item><title>Boilerplate-Code minimieren mit Lombok</title><link>https://javapro.svenruppert.com/boilerplate-code-minimieren-mit-lombok/</link><pubDate>Wed, 02 Dec 2020 14:04:34 +0000</pubDate><guid>https://javapro.svenruppert.com/boilerplate-code-minimieren-mit-lombok/</guid><description>&lt;p&gt;Projekt Lombok versteckt auf elegante Weise sogenannten Boilerplate-Code. Getter, Setter und all das, was Entwickler im Leben ungefähr 2 Millionen Mal per IDE generieren – all das soll mit Lombok wegfallen. Ist die Einstiegshürde erst einmal überwunden, funktioniert das wirklich.&lt;/p&gt;
&lt;p&gt;Wer erinnert sich eigentlich noch an die vielen Java-Enterprise-Beans der Version 1 oder 2, die unsäglichen Schmerzen, die einem damals bei professioneller Entwicklung widerfahren sind und die große Erleichterung die schließlich mit POJOs kam. Plain-Old-Java-Objects: Endlich testbarer Code! Code, den man auch verstehen konnte. Es gab nur zwei Regeln die man akzeptieren musste:&lt;/p&gt;</description></item><item><title>Keycloak individuell erweitern</title><link>https://javapro.svenruppert.com/keycloak-individuell-erweitern/</link><pubDate>Thu, 19 Nov 2020 15:01:45 +0000</pubDate><guid>https://javapro.svenruppert.com/keycloak-individuell-erweitern/</guid><description>&lt;p&gt;&lt;strong&gt;Die Identity- und Access-Management-Lösung Keycloak erfreut sich in den letzten Jahren weiter Verbreitung. Trotz vieler Funktionen sind in der Praxis häufig individuelle Anpassungen erforderlich. Wie kann man solche Erweiterung vornehmen - von der Bereitstellung eines eigenen Moduls, über die Registrierung eines Providers bis hin zu Aspekten wie Logging und Konfiguration?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Keycloak ist eine Open-Source Identity- und Accessmanagement-Lösung. Für individuelle Erweiterungen stehen in Keycloak eine Reihe von Erweiterungspunkten, sogenannte Service-Provider-Interfaces (SPI) zur Verfügung, um vorhandene Funktionalität auszutauschen oder an die eigenen Bedürfnisse anzupassen.&lt;/p&gt;</description></item><item><title>Prototyping spart Zeit und Kosten</title><link>https://javapro.svenruppert.com/prototyping-spart-zeit-und-kosten/</link><pubDate>Thu, 09 Jul 2020 16:51:10 +0000</pubDate><guid>https://javapro.svenruppert.com/prototyping-spart-zeit-und-kosten/</guid><description>&lt;p&gt;&lt;strong&gt;Heute muss Software zügig entwickelt und produktiv gesetzt werden (Time-to-Market). Dabei kann &lt;a href="https://de.wikipedia.org/wiki/Prototyping_(Softwareentwicklung)"&gt;Prototyping&lt;/a&gt; helfen, die Effizienz im Entwicklungsprozess zu verbessern. Allerdings gilt es sorgfältig zu überlegen, welche Prototyping-Methode zum eigenen Projekt passt.&lt;/strong&gt; Softwareentwicklung ist eine sehr dynamische Disziplin, in der sich die Anforderungen schnell ändern. Häufig entwickelt die Auftraggeberseite eine Reihe von Anforderungen oder &lt;a href="https://de.wikipedia.org/wiki/User_Story"&gt;User-Stories&lt;/a&gt;, obwohl sie das entsprechende Resultat nicht genau einschätzen kann. Das Entwicklerteam macht sich Gedanken und arbeitet an einem repräsentablen Stakeholder. Wenn dieser jedoch hinter den Erwartungen zurückbleibt, weil die Anlage zur Visualisierung anfänglicher Anforderungen fehlt, kann es passieren, dass so ein Projekt komplett neu auf die Spur gesetzt werden muss. Das führt im Ergebnis zu einem erhöhten Budgetbedarf für die Produktentwicklung. Um den Ablauf und dementsprechend das Budget zu optimieren, können verschiedene Ansätze verfolgt werden: &lt;a href="https://de.wikipedia.org/wiki/Proof_of_Concept"&gt;Proof-of-Concept&lt;/a&gt;, Wireframes, Funktionales Prototyping, &lt;a href="https://de.wikipedia.org/wiki/Minimum_Viable_Product" title="MVP (Minimum Viable Product)"&gt;MVP (Minimum Viable Product)&lt;/a&gt; oder ein Pilotprojekt. Dieser Artikel konzentriert sich auf das &lt;a href="https://de.wikipedia.org/wiki/Prototyping_(Softwareentwicklung)"&gt;Prototyping&lt;/a&gt;:&lt;/p&gt;</description></item></channel></rss>