Ein schönes 5 Minuten Video und Kommentare sind auf heise.de zu finden.
Wie kann Gradle auf einem Raspberry Pi installiert und ein Beispielprojekt in 10 min mit Javadoc, Test und Reports angelegt und gebaut werden?
Manchmal braucht man Gradle. Wie kann das auf einem Raspberry Pi installiert werden. Das geht in 10 Minuten mit:
|
1 2 3 4 5 |
sudo apt-get update sudo apt-get upgrade sudo apt-get install gradle # Version checken gradle -v |
Ok, das ist nicht die aktuellste 4.6 Version aber man kann schon mal loslegen.
Dann wollen wir auch gleich mal ein Testprojekt anlegen. „Wie kann Gradle auf einem Raspberry Pi installiert und ein Beispielprojekt in 10 min mit Javadoc, Test und Reports angelegt und gebaut werden?“ weiterlesen
Eclipse Oxygen.2 (4.7.2) Release vor ein paar Tagen veröffentlicht
Es muss ja nicht immer ein Soft Link sein: Hard Link
Mit der java.nio Lib können leicht Links auf Dateien erstellt werden. Es muss ja nicht immer ein Soft-Link sein.
Hier mal ein JUnit Beispiel für Java, zur Erzeugung eines Hard-Link, der schnell mit Files.createLink erzeugt werden kann: „Es muss ja nicht immer ein Soft Link sein: Hard Link“ weiterlesen
JUnit 5: Class Assumptions vs. Assertions – org.junit.jupiter.api – Behauptungen – Annahme – założenia – допущения -假設 – الافتراضات
In JUnit 5 gibt es im Package org.junit.jupiter.api die Klasse Assumptions (Annahme).
Die Assumptions Klasse ist eine Sammlung von Util-Methoden. Im Gegensatz zu den Assertions (Behauptungen) wird die Assumptions im Fehlerfall nicht mit einem failure (graues Kreuz) sondern mit einem Error (rot) markiert.
Deshalb ist es manchmal gewünscht, wenn z.B. eine Bestimmte Umgebung nicht vorhanden ist, das dann der Test nicht als Error (rot) sondern mit einen grauen Kreuz (Failures) markiert wird. Dann sollte man also die org.junit.jupiter.api.Assertions verwenden wie diese Testklasse zeigt:
Hier der Quellcode „JUnit 5: Class Assumptions vs. Assertions – org.junit.jupiter.api – Behauptungen – Annahme – założenia – допущения -假設 – الافتراضات“ weiterlesen
Wie kann ein XSD-Schema aus Java POJOs mit „Java Architecture for XML Binding“ generiert werden?
Wie kann man aus einem Pojo ein XSD Schema für zukünftige Validierungen generieren?
Das geht ganz einfach mit JAXB und Eclipse Oxygen.1A.
Wir erstellen dazu erst einmal zwei Klassen, Mindmap und Autor mit ein paar Eigenschaften. Optional annotieren wir die Mindmap Klasse mit @XmlRootElement und die Autor Klasse mit @XmlType. „Wie kann ein XSD-Schema aus Java POJOs mit „Java Architecture for XML Binding“ generiert werden?“ weiterlesen
Wie können Json Dateien in Java Objekte eingelesen werden mit google gson?
Wie kann eine Json Datei in ein Java Objekt eingelesen werden? Es kommt doch hin und wieder mal vor, das man eine Json Datei hat, die man einlesen will. Man könnte es generisch einlesen. Oder man erzeugt sich die nötigen Java BEs bzw. Pojos und liest die Datei dann ein. Hier mal ein Beispiel mit gson zum einlesen in die zuvor erzeugten Java Klassen.
Es muss in der pom.xml diese Abhängigkeit ergänzt werden:
|
1 2 3 4 5 6 |
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.7</version> <scope>compile</scope> </dependency> |
Z.B. diese aircraft.json Datei. Die Felder werden hier beschrieben. Die Datei wird vom Dump1090 Server alle paar Sekunden aktualisert.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "now" : 1477853643.7, "messages" : 45918404, "aircraft" : [ {"hex":"471f87","altitude":38025,"vert_rate":-64,"track":287,"speed":393,"mlat":[],"tisb":[],"messages":5,"seen":0.1,"rssi":-35.3}, {"hex":"48520c","squawk":"6441","altitude":38000,"mlat":[],"tisb":[],"messages":26,"seen":7.2,"rssi":-35.0}, {"hex":"3c644a","squawk":"3537","flight":"DLH2TR ","lat":52.605377,"lon":10.574875,"nucp":7,"seen_pos":13.9,"altitude":38025,"vert_rate":0,"track":191,"speed":488,"category":"A0","mlat":[],"tisb":[],"messages":306,"seen":3.8,"rssi":-32.4}, {"hex":"4ca27a","mlat":[],"tisb":[],"messages":1654,"seen":121.9,"rssi":-35.3}, {"hex":"896184","mlat":[],"tisb":[],"messages":4657,"seen":295.6,"rssi":-35.7}, {"hex":"4ca2fe","altitude":37000,"mlat":[],"tisb":[],"messages":7085,"seen":3.6,"rssi":-35.6} ] } |
Wir schauen uns einfach die Struktur an, und erzeugen Java Klasse mit genau den Feldnamen, das ist wichtig da die Felder dann automatisch per reflection eingelesen werden. „Wie können Json Dateien in Java Objekte eingelesen werden mit google gson?“ weiterlesen
Automatische Überprüfung auf Sicherheitslücken im Java Code auf Basis der Internationalen National Vulnerability Database (NVD)
Sicherheit in Java-Projekten. Datenlecks in Java-Code entdecken. Reports mit bekannten Sicherheitslecks können leicht erstellt werden. Hier mal ein Beispiel Report im HTML Format:
Grundlage bildet die National Vulnerability Database (NVD) Datenbank für Sicherheitslücken, die vom National Institute of Standards and Technology (NIST) gepflegt wird. Wie können solche Reports erstellt werden?
Einfach in der Maven pom.xml das folgende Plugin DependencyCheck ergänzen: „Automatische Überprüfung auf Sicherheitslücken im Java Code auf Basis der Internationalen National Vulnerability Database (NVD)“ weiterlesen
Eclipse Oxygen.1A PlugIn SortIt zum schnellen sortieren nach Länge, Buchstaben oder Nummern
Sortierung von Text ist doch hin und wieder mal nötig. Das Eclipse Plugin SortIt ist zwar schon älter, vom 11.8.2016, aber es läuft immer noch mit der aktuellen Eclipse Oxygen.1A Version. Es kann wie alle anderen Plugins installiert werden.

