Pattern Matching für switch (3)

Pattern Matching im switch-Statement ist seit Java 21 ein vollwertiges Feature, das die Ausdruckskraft und Lesbarkeit von Code deutlich erhöht. Es ermöglicht, dass case-Labels nicht nur konstante Werte, sondern auch Typmuster und Bedingungen enthalten können, wodurch komplexe Entscheidungslogik kompakter und sicherer gestaltet werden kann.

Mit Pattern Matching im switch lassen sich beispielsweise unterschiedliche Objektarten direkt im switch-Statement abfragen und verarbeiten, ohne vorheriges instanceof und explizites Casting. „Pattern Matching für switch (3)“ weiterlesen

Java Records zum Tag der Arbeit (1)

Mit der Einführung von Records hat Java einen eleganten Weg geschaffen, um unveränderliche Datenobjekte effizient und ausdrucksstark zu modellieren. Records ersetzen den klassischen, oft umfangreichen Boilerplate-Code für Datenklassen durch eine kompakte, deklarative Syntax. Sie eignen sich hervorragend für Value Objects, Data Transfer Objects (DTOs) oder als Rückgabetypen in APIs.

Was sind Java Records?

Ein Record ist ein spezieller Klassentyp, der für die Speicherung von Daten entwickelt wurde. Die Felder eines Records sind automatisch private und final, der Zustand eines Record-Objekts kann nach der Erstellung nicht mehr verändert werden. Konstruktor, Getter-Methoden, sowie sinnvolle Implementierungen von equals(), hashCode() und toString() werden automatisch generiert. „Java Records zum Tag der Arbeit (1)“ weiterlesen

TWRente 1.2.1 (Event-Generator): Unterstützung für 12 Sprachen mit dynamischer Umschaltung zur Laufzeit

Die Benutzeroberfläche des TWRente 1.2.1 Programms (Event-Generator) kann nun ohne Neustart dynamisch in eine von zwölf Sprachen umgeschaltet werden. Alle statischen Texte, Menüs, Labels, Schaltflächen und Hinweise erscheinen sofort in der gewählten Sprache.

Mein letzter Japan Aufenthalt ist schon einige Jahre her, und mein Sprachkurs Japanisch habe ich auch wieder abgebrochen, aber es sieht schön aus, nicht wahr?

Die Übersetzungen basieren auf standardisierten Java ResourceBundles (.properties-Dateien) mit Unicode-Unterstützung, um eine saubere Internationalisierung (i18n) sicherzustellen, wie z.B. für Chinesisch: „TWRente 1.2.1 (Event-Generator): Unterstützung für 12 Sprachen mit dynamischer Umschaltung zur Laufzeit“ weiterlesen

Java Programm mit KI in 1 Stunde erzeugen

Das Grok-2-Modell das im August 2024 veröffentlicht wurde, bietet eine Reihe von Verbesserungen und Funktionen, unter anderem ist das Kontextfenster von 131072 Tokens möglich. Also mal in Perplexity das Grok-2-Modell für ein Java Programm-Generierung verwenden. Hier mal das Endergebnis vorweg:

Ich hatte die Idee, mal für jeden Tag, bis zur Rente einen Eintrag in meinen Kalender mit Counter eintragen zu lassen. Also z.B, in der Form „Noch 33 Tage bis zur Rente“. Rausgekommen ist dann ein universelles Programm, das auch für alle anderen Ereignisse verwendet werden kann, also z.B. noch „55 Tage bis zum Urlaub“ usw.

Ganz zum Schluss, gibt es auch das Programm zum kostenlosen Download.

Hier mal alle Schritte bzw. Promps die an die KI gingen. „Java Programm mit KI in 1 Stunde erzeugen“ weiterlesen

Get Started OpenAiChatModel mit LangChain4j in Java

LangChain4j ist ein Open-Source-Framework, das speziell für die Integration von Large Language Models (LLMs) in Java-Anwendungen entwickelt wurde. Es bietet eine vereinheitlichte API, die den Zugriff auf verschiedene LLM-Anbieter wie OpenAI oder Google Vertex AI erleichtert. Mit LangChain4j können Entwickler Aufgaben wie das Erstellen von Embeddings, semantische Suchen, Chatbot-Implementierungen und Retrieval-Augmented-Generation (RAG) effizient umsetzen.

Um LangChain4j in einem Java-Projekt zu nutzen, müssen die entsprechenden Maven-Abhängigkeiten hinzugefügt werden und zwar so in der pom.xml: „Get Started OpenAiChatModel mit LangChain4j in Java“ weiterlesen

Sierpinski-Dreieck: Mal was anderes als der Mega-Hack der Bybit Exchange mit ca. 401000 ETH ( ca. 1,4 Milliarden Dollar ) Verlust

Der Crypto-Bereich ist in Aufregung, weil Bybit von einem Ethereum-Cold-Wallet ca. 1,4 Milliarden Dollar geklaut wurden. Wie war das technisch möglich? Hier eine Erklärungsmöglichkeit:

