ArchUnit Version 1.2.1 veröffentlicht für eine kontinuierliche Überwachung der Architekturstandards

Das Java Framework ArchUnit ist ein leistungsstarkes Werkzeug für die Gewährleistung von Softwarearchitektur und Code-Qualität in Java-Projekten.

Durch die Möglichkeit, deklarative Regeln zu erstellen und automatisierte Tests zu schreiben, hilft ArchUnit, konsistente und hochwertige Software zu entwickeln. „ArchUnit Version 1.2.1 veröffentlicht für eine kontinuierliche Überwachung der Architekturstandards“ weiterlesen

Quarkus CO2 Server 2.x auf Version 3.4.1 Migration mit update Tool oder per Hand

Der 3. Oktober ist in Deutschland ein Feiertag, wenn das nicht Grund genug ist, mal die Migration eines Quarkus 2.0 CO-2 Servers auf 3.4.1 durchzuführen.

Am dritten Oktober, freu’n wir uns sehr,
Ein Feiertag, der uns vereint, ist hier.
Die Einheit Deutschlands, im Glanz erstrahlt,
Wie Quarkus, stark und neu, die Zukunft malt.

Die Alte 2er Version, längst vergangen Zeit,
Jetzt weichen muss, für Neues, das gedeiht.
Wie Quarkus 3er, frisch und schnell, die Zukunft weist,
Die Migration, sie kommt, wir sind bereit.

Die Server, stark wie Eichen im Revier,
Wie Quarkus, schnell und stabil, das ist ihr Tier.
Die Zukunft winkt, wir schreiten voran,
Mit Feiern und Migration, Hand in Hand.

-Thomas Wenzlaff

Es gibt da ja automatisch Scripte und eine Anleitung.

Es war aber doch etwas Handarbeit angesagt, da das „Quarkus CO2 Server 2.x auf Version 3.4.1 Migration mit update Tool oder per Hand“ weiterlesen

SSL/TLS-Zertifikat mit Elliptische-Kurven-Kryptografie (ECC) secp256k1 und eigener CA erzeugen und per Java einlesen auf dem Raspberry Pi

In der heutigen digitalen Welt ist die Sicherheit von Daten und Kommunikation von höchster Bedeutung. SSL/TLS-Zertifikate spielen eine entscheidende Rolle bei der Verschlüsselung von Datenübertragungen im Internet und der Gewährleistung der Vertraulichkeit und Integrität von Informationen. Das Open-Source-Programm xca ist eine leistungsstarke und vielseitige Anwendung, die die Verwaltung von SSL/TLS-Zertifikaten und vieles mehr erleichtert.

Es kann einfach per sudo apt install xca installiert werden und steht dann im Zubehör-Menü zur Verfügung:

„SSL/TLS-Zertifikat mit Elliptische-Kurven-Kryptografie (ECC) secp256k1 und eigener CA erzeugen und per Java einlesen auf dem Raspberry Pi“ weiterlesen

Die wichtigsten Unterschiede zwischen Trust Stores und Key Stores für Java und HTTPS

Die wichtigsten Unterschiede zwischen Trust Stores und Key Stores für Java und HTTPS.

Der Key Store speichert private Schlüssel und zugehörige Zertifikate zur Identifizierung und Authentifizierung.
Der Trust Store speichert Zertifikate von vertrauenswürdigen Zertifizierungsstellen zur Überprüfung der Glaubwürdigkeit von Remote-Entitäten.

Beide Speicher sind wichtig, um eine sichere Kommunikation über HTTPS und andere verschlüsselte Protokolle zu gewährleisten. Der Key Store ermöglicht die Identifizierung und Authentifizierung, während der Trust Store das Vertrauen in die Gegenstelle sicherstellt. Hier die Unterschiede als Mindmap und als Tabelle:

„Die wichtigsten Unterschiede zwischen Trust Stores und Key Stores für Java und HTTPS“ weiterlesen

Das „Haus vom Nikolaus“ mit seinen 88 Möglichkeiten und seine Bedeutung in der Graphentheorie

