<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>General on JAVAPRO Germany</title><link>https://javapro.svenruppert.com/categories/general/</link><description>Recent content in General on JAVAPRO Germany</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Mon, 09 Mar 2026 07:03:25 +0000</lastBuildDate><atom:link href="https://javapro.svenruppert.com/categories/general/index.xml" rel="self" type="application/rss+xml"/><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>Adventskalender - 2025 - Vom Beobachter zum Gestalter: Benutzerkontrolle in der Übersicht - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-vom-beobachter-zum-gestalter-benutzerkontrolle-in-der-uebersicht-teil-2/</link><pubDate>Tue, 09 Dec 2025 07:06:00 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-vom-beobachter-zum-gestalter-benutzerkontrolle-in-der-uebersicht-teil-2/</guid><description>&lt;p&gt;Die serverseitige Erweiterung für die dynamische Spaltensichtbarkeit folgt derselben gestalterischen Logik wie die UI: Einfachheit, klare Zuständigkeit und ein präziser Datenfluss. Während die OverviewView und der ColumnVisibilityDialog die Oberfläche für die Interaktion bilden, übernehmen mehrere spezialisierte REST-Handler die Verarbeitung und Persistenz der Benutzereinstellungen. Ihre Aufgabe besteht darin, eingehende JSON-Anfragen zu verarbeiten, zu validieren, in Domänenoperationen zu übersetzen und den aktuellen Zustand zurückzugeben oder zu speichern.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der&lt;br&gt;
Quelltext für diese Version befindet sich auf GitHub unter&lt;/strong&gt; &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-04"&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-04&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Testen mit Java – die vielfältige Welt der Test-Frameworks</title><link>https://javapro.svenruppert.com/testen-mit-java-die-vielfaeltige-welt-der-test-frameworks/</link><pubDate>Mon, 08 Sep 2025 07:00:52 +0000</pubDate><guid>https://javapro.svenruppert.com/testen-mit-java-die-vielfaeltige-welt-der-test-frameworks/</guid><description>&lt;h2 id="einleitung"&gt;Einleitung&lt;/h2&gt;
&lt;p&gt;Ein einziger Fehler in einer Software kann katastrophale Folgen haben. Doch warum wird das Testen dann oft venachlässig?&lt;/p&gt;
&lt;p&gt;Das Testen soll die Qualität der Software sicherstellen. Ein gut getestetes Programm enthält weniger Fehler, erfüllt seine Anforderungen besser, läuft stabiler und effizienter als ein nicht getestetes Programm.&lt;/p&gt;
&lt;p&gt;Dennoch ist das Testen selbst ein oftmals mühevoller und teurer Vorgang, denn während des Testens entwickeln die Programmierer keinen neuen Code. Im ersten Moment scheinen sie also nicht produktiv zu sein.&lt;/p&gt;</description></item><item><title>Wie und warum man das klassische Observer-Pattern in Vaadin verwenden soll</title><link>https://javapro.svenruppert.com/wie-und-warum-man-das-klassische-observer-pattern-in-vaadin-verwenden-soll/</link><pubDate>Mon, 01 Sep 2025 11:26:50 +0000</pubDate><guid>https://javapro.svenruppert.com/wie-und-warum-man-das-klassische-observer-pattern-in-vaadin-verwenden-soll/</guid><description>&lt;p&gt;Das Observer Pattern gehört zu den grundlegenden Entwurfsmustern der Softwareentwicklung und wird traditionell zur Entkopplung von Zustandsänderungen und deren Verarbeitung eingesetzt. Seine Ursprünge liegen in der Entwicklung grafischer Benutzeroberflächen, wo eine Änderung am Datenmodell unmittelbar mehrere Ansichten synchronisieren musste, ohne dass eine direkte Kopplung zwischen diesen Ansichten bestand. Dieses Muster etablierte sich schnell als Standardlösung, um lose gekoppelte Architekturen zu fördern.&lt;/p&gt;
&lt;p&gt;Im Kern adressiert das Observer Pattern die Herausforderung, dass Ereignisse oder Zustandsänderungen nicht isoliert bleiben, sondern von unterschiedlichen Komponenten weiterverarbeitet werden müssen. Dabei entsteht ein asynchrones Benachrichtigungsmodell: Das Subjekt (Subject) informiert alle registrierten Beobachter (Observer), sobald sich sein Zustand ändert. Die Beobachter reagieren darauf individuell, ohne dass das Subjekt deren konkrete Implementierungen kennen muss.&lt;/p&gt;</description></item><item><title>Teil II - URL - Shortener</title><link>https://javapro.svenruppert.com/teil-ii-url-shortener/</link><pubDate>Fri, 20 Jun 2025 12:57:53 +0000</pubDate><guid>https://javapro.svenruppert.com/teil-ii-url-shortener/</guid><description>&lt;h3 id="11-zielsetzung-und-abgrenzung-zum-architekturteil"&gt;1.1 Zielsetzung und Abgrenzung zum Architekturteil&lt;/h3&gt;
&lt;p&gt;Im &lt;a href="https://javapro.io/de/kurze-links-klare-architektur-ein-url-shortener-in-core-java/"&gt;ersten Teil&lt;/a&gt; dieser Serie stand die Theorie im Vordergrund: Wir haben geklärt, warum ein URL-Shortener nicht nur ein Komfortwerkzeug, sondern ein sicherheitsrelevantes Element digitaler Infrastruktur ist. Wir haben Modelle zur Kollisionserkennung, Entropieverteilung und Weiterleitungslogik diskutiert sowie architekturelle Varianten analysiert – von zustandslosen Redirect-Services bis hin zu domänenspezifischen Validierungsmechanismen.&lt;/p&gt;
&lt;p&gt;Dieser zweite Teil wendet sich nun der konkreten Umsetzung zu. Wir entwickeln eine erste lauffähige Version eines URL-Shorteners in &lt;strong&gt;Java 24&lt;/strong&gt; – bewusst &lt;strong&gt;ohne den Einsatz von Frameworks&lt;/strong&gt; wie Spring Boot oder Jakarta EE. Ziel ist eine transparente, modular strukturierte Lösung, die alle Kernfunktionen bereitstellt: das Verkürzen von URLs, das sichere Speichern von Mappings, das Weiterleiten über HTTP und die optionale Darstellung über eine Vaadin-basierte Benutzeroberfläche.&lt;/p&gt;</description></item><item><title>Kurze Links, klare Architektur – Ein URL-Shortener in Core Java</title><link>https://javapro.svenruppert.com/kurze-links-klare-architektur-ein-url-shortener-in-core-java/</link><pubDate>Tue, 10 Jun 2025 22:57:14 +0000</pubDate><guid>https://javapro.svenruppert.com/kurze-links-klare-architektur-ein-url-shortener-in-core-java/</guid><description>&lt;p&gt;Ein URL-Shortener wirkt harmlos – doch wer ihn falsch implementiert, öffnet Tür und Tor für Phishing, Enumeration und Datenabfluss. In diesem ersten Teil beleuchte ich die theoretischen und sicherheitsrelevanten Grundlagen eines URL-Shorteners in Java – ganz ohne Frameworks, aber mit Fokus auf Entropie, Kollisionstoleranz, Rate-Limiting, Gültigkeitslogik und digitaler Verantwortung. Im zweiten Teil folgt die vollständige Umsetzung: modular, nachvollziehbar und möglichst sicher.&lt;/p&gt;
&lt;h3 id="11-motivation-und-anwendungsfälle"&gt;&lt;strong&gt;1.1 Motivation und Anwendungsfälle&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In einer zunehmend fragmentierten und mobilen Informationswelt sind URLs nicht nur technische Adressierungsmechanismen, sondern zentrale Bausteine digitaler Kommunikation. Lange und schwer merkbare URLs wirken in sozialen Medien, E-Mails oder QR-Codes hinderlich, da sie nicht nur ästhetisch unattraktiv, sondern auch fehleranfällig bei der manuellen Eingabe sind. URL-Shortener begegnen diesem Problem durch die Erzeugung kompakter Repräsentationen, welche auf die ursprüngliche Zieladresse verweisen. Neben der verbesserten Lesbarkeit spielen dabei auch Aspekte wie statistische Auswertbarkeit, Zugriffskontrolle und Kampagnen-Tracking eine zentrale Rolle.&lt;/p&gt;</description></item><item><title>Wenn hashCode() lügt und equals() hilflos ist</title><link>https://javapro.svenruppert.com/wenn-hashcode-luegt-und-equals-hilflos-ist/</link><pubDate>Sun, 08 Jun 2025 09:53:06 +0000</pubDate><guid>https://javapro.svenruppert.com/wenn-hashcode-luegt-und-equals-hilflos-ist/</guid><description>&lt;p&gt;Ein tiefer Blick in Java’s HashMap-Fallen – visuell demonstriert mit Vaadin Flow&lt;/p&gt;
&lt;h3 id="die-stille-gefahr-in-der-standardbibliothek"&gt;&lt;strong&gt;Die stille Gefahr in der Standardbibliothek&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Die Verwendung von HashMap und HashSet gehört zum täglich Brot in der Java-Entwicklung. Diese Datenstrukturen bieten exzellente Performance für Lookup- und Einfügeoperationen – solange ihre fundamentalen Annahmen erfüllt bleiben. Eine davon lautet: Der hashCode() eines Schlüssels bleibt stabil. Was aber, wenn das nicht der Fall ist?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=u-tSy27RXA8"&gt;https://www.youtube.com/watch?v=u-tSy27RXA8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Genau hier lauert eine der subtilsten und zugleich gefährlichsten Fallen der Java-Standardbibliothek: mutable Schlüsselobjekte. In diesem Artikel zeigen wir nicht nur, warum diese Konstellation problematisch ist, sondern führen das Phänomen interaktiv mit Vaadin Flow vor. Leserinnen und Leser erfahren, wie die HashMap intern funktioniert, warum equals() allein nicht genügt, und wie man mit modernen Sprachmitteln wie record robuste, unveränderliche Schlüssel erzeugt.&lt;/p&gt;</description></item><item><title>Erstellen einer einfachen Datei-Up/Download-Anwendung mit Vaadin Flow</title><link>https://javapro.svenruppert.com/erstellen-einer-einfachen-datei-up-download-anwendung-mit-vaadin-flow/</link><pubDate>Tue, 03 Jun 2025 13:14:00 +0000</pubDate><guid>https://javapro.svenruppert.com/erstellen-einer-einfachen-datei-up-download-anwendung-mit-vaadin-flow/</guid><description>&lt;p&gt;Vaadin Flow ist ein leistungsstarkes Framework zur Erstellung moderner Webanwendungen in Java, bei denen die gesamte UI-Logik serverseitig implementiert wird. In diesem Blogpost bauen wir Schritt für Schritt eine einfache Datei-Verwaltungs-Applikation, die es Nutzern erlaubt, Dateien hochzuladen, auf dem Server zu speichern und bei Bedarf wieder herunterzuladen. Dies ist eine gute Möglichkeit zu zeigen, wie man Schritt für Schritt den Schutz vor CWE-22, CWE-377 und CWE-778 aufbauen kann.&lt;/p&gt;
&lt;p&gt;Wir fokussieren uns in diesem Beispiel ausschließlich auf die Funktionalität und nicht auf die grafische Gestalltung. Diese ist absichtlich sehr einfach gehalten worden um sich auf die technischen Aspekte zu konzentrieren.&lt;/p&gt;</description></item><item><title>Die lange Geschichte von Log4j</title><link>https://javapro.svenruppert.com/die-lange-geschichte-von-log4j/</link><pubDate>Mon, 26 May 2025 07:00:04 +0000</pubDate><guid>https://javapro.svenruppert.com/die-lange-geschichte-von-log4j/</guid><description>&lt;p&gt;Logging ist die Kunst, ein System zu verstehen.&lt;/p&gt;
&lt;p&gt;Software protokolliert was gerade passiert in Log-Dateien, und Entwickler durchsuchen sie in der Hoffnung, das zu finden, was sie brauchen. Das Problem dabei? Systeme protokollieren selten die richtigen Dinge. Doch ohne diese Dateien würden wir im Blindflug fliegen, ohne zu wissen, dass überhaupt etwas schiefgelaufen ist.&lt;/p&gt;
&lt;p&gt;Dies ist die Geschichte von Apache Log4j - eines der ältesten Java-Frameworks, das heute noch verwendet wird. Ein Tool, das Entwicklern die Möglichkeit gab, ihre Systeme zu verstehen.&lt;/p&gt;</description></item><item><title>Bewährte Praktiken für CI/CD Pipelines</title><link>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-ci-cd-pipelines/</link><pubDate>Wed, 30 Nov 2022 17:51:53 +0000</pubDate><guid>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-ci-cd-pipelines/</guid><description>Diese Praktiken sollen eine Vorstellung davon vermitteln, wie einige Probleme in modernen CI/CD-Pipelines gelöst und was vermieden werden sollte. Verwenden Sie diese Muster als Richtlinie beim Implementieren Ihrer eigenen Pipelines.</description></item><item><title>Cybersecurity - Was ist SAST, DAST, IAST und RASP? - ein kleines Intro</title><link>https://javapro.svenruppert.com/cybersecurity-was-ist-sast-dast-iast-und-rasp-ein-kleines-intro/</link><pubDate>Wed, 27 Jul 2022 10:27:40 +0000</pubDate><guid>https://javapro.svenruppert.com/cybersecurity-was-ist-sast-dast-iast-und-rasp-ein-kleines-intro/</guid><description>&lt;p&gt;In diesem Beitrag werden wir uns die Unterschiede der verschiedenen Abwehrtechniken im Bereich der Cybersecurity ansehen. Hier kann man vier Hauptgruppen identifizieren, die wir eine nach der anderen kurz durchgehen werden um die Vor- und Nach-teile darzustellen.&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Wer das Video zu diesem Blogpost&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;auf Youtube sehen möchte:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://youtu.be/pA1UnQ6J6Nc"&gt;https://youtu.be/pA1UnQ6J6Nc&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;h3 id="sast---static-application-security-testing"&gt;SAST - Static Application Security Testing&lt;/h3&gt;
&lt;p&gt;SAST bezeichnet den Vorgang bei dem die Komponenten von einer Anwendung einer statischen Analyse unterzogen werden. Hierbei werden nicht nur Sicherheitslücken gesucht, sondern auch die Lizenzen der einzelnen Elemente bestimmt. Im nachfolgenden werde ich mich in diesem Beitrag allerdings ausschließlich um die Betrachtung der Vulnerabilities kümmern.&lt;/p&gt;</description></item><item><title>Bewährte Praktiken für IT-Compliance-Audits</title><link>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-it-compliance-audits/</link><pubDate>Wed, 06 Jul 2022 16:20:34 +0000</pubDate><guid>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-it-compliance-audits/</guid><description>Wenn Sie in einer regulierten Branche tätig sind, gehören Prüfungen der Einhaltung von Vorschriften zu Ihrem Alltag. Ohne die richtigen Prozesse zur Befolgung der geltenden Normen kann die Einhaltung der Vorschriften schwierig sein, und Audits können entmutigend sein. Damit Sie die in Ihrer Branche geltenden Normen erfolgreich einhalten können, müssen Sie eine Reihe von Werkzeugen und Verfahren al</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>Die Zukunft von Containern - Was kommt als Nächstes?</title><link>https://javapro.svenruppert.com/die-zukunft-von-containern-was-kommt-als-naechstes/</link><pubDate>Wed, 15 Jun 2022 17:29:13 +0000</pubDate><guid>https://javapro.svenruppert.com/die-zukunft-von-containern-was-kommt-als-naechstes/</guid><description>Vielleicht haben Sie schon die Schlagworte gehört, die in aller Munde sind, wenn es um die Zukunft von Containern geht. Seltsame Namen wie &amp;ldquo;Micro-VMs&amp;rdquo;… &amp;ldquo;Unikernel&amp;rdquo;… &amp;ldquo;Sandboxes&amp;rdquo;… Haben Sie sich gefragt, was diese Dinge sind und wie Sie sie nutzen können? Oder sollten Sie diese überhaupt verwenden?</description></item><item><title>PCI DSS-Sicherheitsauditverfahren - alles, was Sie wissen müssen</title><link>https://javapro.svenruppert.com/pci-dss-sicherheitsauditverfahren-alles-was-sie-wissen-muessen/</link><pubDate>Thu, 02 Jun 2022 14:56:43 +0000</pubDate><guid>https://javapro.svenruppert.com/pci-dss-sicherheitsauditverfahren-alles-was-sie-wissen-muessen/</guid><description>Die Einhaltung des Datensicherheitsstandards (DSS) der Zahlungskartenbranche (PCI, engl.: Payment Card Industry) erfordert eine jährliche Berichterstattung. Diese jährliche Berichterstattung umfasst umfangreiche PCI-DSS-Auditverfahren für Organisationen, die die höchsten Transaktionsvolumina abwickeln. Die Auditverfahren werden im Rahmen einer Vor-Ort-Bewertung durchgeführt, die als Konformitätsbe</description></item><item><title>Die NIS-Richtlinie</title><link>https://javapro.svenruppert.com/die-nis-richtlinie/</link><pubDate>Wed, 01 Jun 2022 17:15:33 +0000</pubDate><guid>https://javapro.svenruppert.com/die-nis-richtlinie/</guid><description>Die Richtlinie über die Sicherheit von Netz- und Informationssystemen ist eine Richtlinie, welche in die nationale Gesetzgebung der einzelnen Mitgliedsstaaten übersetzt wird. Dies bedeutet, dass es Unterschiede in der Anwendung geben kann.</description></item><item><title>PCI-DSS 4.0 endlich am Start</title><link>https://javapro.svenruppert.com/pci-dss-4-0-endlich-am-start/</link><pubDate>Tue, 17 May 2022 18:14:27 +0000</pubDate><guid>https://javapro.svenruppert.com/pci-dss-4-0-endlich-am-start/</guid><description>Nach längerer Verzögerung wurde am 31. März 2022 die Version 4.0 des Datensicherheitsstandards (DSS, engl.: Data Security Standard) der Zahlungskartenbranche (PCI, engl.: Payment Card Industry) veröffentlicht. [1], [2]</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>Delegation versus Inheritance in grafischen Oberflächen</title><link>https://javapro.svenruppert.com/delegation-versus-inheritance-in-grafischen-oberflaechen/</link><pubDate>Tue, 16 Mar 2021 11:30:52 +0000</pubDate><guid>https://javapro.svenruppert.com/delegation-versus-inheritance-in-grafischen-oberflaechen/</guid><description>&lt;p&gt;&lt;strong&gt;In diesem Artikel werden wir den Unterschied zwischen den Vererbungs- und Delegierungskonzepten untersuchen. Oder, um es besser auszudrücken, warum ich die Delegation bevorzuge und warum ich diese selten verwendete Funktion in Java hervorheben möchte.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;Diesen Artikel gibt es auch als Youtube Video auf meinem Kanal und ist zu finden unter&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/If_hFAtlF_M"&gt;&lt;em&gt;&lt;strong&gt;Youtube - German - 4k&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;Die Herausforderung, vor der wir heute stehen, ist im Bereich grafischer Benutzeroberflächen wie Desktop- oder Web-Apps weit verbreitet. Java wird häufig als Entwicklungssprache für beide Welten verwendet, und es spielt keine Rolle, ob wir uns im klassischen Swing, JavaFX oder im Bereich von Web-Frameworks wie Vaadin befinden. Ich habe mich explizit für ein Pseudoklassenmodell in Java entschieden, da ich die Entwurfsmuster hier ohne technische Details betrachten möchte. Ziel ist es, eine benutzerdefinierte Komponente zu erstellen, die aus einem Texteingabefeld und einer Schaltfläche besteht. Beide Elemente sollten nebeneinander angezeigt werden, d.h. in einem horizontalen Layout. Die jeweiligen Komponenten haben in diesem Beispiel keine Funktion. Ich möchte hier ausschließlich die Unterschiede zwischen Vererbung und Delegation herausarbeiten.&lt;/p&gt;</description></item><item><title>Die Herausforderungen der Softwareverteilung</title><link>https://javapro.svenruppert.com/die-herausforderungen-der-softwareverteilung/</link><pubDate>Tue, 16 Feb 2021 10:43:16 +0000</pubDate><guid>https://javapro.svenruppert.com/die-herausforderungen-der-softwareverteilung/</guid><description>&lt;p&gt;&lt;strong&gt;Die Softwareentwicklung hängt immer mehr von externen Abhängigkeiten (Dependencies) ab und die Häufigkeit der Deployments nimmt zu. Beide Trends zusammen sind schon eine Anforderung an die bestehenden Infrastrukturen. Ein weiteres Element, das die Bereitstellung von Software in einen Netzwerkengpass verwandelt, ist die Verwendung zusammengesetzter (compounded) Artefakte. Und der vierte Trend, der gegen uns arbeitet, ist die rapide ansteigende Anzahl von Geräten die als Konsumenten in Frage kommen. Alle diese Trends zusammen sind eine Herausforderung für die Infrastruktur. Aber was könnten wir dagegen tun?&lt;/strong&gt;&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>Architektur-Hotspots aufspüren</title><link>https://javapro.svenruppert.com/architektur-hotspots-aufspueren/</link><pubDate>Mon, 21 Dec 2020 13:18:06 +0000</pubDate><guid>https://javapro.svenruppert.com/architektur-hotspots-aufspueren/</guid><description>&lt;p&gt;&lt;strong&gt;Strukturelle Abhängigkeitsanalysen sind von begrenzter Aussagekraft. Teilweise erfassen sie die wesentlichen Architektur-Hotspots nicht, wie anhand eines Code-Beispiels exemplarisch gezeigt wird. Die vorgestellten Konzepte zur Feature-Modularität sind eine neue Art die System-Komplexität zu erfassen. Sie zielen darauf ab, Architektur-Hotspots zu identifizieren, die den (Wartungs-)Aufwand für neue Features ansteigen lassen.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ein weit verbreiteter Ansatz zur Bewertung von Softwaresystemen und deren Architekturen besteht in der Analyse ihrer Abhängigkeitsstruktur. Ziel ist es Abhängigkeitsstrukturen zu identifizieren, die allgemein als schwer wartbar bekannt sind, zum Beispiel zyklische Abhängigkeiten und bestimmte systemspezifische Verletzungen wie schichtübergreifende Abhängigkeiten. Es besteht kein Zweifel, dass die Abhängigkeitsanalyse wertvolle Einblicke in die Struktur eines Softwaresystems liefert und tatsächlich echte Wartungsprobleme aufdecken kann. Trotz ihrer Nützlichkeit hat die klassische Abhängigkeitsanalyse aber große Schwächen.&lt;/p&gt;</description></item><item><title>Die Magie der Lambdas</title><link>https://javapro.svenruppert.com/die-magie-der-lambdas/</link><pubDate>Fri, 18 Dec 2020 14:17:32 +0000</pubDate><guid>https://javapro.svenruppert.com/die-magie-der-lambdas/</guid><description>&lt;p&gt;&lt;strong&gt;Mit der JDK-Version 8 wurde der Versuch gestartet, die objektorientierte Welt mit den Vorteilen der funktionalen Programmierung zu verbinden. Dazu wurden die Lambda-Ausdrücke eingeführt, ein mächtiges aber leider oft unterschätztes Werkzeug. Da Lambda-Ausdrücke jedoch ein integraler Bestandteil des JDK und vieler Frameworks sind, kommt man in der Java-Welt nur noch schwer um sie herum.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="code--daten"&gt;Code = Daten&lt;/h2&gt;
&lt;p&gt;Die mit Java 8 eingeführten Lambda-Ausdrücke sollen die objektorientierte Programmiersprache Java mit den Vorteilen bekannter Konzepte aus der funktionalen Programmierung bereichern. Dazu muss erst einmal geklärt werden, dass Daten nicht notwendigerweise nur aus Zahlen, Bytes oder Zeichenketten bestehen, die in einem Programm herumgereicht werden, sondern dass auch der Code unseres Programms nichts anderes ist als Daten. Daten können an Methoden übergeben werden. Es ist also bekanntermaßen kein Problem Daten zum Beispiel in Form eines Integers oder eines komplexen Objekts an eine Methode weiterzugeben. Doch auch Code kann an eine Methode übergeben werden. Vor Java 8 verwendete man dazu eine Referenz auf ein Objekt. Innerhalb der Methode können dann die Methoden des Objekts aufgerufen werden und somit ist ein Zugriff auf dessen Code möglich. Oftmals macht man es sich zunutze, dass die Klasse des Objekts eine bestimmte Methode implementiert, die beispielsweise durch ein Interface oder eine abstrakte Klasse vorgegeben ist. Bekannt sind das Interface &lt;strong&gt;Runnable&lt;/strong&gt;, in deren Methode &lt;strong&gt;run&lt;/strong&gt; der Code für einen Thread verpackt wird, und das Interface &lt;strong&gt;ActionListener&lt;/strong&gt; zur Definition einer Aktion, die z.B. beim Klick auf eine Schaltfläche ausgeführt werden soll. Diese Aktion wird in der vom Interface vorgegebenen Methode &lt;strong&gt;actionPerformed&lt;/strong&gt; definiert.&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>H2 für JUnit-Tests</title><link>https://javapro.svenruppert.com/h2-fuer-junit-tests/</link><pubDate>Thu, 17 Dec 2020 15:16:56 +0000</pubDate><guid>https://javapro.svenruppert.com/h2-fuer-junit-tests/</guid><description>&lt;p&gt;&lt;strong&gt;H2 ist eine komplett in Java implementierte, relationale Open-Source-Datenbank, die man embedded, als Server- oder In-Memory-Datenbank verwenden kann. H2 eignet sich unter anderem in Prototypen, kleinen Services und für automatisierte Unit-Tests.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Moderne Ansätze zum Systemdesign wie Microservices oder Self-Contained-Systems bieten die Möglichkeit, einzelne Aspekte eines Gesamtsystems isoliert betrachten und bearbeiten zu können. Implementierung, Erweiterung und Deployment der einzelnen Komponenten sind durch automatisierte Tests schnell und trotz zahlreicher Build- und Deployment-Pipelines sicher. Die Vorteile der Isolation kommen vor allem in der Entwicklung zum Tragen, wenn es gelingt Services ohne weitere Umgebungskonfiguration auf der Entwicklermaschine aufzusetzen und testgetrieben entwickeln zu können. Für Services und Systeme, die eine relationale Datenbank als Datenquelle nutzen, gibt es für lokal und in Pipelines ausgeführte Unit-Tests unterschiedliche Ansätze zur Einbindung einer Datenquelle. In diesem Zusammenhang wird im Folgenden das relationale Datenbankmanagementsystem H2 vorgestellt, das insbesondere für Tests auch als In-Memory Lösung konfigurierbar ist.&lt;/p&gt;</description></item><item><title>OpenJDK Amazon-Corretto</title><link>https://javapro.svenruppert.com/openjdk-amazon-corretto/</link><pubDate>Fri, 11 Dec 2020 14:22:15 +0000</pubDate><guid>https://javapro.svenruppert.com/openjdk-amazon-corretto/</guid><description>&lt;p&gt;&lt;strong&gt;Anfang 2019 wurde Amazon-Corretto 8, eine kostenlose, plattformübergreifende Distribution von OpenJDK für Java 8 veröffentlicht. Kurz darauf kam Amazon-Corretto 11 für Java 11 hinzu. Amazon setzt intern Corretto bei Tausenden von produktiven Workloads ein und hat auf Basis dieser Erfahrung Verbesserungen hinsichtlich Sicherheit, Stabilität oder Leistung im OpenJDK-Projekt beigesteuert. In diesem Artikel betrachten wir genauer, welche spezifischen Vorteile Amazon-Corretto bietet.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="die-installation-von-amazon-corretto"&gt;Die Installation von Amazon-Corretto&lt;/h2&gt;
&lt;p&gt;Amazon-Corretto 11 ist als Headless-Variante verfügbar. Diese Variante enthält keine Laufzeitabhängigkeiten, die in der Regel mit GUI-Anwendungen wie X11 und ASLA verbunden sind, und ist für serverseitige Workloads sinnvoll. Im folgenden werden die Installationsanweisungen für Amazon-Linux 2 gezeigt. Amazon-Linux 2 ist die nächste Generation von Amazon-Linux, einem Linux-Server-Betriebssystem von Amazon-Web-Services (AWS). Es bietet eine sichere, stabile und hochleistungsfähige Ausführungsumgebung zur Entwicklung und Ausführung von Cloud- und Unternehmensanwendungen.&lt;/p&gt;</description></item><item><title>Loggen mit Struktur</title><link>https://javapro.svenruppert.com/loggen-mit-struktur/</link><pubDate>Fri, 04 Dec 2020 11:36:38 +0000</pubDate><guid>https://javapro.svenruppert.com/loggen-mit-struktur/</guid><description>&lt;p&gt;&lt;strong&gt;Log-Server bieten weit mehr als eine Volltextsuche über textuelle Log-Meldungen an. Sie sind komplette Datenbanksysteme mit komplexen Auswertemöglichkeiten. Wenn Log-Meldungen passend zu den Datenbankfähigkeiten erstellt werden, ergeben sich neue Möglichkeiten im Umgang mit Log-Daten.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Java-Log-Bibliotheken zum effizienten Schreiben von Log-Meldungen gibt es seit über 20 Jahren. Ursprünglich dienten sie als Hilfe beim Debuggen während der Entwicklung und zur Diagnose von Produktionsproblemen. Im produktiven Unternehmenseinsatz hatten Entwickler meistens keinen Zugriff auf die produktiven Log-Dateien. Die Dateien mussten erst von einem Administrator angefordert werden, der einem dann die hoffentlich richtigen Log-Dateien bereitstellte. Unter solchen Umständen dauerte es oft Stunden, bis ein Problem diagnostiziert werden konnte. Mit dem Aufkommen von Microservice-Architekturen und verteilten Anwendungen in der Cloud steigt die Anzahl der relevanten Log-Dateien rasant an. In der Vergangenheit gab es Projekte mit einer Microservice-Architektur, bei denen allein von den Java-Anwendungen über 40 Log-Dateien auf vier verschiedenen Maschinen gleichzeitig geschrieben wurden. Die Problemdiagnose nur mit Texteditoren und UNIX-Kommandozeilen-Tools ist bei einer solchen Anzahl von Dateien keine erfreuliche Aufgabe. Ein Log-Server, der über eine grafische Oberfläche eine Volltextsuche über alle Log-Dateien ermöglicht, ist unter diesen Umständen eine große Arbeitserleichterung. Da der Zugriff auf den Log-Server nicht den direkten Zugriff auf das Produktionssystem erfordert, ist es – abgesehen vom Datenschutz – auch unkritisch, dem Entwickler Zugriff auf die Produktions-Logs zu geben. Es dauert dann nicht mehr Stunden, bis ein Entwickler die richtigen Log-Meldungen sehen kann, sondern er kann ohne fremde Hilfe tätig werden und hat praktisch Live-Zugriff.&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>Quarkus - die Zukunft von Java?</title><link>https://javapro.svenruppert.com/quarkus-die-zukunft-von-java/</link><pubDate>Fri, 13 Nov 2020 11:13:57 +0000</pubDate><guid>https://javapro.svenruppert.com/quarkus-die-zukunft-von-java/</guid><description>&lt;p&gt;&lt;strong&gt;Wenn es um Entwicklungszykluszeiten, Startzeiten von Anwendungen, Größe der Deployments und Kompatibilität in oder mit Containerumgebungen geht, scheinen andere Sprachen wie JavaScript, Python oder Go gerade Java den Rang abzulaufen. Mit &lt;a href="https://bit.ly/quarkus-q1"&gt;Quarkus&lt;/a&gt; soll sich das jetzt ändern: Native Anwendungen mit Java, Performance vergleichbar mit C, Startzeiten unter einer Sekunde und dazu alle bereits bekannten Vorteilen von Java. Damit dringt Java in eine neue Dimension vor uns setzt völlig neue Maßstäbe.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bit.ly/code-q2"&gt;Quarkus&lt;/a&gt; ist ein für die &lt;a href="https://bit.ly/graalvm-g3"&gt;GraalVMs&lt;/a&gt; optimiertes Java-Framework. Bei GraalVM handelt es sich im Grunde um zwei eigenständige virtuelle Maschinen:&lt;/p&gt;</description></item><item><title>Security-by-Design-Projekte in Zeiten der Datendämmerung</title><link>https://javapro.svenruppert.com/security-by-design-projekte-in-zeiten-der-datendaemmerung/</link><pubDate>Tue, 22 Sep 2020 09:23:31 +0000</pubDate><guid>https://javapro.svenruppert.com/security-by-design-projekte-in-zeiten-der-datendaemmerung/</guid><description>&lt;p&gt;*&lt;em&gt;Der Schutz natürlicher Personen bei der Verarbeitung personenbezogener Daten ist ein Grundrecht. Unter anderem gemäß Artikel 8 Absatz 1 der Charta der Grundrechte der Europäischen Union, hat jede Person das Recht auf Schutz der sie betreffenden personenbezogenen Daten. Diesem Grundrecht trägt die neue EU-Datenschutzgrundverordnung ab dem 25. Mai 2018 verstärkt Rechnung. Sie gilt für alle Unternehmen, Behörden und Freiberufler, die personenbezogene Daten von EU-Bürgern verarbeiten. Es wird also ernst für Verantwortliche bei der Verarbeitung von Daten. Diese sind  nun unmittelbar verpflichtet, alle sich aus der Neuerung ergebenden Auflagen und Pflichten zu erfüllen.  ** Im Kapitel 1 Art. 4 der EU-DS-GVO finden sich die dazu passenden Begriffsbestimmungen für folgende Schlüsselbegriffe: „Personenbezogene Daten: alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person (im Folgenden „betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.“ „Verarbeitung: jeden mit oder ohne Hilfe automatisierter Verfahren ausgeführten Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten wie das Erheben, das Erfassen, die Organisation, das Ordnen, die Speicherung, die Anpassung oder Veränderung, das Auslesen, das Abfragen, die Verwendung, die Offenlegung durch Übermittlung, Verbreitung oder eine andere Form der Bereitstellung, den Abgleich oder die Verknüpfung, die Einschränkung, das Löschen oder die Vernichtung.“&lt;/em&gt; *&lt;/p&gt;</description></item><item><title>Die Tücken des Cloud-Computing</title><link>https://javapro.svenruppert.com/die-tuecken-des-cloud-computing/</link><pubDate>Fri, 07 Aug 2020 10:08:22 +0000</pubDate><guid>https://javapro.svenruppert.com/die-tuecken-des-cloud-computing/</guid><description>&lt;p&gt;&lt;strong&gt;Bedrohungen, denen Cloud-Umgebungen ausgesetzt sind, decken sich in vielen Punkten mit den Gefahren für Inhouse-Unternehmensnetze. Die enormen Datenmengen jedoch, die Cloud-Server beherbergen, machen sie zu einem attraktiven Ziel für Hackerangriffe. Was sind die häufigsten Risiken und welche konkreten Empfehlungen gibt es, um die Gefahr von Missbrauch und extern forciertem Datenverlust zu minimieren?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ein Unternehmen ist für den Schutz seiner Daten selbst verantwortlich. Im Falle einer öffentlich gewordenen Datenpanne drohen Ermittlungsverfahren, Strafanzeigen, Rechtsstreitigkeiten und daraus resultierende Umsatzeinbußen sowie nachhaltiger Reputationsverlust. Daher gilt bei der Wahl des Cloud-Anbieters ein besonderes Augenmerk auf physische und digitale Sicherheitskontrollen zu werfen.  &lt;/p&gt;</description></item><item><title>Durchdachtes Log-Management für Industrie 4.0</title><link>https://javapro.svenruppert.com/durchdachtes-log-management-fuer-industrie-4-0/</link><pubDate>Fri, 10 Jul 2020 12:51:25 +0000</pubDate><guid>https://javapro.svenruppert.com/durchdachtes-log-management-fuer-industrie-4-0/</guid><description>&lt;p&gt;&lt;strong&gt;Log- und Protokollmanagement ist eine oft wenig beachtete, aber dennoch eine der dringlichsten Herausforderungen zur Absicherung von IT-Strukturen. Dieser Artikel zeigt ein Best Case in Form eines Sicherheitskonzeptes über zehn Etappen und bedient sich dabei zur Veranschaulichung aus der Industrie 4.0-Themenwelt.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sichere Identitäten gelten als wesentlicher Ausgangspunkt für Sicherheitsketten, welche die Datenerhebung, Datentransport und Datenverarbeitung auf Hardware-, Software- und Prozess-Ebene absichern. Damit bilden sie die Voraussetzung für viele weitere Schutzmaßnahmen, die Unternehmen in puncto Datensicherheit ergreifen sollten, um sich compliant und wettbewerbsfähig aufzustellen. Denn klar ist: Sobald es einem Angreifer gelingt, sich unberechtigt einer Identität zu bemächtigen, laufen alle darauf aufbauenden Maßnahmen wie zum Beispiel der Zugriffsschutz ins Leere. So bietet die Gewährleistung sicherer Identitäten über automatisierte Kommunikation ein solides Startglied in der Vertrauenskette. Mit der Einführung eines Sicherheitsprozesses leiten IT-Verantwortliche die notwendigen organisatorischen Veränderungen ein, definieren eine Strategie und nutzen Hilfsmittel zur Erreichung der Sicherheitsziele.&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><item><title>Massive Attacken – Warum smarte Elektrotechnik nicht vertrauenswürdig ist</title><link>https://javapro.svenruppert.com/massive-attacken-warum-smarte-elektrotechnik-nicht-vertrauenswuerdig-ist/</link><pubDate>Fri, 01 May 2020 11:25:00 +0000</pubDate><guid>https://javapro.svenruppert.com/massive-attacken-warum-smarte-elektrotechnik-nicht-vertrauenswuerdig-ist/</guid><description>&lt;p&gt;**„**Helferlein“, die intelligente Glühbirne des Comic-Antihelden Daniel Düsentrieb, saß auf seiner Schulter und hatte keinerlei Verbindung in die Cloud. Eine risikolose Beziehung. Heute vernetzt sich Lichttechnik online, schickt Datenpakete um die Welt und bietet Cyberkriminellen Raum für Attacken. Normen und Sicherheitsstandards für Dinge im Internet suchen Gebäudeplaner und Lenker digitaler Transformation nahezu vergeblich. Smart Buildings brauchen, um sich dem entgegenzustemmen, Security-by-Design-Konzepte, Privacy by Default und einen Dreiklang an Sicherheitsmaßnahmen.  &lt;/p&gt;
&lt;h3 id="stand-der-technik-wenn-sich-dem-hacker-alle-türen-öffnen"&gt;Stand der Technik: Wenn sich dem Hacker alle Türen öffnen&lt;/h3&gt;
&lt;p&gt;Bis 2020 wird es weltweit über &lt;a href="https://de.statista.com/statistik/daten/studie/537093/umfrage/anzahl-der-vernetzten-geraete-im-internet-der-dinge-iot-weltweit/"&gt;20 Milliarden Geräte&lt;/a&gt; geben, die mit dem Internet verbunden sind. Ein beträchtlicher Teil dieser technischen Spielereien existiert als Teil gebäudeinterner Sicherheitssysteme, beispielsweise in Form von Überwachungskameras, ferngesteuerten Heizungs- oder Lichtanlagen. Während der Markt für Smart-Building-Technik boomt, befindet sich das dazugehörende branchenspezifische Feld der IoT-Sicherheit noch in den Kinderschuhen. Konkret bedeutet dies, dass Gebäude und ihre smarten Infrastrukturen bis dato nicht dafür geplant und ausgelegt sind, Teil eines vernetzten IoT-Universums zu sein. Der asynchrone Stand der Technik von intelligenten Geräten und ihren rudimentären Sicherheitsfunktionen öffnet Hackern Tür und Tor. Bei Attacken auf IT-Systeme via Brandmeldeanlage oder Videokamera erlangen Angreifer Fernzugriff auf sensible Daten sowie Manipulationsfreiraum. Hacker nehmen erfahrungsgemäß stets den leichtesten Weg und dieser führt auch über smarte Geräte ans schadenbringende Ziel. Bezieht man bei diesen Gedankenspielen Gebäude mit kritischen Infrastrukturen, also Krankenhäuser, Kraftwerke oder Flughäfen, mit ein, zeigt sich die Brisanz umso deutlicher.  &lt;/p&gt;</description></item><item><title>Die 10 wichtigsten Schritte zur Verhinderung eines Datenschutzverstoßes</title><link>https://javapro.svenruppert.com/die-10-wichtigsten-schritte-zur-verhinderung-eines-datenschutzverstosses/</link><pubDate>Thu, 30 Apr 2020 11:10:33 +0000</pubDate><guid>https://javapro.svenruppert.com/die-10-wichtigsten-schritte-zur-verhinderung-eines-datenschutzverstosses/</guid><description>&lt;p&gt;Heute leben wir mehr denn je in einer &lt;strong&gt;digitalen Welt&lt;/strong&gt;, die sich schneller verändert, als wir die von uns gespeicherten Dateien und Daten schützen können. Es gibt keine Patentrezepte oder magische Lösung, um einen Datenschutzverstoß zu verhindern, aber es gibt wichtige Schritte, die Sie zum Schutz Ihrer Daten ergreifen können. Es gibt technisch gesehen einige wenige Arten von Datenlecks, wie interne oder externe Quellen. Obwohl Unternehmen Maßnahmen ergreifen und aktiv handeln, scheint es, dass die Zahl der Datenschutzverletzungen von Jahr zu Jahr zugenommen hat. Es kann sich wie ein unendliches &lt;strong&gt;Katz-und-Maus-Spiel&lt;/strong&gt; anfühlen, weil es tatsächlich so ist. Jedes Mal, wenn Unternehmen einen neuen Weg finden, Daten zu schützen, scheint es, als ob Kriminelle einen besseren Weg finden, auf diese Daten zuzugreifen, und dann gibt es interne Lecks, die durch menschliches Versagen oder Vorsatz verursacht werden. Daten sind wertvoll und es gibt eine Vielzahl von Dingen, die mit gehackten, durchgesickerten oder gestohlenen Daten durchgeführt werden können. Die häufigste Art von Daten, die von Hackern und Cyberkriminellen verwendet werden, sind Namen, Geburtsdatum, Sozialversicherungsnummern und manchmal Kreditkarten- oder Debitkartennummern. Gesundheitsdaten sind die wertvollsten auf dem Schwarzmarkt und im dunklen Netz. Eine Sozialversicherungsnummer kann für etwa 15 US-Dollar gekauft und die Gesundheitsdaten von jemandem können für bis zu 200 US-Dollar verkauft werden. Es gibt so viele verschiedene Möglichkeiten, wie Datenschutzverletzungen auftreten können, aber es gibt einfache Schritte, die jeder tun kann, um zumindest die Grundlagen der Cybersicherheit abzudecken. Dies sind die grundlegenden Schritte, die Sie mindestens unternehmen sollten, um Verletzungen der Datensicherheit zu verhindern.  &lt;/p&gt;</description></item><item><title>Was sollten wir im Falle eines Cybersicherheitsvorfalls in einer industriellen Umgebung tun?</title><link>https://javapro.svenruppert.com/was-sollten-wir-im-falle-eines-cybersicherheitsvorfalls-in-einer-industriellen-umgebung-tun/</link><pubDate>Wed, 29 Apr 2020 11:00:28 +0000</pubDate><guid>https://javapro.svenruppert.com/was-sollten-wir-im-falle-eines-cybersicherheitsvorfalls-in-einer-industriellen-umgebung-tun/</guid><description>&lt;p&gt;Die Unvermeidlichkeit von Cyberangriffen in der heutigen Zeit bedeutet, dass Industrieanlagen auf der ganzen Welt ihre Investitionen in die digitale industrielle Cybersicherheit neu priorisieren sollten. Da sich die Prioritäten verschieben, besteht die größte Notwendigkeit darin, die Ausgaben für Strategien und Instrumente zur Erkennung und Reaktion auf Vorfälle im Vergleich zu traditionellen Schutz- und Präventionsmethoden zu verbessern. Mit anderen Worten: Es ist klar, dass es nicht mehr ausreicht, einen typischen &lt;strong&gt;Netzsicherheitsperimeter&lt;/strong&gt; aufzubauen und zu hoffen, dass er den Angreifer fernhält. Die Verfahren müssen so konzipiert sein, dass sie Angriffe bewältigen können. Zudem müssen sie in der Lage sein, jeden Schaden zu mildern und zu reparieren, sobald jemand eingedrungen ist. Diese Botschaft scheint bereits in die Welt der Unternehmens-IT durchzudringen, wo das Ausmaß des Problems durch die neue Gesetzesgrundlage und das öffentliche Bewusstsein für neue Vorschriften deutlich geworden ist. Wenn es jedoch um die Steuerungstechnik (&lt;a href="https://de.wikipedia.org/wiki/Industrial_Control_System"&gt;Industrial Control System, abgekürzt ICS&lt;/a&gt;) geht, haben viele Unternehmen immer noch Schwierigkeiten, sich anzupassen. Die alte Ausgabenregel 80/20, die besagt, dass 80 % der Ausgaben für Prävention und Schutz und nur 20 % für Erkennung und Reaktion getätigt werden, gilt nach wie vor. Es gibt bereits Anzeichen dafür, dass sich das ändern wird. Für die Anbieter &lt;strong&gt;kritischer Infrastrukturen&lt;/strong&gt; in den Bereichen Banken, Versicherungen, Wasser, Fertigung, Energie, Transport und Gesundheit könnte die unzureichende Vorbereitung auf einen möglichen Vorfall bedeuten, dass neue Vorschriften, wie die Richtlinie der Europäischen Union (EU) über die Sicherheit von Netz- und Informationssystemen (&lt;a href="https://www.gronau-it-cloud-computing.de/en/nis-richtlinie/"&gt;NIS-Richtlinie&lt;/a&gt;) ^([1]), in Kraft treten. &lt;strong&gt;Compliance&lt;/strong&gt; ist jedoch nur ein Motivationsfaktor. Ein methodischer und gut strukturierter Plan zur Bewältigung von Vorfällen kann die Sicherheit verbessern und dazu beitragen, finanzielle oder Reputationsschäden zu vermeiden.  &lt;/p&gt;</description></item></channel></rss>