Aber kommen wir nun zu etwas einfacheren und auch sehr interessanten Thema: Das Sierpinski-Dreieck. „Sierpinski-Dreieck: Mal was anderes als der Mega-Hack der Bybit Exchange mit ca. 401000 ETH ( ca. 1,4 Milliarden Dollar ) Verlust“ weiterlesen

Duino-Coin Hashrate im Tacho anzeigen

Um die Hashrate vom Duino-Coin-Mining schön auf einem Tachometer ähnlichen Diagram anzuzeigen, habe ich ein Java-Programm erstellt. Nach dem Start wird die Hashrate so angezeigt:

TWHashRate

Das Diagramm dient dazu, die Hashrate in Echtzeit zu überwachen, in Bezug auf die Berechnungsgeschwindigkeit von Hashwerten. Es handelt sich um eine anschauliche und benutzerfreundliche Visualisierung, die den Benutzer schnell über die Leistung informiert. Intern wird auf einem REST-Service zurückgegriffen. Das ganze Projekt ist in meinem Gitlab-Repo zu finden.

Nun zur Installation und Start. „Duino-Coin Hashrate im Tacho anzeigen“ weiterlesen

Wahrscheinlichkeit, Standardabweichung, Varianz und Erwartungswert mit Java und Python Baumdiagramm

Wir wollen mal den Erwartungswert die Varianz und die Standardabweichung bei diesen Werten 10 Euro mit 0,25 und -5 Euro mit 0,75 berechnen und mit einem Baumdiagramm darstellen. Die Berechnung soll auch in einem Java Programm mit einfacher GUI enden.

Also los, gegeben ist: „Wahrscheinlichkeit, Standardabweichung, Varianz und Erwartungswert mit Java und Python Baumdiagramm“ weiterlesen

Wahrscheinlichkeitsrechnung mit dem Satz von Bayes nicht nur für Versicherungen und Medizin

Der Satz von Bayes ist ein grundlegendes Theorem in der Wahrscheinlichkeitsrechnung, das den Zusammenhang zwischen bedingten Wahrscheinlichkeiten beschreibt.

Der Satz von Bayes ist ein spannendes Werkzeug aus der Welt der Mathematik, das uns hilft, Wahrscheinlichkeiten zu verstehen und zu berechnen. Er wird in vielen Bereichen angewendet, von der Medizin über Künstliche Intelligenz bis hin zu Alltagssituationen. Aber was genau besagt dieser Satz, und warum ist er so nützlich?

Was ist der Satz von Bayes? „Wahrscheinlichkeitsrechnung mit dem Satz von Bayes nicht nur für Versicherungen und Medizin“ weiterlesen

Der Brier-Score (Brier-Wert) nicht nur für Prognostiker

Der Brier-Wert ist ein effizientes und einfaches Maß zur Bewertung der Genauigkeit probabilistischer Vorhersagen. Durch die Kombination aus einfacher Berechnung und aussagekräftiger Analyse ist er ein weit verbreitetes Werkzeug in der Statistik und im maschinellen Lernen.

In der Praxis hilft er, die Qualität von Vorhersagen quantitativ zu bewerten und kann zur Verbesserung von Modellen und Algorithmen beitragen. Die Bezeichnung „Brier-Wert“ stammt von dem amerikanischen Meteorologen Glenn W. Brier, der das Maß (1950 – VERIFICATION OF FORECASTS EXPRESSED IN TERMS OF PROBABILITY) entwickelte und damit die Grundlage legte.

Der Brier-Wert wird häufig in Bereichen wie Meteorologie, Medizin, Finanzwesen, Wahlprognosen und maschinellem Lernen verwendet, um die Genauigkeit von Prognosen zu bewerten. Er ist besonders nützlich bei binären Klassifikationsproblemen, bei denen das Modell Wahrscheinlichkeiten für die Zugehörigkeit zu einer von zwei Klassen liefert (z. B. Regenwahrscheinlichkeit).

Wir erstellen zur Verdeutlichung mal ein JSon Datei mit ein paar Daten von der Reserve Bank of Australia, die bei ihren monatlichen Sitzungen Zinssätze beschließt. Die RBA lässt die Zinssätze im Allgemeinen unverändert, erhöht sie jedoch manchmal und senkt sie manchmal, je nach wirtschaftlicher Lage. Die Daten stammen aus diesem Artikel und wurden von mir in das JSon-Format überführt. „Der Brier-Score (Brier-Wert) nicht nur für Prognostiker“ weiterlesen

Hochladen von Java-Artefakten nach Maven Central

Maven Central ist das wichtigste öffentliche Repository im Java-Ökosystem und ermöglicht es Entwicklern, wiederverwendbare Komponenten einfach in ihre Projekte einzubinden.

Das Hochladen von Java-Artefakten in das Maven Central Repository ist ein essentieller Schritt, um Java-Bibliotheken und -Anwendungen einer breiten Entwickler-Community zur Verfügung zu stellen. Vor 8 Jahren hatte ich das schon mal beschrieben. Ein paar Änderungen gibt es inzwischen.