Das „Haus vom Nikolaus„, ein einfaches geometrisches Muster aus fünf Linien, das die Form eines stilisierten Hauses darstellt, mag auf den ersten Blick wie eine unschuldige Kindermalerei wirken. Doch hinter diesem scheinbar simplen Muster verbirgt sich eine faszinierende Verbindung zur Graphentheorie, einem Teilgebiet der Mathematik, das sich mit den Eigenschaften und Beziehungen von Graphen beschäftigt. Dann mal los, und ein kleines Java Programm dazu.

Was ist das „Haus vom Nikolaus“? „Das „Haus vom Nikolaus“ mit seinen 88 Möglichkeiten und seine Bedeutung in der Graphentheorie“ weiterlesen

Every main method deserves picocli!

Picocli: Eine leistungsstarke Bibliothek für die Erstellung von Befehlszeilenanwendungen. Hier habe ich schon oft davon berichtet. Da es im Juni die Version 4.7.4 gab, mal hier ein Beispiel dazu.

Die Entwicklung von Software, sei es in Form von Anwendungen oder Tools, erfordert oft die Integration von Befehlszeilenfunktionalität, um Benutzern eine effiziente Interaktion mit der Software zu ermöglichen. Eine der bemerkenswertesten Bibliotheken, die diese Aufgabe erleichtert, ist „Picocli„. Picocli ist eine Java-basierte Open-Source-Bibliothek, die Entwicklern dabei hilft, robuste und benutzerfreundliche Befehlszeilenanwendungen zu erstellen.

Was ist Picocli? „Every main method deserves picocli!“ weiterlesen

Maven Embedder

Der „Maven Embedder“ ist eine Möglichkeit, Maven in Java-Anwendungen einzubetten und Maven-Funktionen programmatisch aufzurufen. Damit kannst du Maven in deinem Code verwenden, um Build- und Dependency-Management-Funktionen auszuführen, ohne externe Prozesse aufrufen zu müssen.

Man braucht nur eine Abhängigkeit:

Das Apache Maven Build-Tool ist ein weit verbreitetes Werkzeug in der Java-Entwicklungswelt, das die Automatisierung von Build-, Test- und Abhängigkeitsverwaltungsaufgaben erleichtert. Normalerweise wird Maven über die Befehlszeile oder in Build-Skripten verwendet. In einigen Szenarien kann es jedoch erforderlich sein, Maven in Java-Anwendungen einzubetten, um Maven-Funktionen programmatisch aufzurufen. Das Maven Embedder ermöglicht genau das. Was ist der Maven Embedder? „Maven Embedder“ weiterlesen

Rot oder Grün, das ist hier die Frage

Zum Wochenende mal ein kleines Quiz. Läuft der Test grün oder rot?

Die Lösung … „Rot oder Grün, das ist hier die Frage“ weiterlesen

Unit test your Java architecture a new release of ArchUnit (v1.1.0) is out.

Leider keine Zeit für eine Reise nach Nashville, TN zum Patient Blood Management and Blood Health: They Top the Charts! Annual Meeting. Dann mal die gestern veröffentlichte Version von ArchUnit testen.

Das Java Framework ArchUnit ist ein leistungsstarkes Werkzeug für die Gewährleistung von Softwarearchitektur und Code-Qualität in Java-Projekten. Durch die Möglichkeit, deklarative Regeln zu erstellen und automatisierte Tests zu schreiben, hilft ArchUnit, konsistente und hochwertige Software zu entwickeln. „Unit test your Java architecture a new release of ArchUnit (v1.1.0) is out.“ weiterlesen

Wie kann eine Datei-Liste aller Maven Abhängigkeiten eines Projektes erstellt werden?

Manchmal will man eine Liste aller Abhängigkeite eines Maven-Projektes in einer eigenen Datei.

Das geht einfach mit dem maven-dependency-plugin.

Die effiziente Verwaltung von Abhängigkeiten ist ein grundlegendes Element bei der Entwicklung von Java-Projekten. Maven ist ein weit verbreitetes Build-Management-Tool, das Entwicklern ermöglicht, Abhängigkeiten zu verwalten und den Build-Prozess zu automatisieren. Das Maven-Dependency-Plugin ist eine Erweiterung von Maven, die speziell für die Handhabung von Abhängigkeiten entwickelt wurde.

Also einfach das Plugin in der pom.xml einbinden z.B.: „Wie kann eine Datei-Liste aller Maven Abhängigkeiten eines Projektes erstellt werden?“ weiterlesen