Die Updateseite die unter dem Menü: Help->Install new Software eingetragen werden muss lautet:
|
1 |
http://www.stateofflow.com/UpdateSite/ |
Dann durch den Installationsvorgang gehen: „Eclipse Oxygen.1A PlugIn SortIt zum schnellen sortieren nach Länge, Buchstaben oder Nummern“ weiterlesen
Wie kann ein JEE 8 Projekt mit GlassFish v5 in Docker mit Eclipse Oxygen in 5 Minuten mit Archetyp erstellt werden?
Wer mal eben schnell ein JEE 8 Projekt mit GlassFish Server in einem Docker Kontainer erstellen will, kann das leicht mit dem Archtype com.airhacks von Adam Bien tun.
Voraussetzung ist Eclipse Oxygen (Mindmap) mit Java 1.8 und Docker.
Was ist zu tun?
1. Ein neues Mavenprojekt starten über das Menü: New – Other – Maven Projekt … „Wie kann ein JEE 8 Projekt mit GlassFish v5 in Docker mit Eclipse Oxygen in 5 Minuten mit Archetyp erstellt werden?“ weiterlesen
Soeben wurde die finale Version des JDK 9 veröffentlicht. Endlich!
Ab jetzt gibt es das Java 9 JDK zum Downloaden mit Jigsaw, Erweiterung der Stream-API, Kommandozeilenanwendung JShell, Neue Collection Factory-Methoden, usw. … und Oracle plant auch kürzere Releasezyklen (6 Monate).
Also, Archive laden und installieren:
Quicktest:
|
1 2 3 4 5 6 7 |
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/bin/java -version # Ergebnis java version "9" Java(TM) SE Runtime Environment (build 9+181) Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) |
Feier! Freude! Und das sogar im Urlaub …
Quicktest: JDeps (Java Dependency Analysis Tool)
Mit Java 8 wird im bin Verzeichnis auch das JDeps Tool ausgeliefert. Dieses Tool ermöglicht eine statische Kodeanalyse von der Kommandozeile. Es kann die statischen Abhängigkeiten von Klassen und Jars aufzeigen und auch eine Abhängigkeitsgraphen generieren. So ist man dann für Java 9 vorbereitet.
Das wollen wir einmal ausprobieren. Dazu hole ich mir für mein Testprojekt erst einmal alle Jars und untersuche dann das JUnit 4.12.
Also in der pom.xml folgendes Plugin ergänze und ein „mvn package“ ausführen: „Quicktest: JDeps (Java Dependency Analysis Tool)“ weiterlesen
JUnit 5 @ParameterizedTest mit @ValueSource oder 3 Gründe warum man keine JUnit Tests schreiben sollte!
In JUnit 5 gibt es nun die Möglichkeit, Testmethoden mit Parametern ausszuführen. Anstatt der @Test Annnotation verwendet man die @ParameterizedTest. Nun braucht man noch eine Datenquelle mit @ValueSource.
Diese Klassen liegen in: „JUnit 5 @ParameterizedTest mit @ValueSource oder 3 Gründe warum man keine JUnit Tests schreiben sollte!“ weiterlesen
חזרות Wiederholungen mit JUnit 5: @RepeatedTest
Manchmal will man eine Testmethode öfter ausführen. Das ist ja leicht mit einer Schleife möglich.
JUnit 5 bietet nun aber eine schöne Annotation an @RepeatedTest. Mit der kann leicht die Anzahl der Wiederholungen angegeben werden. Über die Methodenparameter TestInfo und RepetitionInfo kann zur Laufzeit auf die Klassennamen, Methodennamen und aktuellen runden Wert zugegriffen werden. Hier mal ein Beispiel:

„חזרות Wiederholungen mit JUnit 5: @RepeatedTest“ weiterlesen
Eclipse Oxygen veröffentlicht mit Java 9 previews
Eclipse Oxygen veröffentlicht. Dann mal hier den Download starten …
Mit dem Installer geht die Installation einfach: „Eclipse Oxygen veröffentlicht mit Java 9 previews“ weiterlesen
Flughöhenanalyse mit Raspberry Pi und DUMP1090
Hier mal wieder eine Flughöhenanalyse mit Raspberry Pi und DUMP1090. Hier auf dem Blog hatte ich ja schon beschrieben, wie es mit Java über OpenSky erzeugt werden kann.

Hier die Datenbasis „Flughöhenanalyse mit Raspberry Pi und DUMP1090“ weiterlesen
Universally Unique Identifier (UUID) bzw. Globally Unique IDentifier (GUID) mit Java erzeugen
Ein Universally Unique Identifier (UUID) ist ein Standard für Identifikatoren. Wer eindeutige einmalige IDs braucht, kann die in Java einfach erzeugen. Es gibt da ab 1.5 die Klasse UUID mit der man einfach diese IDs erzeugen kann.
Die RFC 4122 beschreibt den Aufbau und den Algorithmus für die Erzeugung. Das ganze ist schon ziemlich sicher, da die SecureRandom Klasse in Java verwendet wird.
Habe mich gefragt, ob die auch wirklich eindeutig sind. Dafür mal eben einen kleinen JUnit Test geschrieben der 1 Millionen UUIDs erzeugt und testet ob zwei gleiche erzeugt werden. Nach 4889,556 Sekunden das Ergebnis:
Hier die Testklasse:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package de.wenzlaff.tools; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; import java.util.UUID; import org.junit.Test; public class TestUuid { private static final int MAX = 1000000; @Test public void testIdGen() { List<String> c = new ArrayList<>(); for (int i = 0; i < MAX; i++) { String id = UUID.randomUUID().toString(); if (c.contains(id)) { fail("Doppelte ID " + id + " generiert!"); } c.add(id); System.out.println(id); } } } |
Die CPU war schon teilweise zu 100% ausgelastet, zumindestens einer der acht Kerne:
Ein UUID in ihrer Normalform sieht beispielsweise so aus: „Universally Unique Identifier (UUID) bzw. Globally Unique IDentifier (GUID) mit Java erzeugen“ weiterlesen
Echtzeit Auswertung aller Flugzeuge weltweit في جميع أنحاء العالم(ca. 5000) ermittelt mit Java.
Mit diesem einfachen Java-Programm kann diese Auswertung ohne Account erstellt werden:

„Echtzeit Auswertung aller Flugzeuge weltweit في جميع أنحاء العالم(ca. 5000) ermittelt mit Java.“ weiterlesen
In welcher Höhe fliegen Flugzeuge?
Mich hat mal die Frage interessiert, in welcher Höhe die meisten Flugzeuge aktuell so fliegen.
Also habe ich mal ein kleines Java Programm geschrieben, welches in Echtzeit die Daten von The OpenSky Network abfragen kann. Es werden also mal alle Flugzeuge die Transponser haben und von The OpenSky Network erfasst sind berücksichtigt.
Hier das Ergebnis von 3048 Flugzeugen:
Das ist die vom Programm ermittelte Datenbasis: „In welcher Höhe fliegen Flugzeuge?“ weiterlesen
Mit dem Raspberry Pi den Java Class File Disassembler (javap) aufrufen
Manchmal will man sehen, was alles so in einer compilierten Java Datei steckt. Nicht immer hat man den Quelltext. Auch für die Fehlersuche ist ein Disassembler mal ganz gut.
In jedem JDK ist auch ein Disassembler javap dabei. Denn wollen wir nun einmal auf eine unbekannte Java Class Datei loslassen, um zu sehen, was es so zu sehen gibt.
Zuerst loggen wir uns auf die Kommandozeile eines Raspberry Pi ein, auf dem ein Java JDK installiert ist. Ob Java installiert ist kann mit
|
1 |
java -version |
getestet werden. Wenn dort eine Versionsangabe geliefert wird, ist alles ok.
Dann legen wir erst mal ein Testverzeichnis an und wechsel in das Verzeichnis:
|
1 2 |
mkdir java-test cd java-test |
Dann holen wir uns in das Verzeichnis eine unbekannte Flugzeug.class Datei (der Quellcode ist hier zu finden):
|
1 |
wget http://blog.wenzlaff.de/wp-content/uploads/2017/01/Flugzeug.class |
Diese Datei wollen wir nun disassemblieren, mit
|
1 |
javap Flugzeug.class |
Schon bekommen wir alle gewünschten Informationen:
Nun schauen wir uns mal alle Möglichkeiten an: „Mit dem Raspberry Pi den Java Class File Disassembler (javap) aufrufen“ weiterlesen