Warum sollte man überhaupt Artefakte nach Maven Central hochladen? „Hochladen von Java-Artefakten nach Maven Central“ weiterlesen

Wie können alle Flugzeuge im Umkreis von 20 km ermittelt werden?

Währe es nicht schön, wenn man auf einem Display (eines Raspberry Pi oä.), ähnlich wie am Flughafen alle Flugzeuge die in der Nähe sind, angezeigt bekommt. Dazu müsste erst ermittelt werden, welch Flugzeuge im Umkreis (Rechteck) vom Flughafen Hannover (oder jeder andere Ort) von ca. 20 km in der Luft und am Boden sind.

„Wie können alle Flugzeuge im Umkreis von 20 km ermittelt werden?“ weiterlesen

Lieben Dank für die neue ArchUnit 1.3.0 Version mit Support für Java 23

Das Java Framework ArchUnit ist ein leistungsstarkes Werkzeug für die Gewährleistung von Softwarearchitektur und Code-Qualität in Java-Projekten. Die Entwicklung von Softwareanwendungen wird immer komplexer und anspruchsvoller. Um sicherzustellen, dass Softwareprojekte effizient, skalierbar und wartbar sind, ist die Einhaltung einer soliden Softwarearchitektur und Code-Qualität von entscheidender Bedeutung. Hier kommt das Java Framework ArchUnit ins Spiel, das sich als unverzichtbares Werkzeug für die Überprüfung und Aufrechterhaltung dieser Standards etabliert hat.

ArchUnit ist ein Open-Source-Framework für statische Codeanalyse in Java-Anwendungen. Es wurde entwickelt, um Entwicklern und Architekten dabei zu helfen, die Einhaltung von vordefinierten Architekturrichtlinien und -regeln in ihrem Java-Code sicherzustellen. Das Framework ermöglicht es, Architekturvorgaben in Form von Java-Codeausdrücken zu definieren und automatisierte Tests zu schreiben, um sicherzustellen, dass diese Vorgaben im gesamten Projekt eingehalten werden. Die neue Version die vor ein paar Wochen veröffentlicht worden mal eben einem Quicktest unterziehen. „Lieben Dank für die neue ArchUnit 1.3.0 Version mit Support für Java 23“ weiterlesen

Schlüsselverwendungszwecke aus X509 Zertifikaten im PEM Format mit Java auslesen und im Klartext ausgeben

Jedes Jahr am ersten Donnerstag im Mai ist Welt-Passwort-Tag. Er dient dazu, das Bewusstsein für die Bedeutung starker Passwörter zu schärfen. Also gestern. Dann mal heute ein kleines Javaprogramm zu Entspannung das den Verwendungszweck eine Zertifikats ausgibt. Schlüsselverwendungszwecke sind wichtig für die ordnungsgemäße Verwendung und Interpretation von Zertifikaten und spielen eine entscheidende Rolle bei der Sicherstellung der Sicherheit und Integrität von Kommunikationen und Daten. In ASN.1 („Abstract Syntax Notation One“) ist das beschrieben. ASN.1 ist eine formale Sprache zur Beschreibung von Datenstrukturen und -inhalten, die unabhängig von einer bestimmten Programmiersprache oder Hardwareplattform ist. ASN.1 wird häufig in der Telekommunikations- und Netzwerktechnik sowie in der Kryptografie verwendet.

Hier ein kleines Programm, das ein JUnit-Testzertifikat (Public, PEM Format) aus dem Dateisystem einliest, und die meisten Parameter des Zertifikats auf der Konsole ausgibt. „Schlüsselverwendungszwecke aus X509 Zertifikaten im PEM Format mit Java auslesen und im Klartext ausgeben“ weiterlesen

25 Jahre Innovation: Ein Blick auf die Reise unseres Programmierblogs – mit Jubiläumsumfrage

Liebe Leserinnen und Leser,

wir stehen Heute am beeindruckenden Meilenstein des 25-jährigen Bestehens unseres Blogs – ein Vierteljahrhundert, in dem wir die Welt der Programmierung gemeinsam erkundet haben. Würde mich über die Beantwortung von nur 3 Fragen freuen. Dafür habe ich diese kurze Umfage gemacht.

Es scheint wie gestern, dass wir unsere digitale Reise begannen, und doch haben wir zusammen eine Ewigkeit an Wissen und Erfahrungen gesammelt.

Von den ersten Zeilen Code in Java bis hin zu den komplexen Netzwerken der Blockchain haben wir jede Entwicklung nicht nur beobachtet, sondern auch aktiv gestaltet. Unsere Plattform hat sich zu einem Treffpunkt für Gleichgesinnte entwickelt, die eine Leidenschaft für Technologie teilen und den unersättlichen Drang haben, Neues zu lernen und zu erschaffen. „25 Jahre Innovation: Ein Blick auf die Reise unseres Programmierblogs – mit Jubiläumsumfrage“ weiterlesen