TWRestMindmap mit React, Patternfly, RESTEasy, Swagger-UI, Quarkus, Panache, ORM, JPA, Hibernate, Docker und PostgreSQL

TWRestMindmap mit React, Patternfly, RESTEasy, Swagger-UI, Quarkus, Panache, ORM, JPA, Hibernate, Docker und PostgreSQL DB verwenden. Um nicht JUnit 5 zu vergessen.

Wir bauen nun mit Quarkus eine React Anwendung die Titel und das Datum von Mindmaps anzeigt und per REST bedient werden kann. Die GUI im Browser sieht dann so aus: „TWRestMindmap mit React, Patternfly, RESTEasy, Swagger-UI, Quarkus, Panache, ORM, JPA, Hibernate, Docker und PostgreSQL“ weiterlesen

ETH-Kontostand via Web3j und Infura mit Java in 5 Schritten abfragen

Am 11. November letzten Jahres fürte der Ausfall von Infura dazu, dass viele zentrale Börsen die Abhebung von ETH und ERC20-Token gestoppt hatten. Zudem ließen sich Metamask, Uniswap und auch andere Anwendungen auf Ethereum nicht mehr nutzen. Infura scheint ein beliebter Dienstleister für Ethereum Nodes zu sein, auf den sich nicht nur kleinere Unternehmen und Projekte verlassen, sondern auch milliardenschwere Börsen wie Binance.

Für dieses Projekt soll dennoch mal die Infura-API verwendet werden, um den Kontostand einer ETH-Adresse zu ermitteln. Mit dem web3j Framework ist das auch in Java realisierbar. Hier der Architektur Aufbau:

Wir starten (wie immer) mit einem JUnit 5 Test: „ETH-Kontostand via Web3j und Infura mit Java in 5 Schritten abfragen“ weiterlesen

Smart-Contract Wrapper für Java mit web3j-maven-plugin erstellen


Es muss ja nicht immer remix sein, um ein Smart-Contract zu compilieren. Es geht auch wie oben dargestellt mit einem Maven-Plugin (oder Gradle) um mit Ethereum-Netzwerk zu interagieren. Also wie können Solidity Smart Contracts kompiliert und dafür eine Java-Wrapper-Klassen dafür generiert werden?

Wir nehmen als Beispiel mein bekannter Smart-Contract Gehirn.sol der den IQ auf der Blockchain festhalten kann und mit Solidity programmiert ist und speichern in in dem src/main/resources Verzeichnis.

Das Plugin wird mit mvn web3j:generate-sources gestartet und wie folgt in der pom.xml eingebunden: „Smart-Contract Wrapper für Java mit web3j-maven-plugin erstellen“ weiterlesen

de.wenzlaff.command.maven.plugin: Neue Version auf Maven Central für Java 11 veröffentlicht und das bei BTC >60k$ (Block 705403)

Das Maven Plugin zum ausführen von Linux Befehlen wurde nun auf Java 11 umgestellt und die Version nach Maven Central hochgeladen.

Wie hier beschrieben noch ein Quicktest mit der neuen Version und ein ls:

Ergebnis, sieht gut aus: „de.wenzlaff.command.maven.plugin: Neue Version auf Maven Central für Java 11 veröffentlicht und das bei BTC >60k$ (Block 705403)“ weiterlesen

Java Ethereum Wallet mit Web3j erstellen

Web3j ist ein sehr modularer und typsichere Library für Java und Android. Viele Module und Funktionen für das einfache arbeiten mit Smart-Contracts und Wallets auf der Ethereum-Blockchain (ETH), stehen bereit.

Hier nun ein kleines Beispiel, wie mit nur einer Java-Klasse und ein paar Zeilen Code ein eigenes File-Wallet im Json-Format erstellt werden kann. In einem weiteren Beitrag zeige ich dann, wie dieses File-Wallet in MetaMask importiert werden kann.

Folgende Abhängigkeiten sind in der pom.xml einzutragen, Web3j und die „alte“ (alt aber Apache) Json-Lib von Google, obwohl Web3j auch die Jackson Json Lib als transitive Abhängigkeit mitbringt. Es muss ja nicht immer Jackson sein 😉 „Java Ethereum Wallet mit Web3j erstellen“ weiterlesen

