Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JUG Oberpfalz: Java on Tracks

Dirk Weil
February 08, 2023

JUG Oberpfalz: Java on Tracks

Slides zum Modellbahn/Java/JEE/Quarkus/MicroProfile/etc-Vortrag von Dirk Weil am 08.02.2023

Dirk Weil

February 08, 2023
Tweet

More Decks by Dirk Weil

Other Decks in Programming

Transcript

  1. Java on Tracks Modellbahnsteuerung mit Quarkus, JEE, MicroProfile und self-contained

    Systems JUG Oberpfalz, 08.02.2023 Dirk Weil, GEDOPLAN GmbH
  2. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Consulting, coaching,

    concepts, reviews, development GEDOPLAN IT Training Trainings in Berlin, Bielefeld, on-site JEE since 1999 Speaker and author Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 2 gedoplan.de
  3. Darum geht‘s Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile

    und self-contained Systems 3 gedoplan.de Jakarta EE Quarkus Microservices Modellbahn Digitalsteuerung WSL2 als Entwicklungsumgebung Java und Comm Ports WSL2 (+Docker) und USB Java-Entwickler und JavaScript
  4. Die Ausgangslage Job Dachboden gedoplan.de Java on Tracks - Modellbahnsteuerung

    mit JEE, MicroProfile und self-contained Systems 4
  5. Aufgaben von V5T11 Stellwerk Führerstand gedoplan.de Java on Tracks -

    Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 6
  6. Technische Basis: Digitalsteuerung Selectrix Keine getrennten Stromkreise Fahrspannung mit aufgeprägtem

    Digitalsignal Loks enthalten Decoder Fahrstufe Richtung Fahrlicht Zusatzfunktionen (Sound etc.) Systeme meist multiprokollfähig SX (Selectrix) DCC (NMRA-Standard) MM (Motorola/Märklin) Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 7 gedoplan.de
  7. Technische Basis: Digitalsteuerung Selectrix Gleise werden mit Besetztmeldern überwacht Weichen

    und Signale werden mit Funktionsdecodern gesteuert Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 8 gedoplan.de 1 Byte 8 Gleise 1 Byte 8 Weichen / Signale
  8. Legacy-Anwendung Java-EE-6 JBoss 7 Monolith GEDOPLAN Code Camp 2012 Java

    on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 9 gedoplan.de
  9. Domäne Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und

    self-contained Systems 10 gedoplan.de Gleis Lok Weiche Signal Lokdecoder Funktionsdecoder Besetztmelder Fahrstraße Gleisverbindung
  10. Fahrstraßen- verwaltung Fahrzeug- verwaltung Statusverwaltung Domäne Java on Tracks -

    Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 11 gedoplan.de Lok Gleis Weiche Signal Lokdecoder Funktionsdecoder Besetztmelder Fahrstraße Gleisverbindung Lok Gleis Weiche Signal Lokdecoder Funktionsdecoder Besetztmelder Fahrstraße Gleisverbindung Gleis Weiche Signal Lokdecoder , Bounded Contexts
  11. Microservices, Self-contained Systems Microservice Modularisierungsansatz hohe innere Kohärenz geringe äußere

    Kopplung passt gut zu Bounded Context "Micro" nicht weiter spezifiziert SCS Autonome (Teil-)Anwendung Alleine lauffähig (Vorsicht bei synchroner Kommunikation!) Eigene Datenhaltung Eigene UI Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 12 gedoplan.de
  12. v5t11-SCSs Teilanwendungen als SCSs Quarkus Jakarta EE + MicroProfile Persistenz

    mit JPA, Hibernate, PostgreSQL Synchrone Kommunikation via REST API und MP Rest Client Asynchrone Kommunikation mit MP Reactive Messaging, Kafka Web-UI mittels JSF (!) Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 13 gedoplan.de
  13. Einschub: Quarkus „Spring Boot für JEE-Entwickler“ JPA, CDI, REST, JSF,

    … MicroProfile (fast) ohne Umlernen Stark wachsendes Ökosystem, u. a. alle gängigen DBs Messaging mit Kafka, AMQP, … OIDC mit Keycloak Spring API Flüssige Entwicklung Dev Mode (Hot Reload – auch bei Multimodul-Projekten!) Dev Services (DB, Broker etc. automatisch als Container) Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 14 gedoplan.de
  14. Einschub: Java-Entwicklung in Windows Java: „OS? Ist mir egal!“ Aber:

    Windows ist träge Alternative: WSL2 Z. B. Ubuntu im Windows cmd, PowerShell bash, zsh mit GUI! Java, Maven etc. per SDKMAN! VSCode mit WSL-Extension IntelliJ im WSL installieren, nicht auf Windows mit WSL-Zugriff! Port Forwarding für localhost Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 15 gedoplan.de
  15. Statusverwaltung v5t11-status Anbindung Digitalzentrale mit serieller Schnittstelle / USB →

    fazecast.github.io/jSerialComm/ Abstraktion Selectrix-"Bytes" → Gleise, Signale, Weichen, … Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 16 gedoplan.de 1 0 0 1 0 0 0 1
  16. Einschub: USB Ports in WSL2 (und Docker Containern) WSL2 (und

    Docker Container): keine USB Ports Lösung: usbip USB-Server für diverse Systeme verfügbar, z. B. Windows USB Ports auflisten und an WSL2-Distro binden Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 17 gedoplan.de C:\> winget install --interactive --exact dorssel.usbipd-win C:\> usbipd list Connected: BUSID VID:PID DEVICE 2-6 04f2:b75c FHD Webcam, IR Camera 5-2 04d8:000a Serielles USB-Gerät (COM4) … $ sudo usbip attach -r $IP_OF_USB_SERVER -b 5-2 $ lsusb Bus 001 Device 005: ID 04d8:000a Microchip Techno
  17. Statusverwaltung v5t11-status REST-API für Signale etc. Web-UI für Administration und

    Debugging Demo! Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 18 gedoplan.de @Path("signal") @Dependent public class SignalResource { @PUT @Path("{bereich}/{name}") @Consumes(MediaType.MEDIA_TYPE_WILDCARD) public void putSignalStellung(@PathParam("bereich") String
  18. Fahrstraßenverwaltung v5t11-fahrstrassen Reservieren und Freigeben von Fahrstraßen Fahrstraßenauflösung bei/nach Zugdurchfahrt

    Vorsignalautomatik Ankündigung nächstes Hauptsignal im Fahrweg Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 19 gedoplan.de
  19. Fahrstraßenverwaltung v5t11-fahrstrassen MP Rest Client zum Stellen von Signalen etc.

    MP Reactive Messaging für asynchrone Änderungsmeldungen Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 20 gedoplan.de @RegisterRestClient(configKey = "v5t11.status") public interface StatusGateway { @PUT @Path("signal/{bereich}/{name}") @Consumes(MediaType.TEXT_PLAIN) void signalStellen(@PathParam("bereich") String bereic @Incoming("status") void statusChanged(String json) { … @Inject @Channel("status") Emitter<String> statusEmitter; public void publish(Gleis gleis) { String json = … this.statusEmitter.send(json);
  20. Fahrzeugverwaltung v5t11-fahrzeuge MP Rest Client und MP Reactive Messaging analog

    Web-UI zur Fahrzeugkonfiguration und Steuerung mit JSF Demo! Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 21 gedoplan.de
  21. Visualisierung v5t11-stellwerk JSF-Anwendung mit Aktualisierung via Websocket MP Rest Client

    und MP Reactive Messaging wie zuvor Demo! Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 22 gedoplan.de
  22. Weitere Planung Fahrzeug-Verfolgung Welches Fahrzeug steht/fährt wo? Teilautomatisierung Automatisches Abstellen

    im Schattenbahnhof Ausblenden der Geräusche in unsichtbaren Abschnitten Betrieb als Docker-Container in Kubernetes Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 23 gedoplan.de
  23. Erfahrungen, Rückblick Erste EE-Version war ein Monolith Java EE 6,

    JBoss 7 Aufsplittung in SCSs ☺ überschaubare Einheiten ☺ Entkopplung der Datenmodelle ☺ zügiges (Re-) Deployment  teilredundante Daten  Kommunikationsaufwand Quarkus ☺ schnelle Entwicklungszyklen ☺ schnell wachsendes Ökosystem MicroProfile ☺ simple und leistungsfähige Bausteine (Config, Rest Client, …) ☺ leichte Einbindung von Message Brokern (Kafka, AMQP, MQTT, …)  Reactive Messaging abstrahiert nicht weit genug (z. B. Nutzlast) Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 24 gedoplan.de
  24. … und was ist mit dem "echten Leben"? Steuerung eines

    fahrerlosen Transportsystems (FTS) gedoplan.de Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 25
  25. More github.com/dirkweil/v5t11 Projekt www.gedoplan.de Trainings in Berlin, Bielefeld, inhouse www.gedoplan.de

    Reviews, Coaching, … Blog  [email protected] @dirkweil Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 26 gedoplan.de