Zweizeiler REST HTTPClient am Beispiel von AirLabs für Planespotter

Ab Java 11 gibt es den HTTPClient im JDK der den REST Zugriff vereinfacht. Das ist mit einem Zweizeiler getan:

Den Response kann man mit dieser Methode auswerten: „Zweizeiler REST HTTPClient am Beispiel von AirLabs für Planespotter“ weiterlesen

Java: Array von Dubletten und null entfernen mit HashSet und zurück

Gesund oder Krank - Impfbeginn in Deutschland

Ergebnis: „Java: Array von Dubletten und null entfernen mit HashSet und zurück“ weiterlesen

Architektur mit archunit validieren

Mit automatischer Architektur validierung mit JUnit 5 Annotation @ArchTest von archunit kann leicht die Architektur vorgaben überprüft werden. Aber es kann auch leicht verhindert werden, das man z.B. System.out oder System.err verwendet. Oder das verhindert wird, das das interne Java Logging verwendet wird.

Was für mich auch wichtig ist, das der Logger immer LOG heißt, und nicht log oder logger.


Einfach diese JUnit-Test Klasse in alle Projekte einbinden. „Architektur mit archunit validieren“ weiterlesen

ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain

Gestern wurde ArchUnit in Version 0.18.0 veröffentlicht.

ArchUnit

Wenn das keine Grund ist mal zu zeigen, wie man eine Package-Abhängigkeit überprüfen kann.
Also wir wollen einen Test schreiben, der durchläuft wenn nur aus dem Package blockchain auf das Package be zugegriffen wird. Wie hier im UML Diagramm gezeigt:… „ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain“ weiterlesen

TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen

Hier ein neues Java-Programm TWProviders 1.0, das alle Sicherheitsprovider auf dem System (Raspberry Pi, Mac, Windows…) anzeigt. Mal so „just for fun“ programmiert, mal was anderes als Exchange-Lücken HAFNIUM – BSI ruft „IT-Bedrohungslage rot“. Es muss Java auf dem System installiert sein. Einfach das PrintProvider.class.zip (884 Byte) laden und das ZIP auspacken. Dann in dem Verzeichnis starten mit

java PrintProvider

Also das Programm laden, auspacken und starten:

Das sind z.B. die 12 von einem Raspberry Pi 4:

Mit diesm Programm kann nun auch leicht in einem Script oder in der Konsole nach Providern oder so gesucht werden, z.B. mit grep

java PrintProvider | grep Secure

Ergebnis:
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; PKCS12, JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)

Sollte kein Java vorhanden sein, kommt es zu dieser Fehlermeldung. „TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen“ weiterlesen

Kryptowährung: Wir erzeugen uns heute mal einen privaten Bitcoin Key mit Java bevor der BTC Kurs auf über 50000 Dollar springt


Es ist bei Bitcoin sehr wichtig das Konzept zu verstehen, das man keine Online Verbindung für das generieren einer Bitcoion Wallet Adresse benötigt.
Das geht komplett Offline. Und ohne separaten Server, eine Webseite oder einen besonderen Service. Es wird nur etwas Mathe benötigt. Mit Java sind nur ein paar Zeilen nötig.

1. privaten Key erzeugen, dazu brauchen wir nur einen guten Zufallsgenerator der uns 32 Byte erzeugen kann. Könnte mal auch auswürfeln.
2. validieren ob der Key gültig ist

Hier der dokumentierte Code: … „Kryptowährung: Wir erzeugen uns heute mal einen privaten Bitcoin Key mit Java bevor der BTC Kurs auf über 50000 Dollar springt“ weiterlesen

Bitcoin: Public Key hashen mit SHA-256 und dann RIPEMD-160

public key hash für bitcoin

Der public Key wird zunächst mit SHA-256 gehasht. Der Output dieser kryptografischen Hashfunktion wird dann mit RIPEMD-160 gehasht, einer anderen kryptografischen Hashfunktion, die als Output eine 160 Bit (20 Byte) lange Zahl erzeugt. Wir nennen diesen letzten Hash den public Key Hash (PKH). Wie hier im BPMN Flow dargestellt: … „Bitcoin: Public Key hashen mit SHA-256 und dann RIPEMD-160“ weiterlesen

Java Bitcoin: BIP39 Mnemonic Generierung mit Adressen mit Java auf einem Raspberry Pi in 1 Minute – Crypto BPMN

Wie kann man für Bitcoin die geheimen Wörter, private und public Key und Adressen mit Java auf einem Raspberry Pi generieren? Hier mal ein Beispiel. Zuerst ein BPMN für den Überblick wie es läuft.

Bitcoin, key, crypto

Das geht in 1 Minute, mit diesen drei Schritten auf der Komandozeile … „Java Bitcoin: BIP39 Mnemonic Generierung mit Adressen mit Java auf einem Raspberry Pi in 1 Minute – Crypto BPMN“ weiterlesen

Java: Ausgabe Methode aller im System bekannten Security Providers oder safety first

Wer mal alle Security Provider im System ausgeben will, kann diese Methode verwenden:

Ergebnis auf einem Test-System: „Java: Ausgabe Methode aller im System bekannten Security Providers oder safety first“ weiterlesen

Mal was anderes als COVID-19 Impfstoff BNT162b2: Maven install auf einem Raspberry Pi 4 B mit Beispielprojekt in 10 Minuten mit Archetype

Auf dem Rasberry Pi 4 ist ja default Java 11 installiert. Nun wollen wir mal schnell ein kleines Java Projekt mit Maven erstellen. Da ist schnell gemacht mit Archetype vom Maven.
Danke Dr.Kleinhirn.eu für die Bereitstellung der Mindmap

Also nur noch Maven 3.6.0 installieren mit: sudo apt-get install maven

Dann checken ob alles richtig installiert ist mit: mvn -version

Dann in einem leeren Verzeichnis „Mal was anderes als COVID-19 Impfstoff BNT162b2: Maven install auf einem Raspberry Pi 4 B mit Beispielprojekt in 10 Minuten mit Archetype“ weiterlesen

Docker Container mit REST Service in 5 min mit CO2-Ampel Service erstellen

Wer noch 5 Minuten hat, kann das Beispielprojekt mit der CO2-Ampel auch gleich in einem Docker Container laufen lassen. Vorraussetzung Docker läuft und das Beispielprojekt wurde installiert.

Dann sind, dank der automatisch generierten Docker-Files nur diese 3 Schritte im Verzeichnis der root pom nötig:

Schon läuft der CO2 Service http://localhost:8080/v1/rest/co2 und CO2-Ampel über http://localhost:8080/v1/rest/co2ampel

Cool. Und hier das Dockerfile … „Docker Container mit REST Service in 5 min mit CO2-Ampel Service erstellen“ weiterlesen

Weil heute Sonntag ist: Java CO2 MQTT Client

Weil heute Sonntag ist. „Freut euch immer„! Nun ein kleiner Java CO2 MQTT Client um auch auf allen Betriebssystemen mit Java die CO2 Daten zu empfangen. Nicht nur für den Raspberry Pi auch Mac und Windows (ungetestet;-)).

Das selbstausführende JAR laden (siehe unten) und starten mit:

java -jar TWCo2Monitor-0.0.1-SNAPSHOT-jar-with-dependencies.jar [PI-Rechner Name/Adresse]

Hier mal eine Ausgabe auf einem Raspberry Pi W Zero:

Der MQTT Client besteht nur aus ein paar Zeilen Java Code: „Weil heute Sonntag ist: Java CO2 MQTT Client“ weiterlesen

Wie können mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?

Das Robert Koch Institut (RKI) liefert für Deutschland aktuelle Corona-Fall-Zahlen auf dieser Webseite:

https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html

in einer schönen Tabelle die wir mit Jsoup abfragen wollen.

Robert Koch Institut - Corona in Deutschland

Wir schauen uns erst einmal die Stuktur der Seite an. D.h. wir markieren z.B. Niedersachsen und öffnen das rechte Kontexmenü und klicken auf „Element untersuchen“. Nun wird unten der HTML-Quelltext angezeigt. Wir sehen das die Tabelle, an der ersten stelle steht, und mit den tr und td Tags erstellt ist. Das müssen wir für die Analyse wissen.

Hier nun der kommentierte Beispiel-Code: „Wie können mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?“ weiterlesen