• Spring Data JPA - Schweizer Taschenmesser für den Datenzugriff - Julius Mischok

    Spring Data JPA ist seit vielen Jahren Standard in vielen Applikationen.

    Die Konzepte von JPA werden konsequent und spring-getreu weiter vereinfacht und bieten eine sehr gute Developer-Experience. Insbesondere für Einsteiger ist es aber nicht immer einfach festzustellen, welcher Weg des Datenzugriffs sich im konkreten Fall anbietet:

    Reichen mir die Repository Interface Methoden oder benötige ich die Criteria API?

    Gibt es überhaupt eine Möglichkeit, meine Anfrage per Code zu formulieren oder muss ich doch JPQL oder sogar eine native Query verwenden?

    Und vor allem: Wie setze ich all das um?

    Neben der Vorstellung verschiedener Zugriffsmöglichkeiten werden Entscheidungsregeln diskutiert um im konkreten Anwendungsfall die passende Lösung zu identifizieren.

    Julius Mischok ist CTO der Mischok GmbH in Augsburg. Seine Schwerpunkte sind Prozessentwicklung und das coachen und unterstützen der Entwicklungs-Teams. Derzeit liegt der Fokus seiner Arbeit darauf, herauszufinden, wie Softwareproduktion mit einem maximalem Wertgewinn für den Kunden aussehen kann. Er studierte Mathematik und programmiert seit fast 20 Jahren Java. Mit seiner Expertise arbeitete er in Projekten für BMW, Audi, Hilti, Porsche, Allianz, Bosch und vielen anderen.

    Checkt auch den Host der JUG Augsburg: www.mischok.de und den Spring Boot Blog: www.spring-boot-blog.de

    Du willst Programmieren lernen? Schau bei der Mischok Academy vorbei: www.mischok.academy

  • Neuronale Netze in der Praxis (mit Pytorch) - mit Ivan Iliash

    Online-Event

    ACHTUNG: Leider hat sich der Link für diese JUG geändert!

    Neuer Link: https://us02web.zoom.us/j/81018373342

    Neuronale Netze sind in den letzen Jahren in Forschung und Industrie sehr beliebt geworden.
    Woran liegt dieser rasante Anstieg und welche Anwendungsbereiche sind besonders gut dafür geeignet?
    Und wie funktionieren Neuronale Netze überhaupt?

    Diese Fragen versuchen wir in der kurzen Zeit so gut wie möglich zu klären.
    Nach einer oberflächlichen mathematischen Einführung, wird dazu mit Pytorch (python library) ein einfacher Anwendungsfall live demonstriert.

    Ivan studiert seinen MSc. Informatik mit Schwerpunkt Machine Learning an der TU München und arbeitet als Werkstudent bei Mischok.

    Sein Wissen gibt er schon immer gerne weiter. Ob als Tutor in der Uni, in der Entwicklung bei Mischok oder heute in der Java User Group.

  • Java – von 11 zu 17 in 60 Minuten mit Michael Vitz

    Online-Event

    Hier noch der Link: https://us02web.zoom.us/j/84453298130

    Seit September gibt es mit Java 17 nach drei Jahren ein neues Release mit Long-Term-Support.

    Obwohl die Möglichkeit bestand, nach Java 11, alle sechs Monate auf das jeweils nächste Release zu migrieren, haben viele auf genau dieses neue LTS-Release gewartet.

    Bei einem Wechsel kommen jetzt natürlich alle neuen Features der letzten drei Jahre zusammen. Darum wollen wir uns in diesen 60 Minuten die Zeit nehmen, um uns die, meiner Meinung nach, wichtigsten Features gemeinsam anzuschauen.

    Michael Vitz verfügt über mehr als zehn Jahre Erfahrung in der Entwicklung, Wartung und im Betrieb von Anwendungen auf der JVM.

    Als Senior Consultant bei INNOQ hilft er Kunden, wartbare und wertschaffende Software zu entwickeln und zu betreiben.

    Daneben bringt er sich in Open-Source-Projekten ein, schreibt Fachartikel, hält Vorträge und ist seit 2021 Java Champion.

    3
  • Quo Vadis JVM? Funktional coden in Java, Scala und Kotlin - Jerat & Pfleiderer

    Die Bedeutung funktionaler Programmierkonzepte nimmt im Entwickleralltag immer weiter zu. Spätestens seit Java 8 sind funktionale Konstrukte zunehmend präsent. Was früher noch als "zu akademisch" oder "nice-to-have" abgestempelt wurde, bietet heute in der Praxis unverzichtbare Mehrwerte. Unveränderliche Datenstrukturen, Funktionen höherer Ordnung, Funktionskomposition und weiterführende Konzepte fördern Testbarkeit, Modularität und Wiederverwendbarkeit. Das sind alles unbestreitbare Kriterien für sauberen Code.

    Die Erfahrung zeigt, dass es oftmals an der praktischen Erfahrung mit funktionalen Pattern fehlt, um diese an geeigneten Stellen korrekt zu verwenden. Auch fällt es vielen Entwicklern anfangs schwer, sich selbst von den bekannten imperativen Mustern zu lösen. Dahinter stecken eingefahrene Denkmuster, die erst einmal überwunden werden müssen. Natürlich fallen auch initiale Lernaufwände an. Denn plötzlich wird die Bedeutung von seiteneffektfreier Programmierung und referentieller Transparenz relevant. Vor dieser ersten Lernhürde schrecken viele Entwickler zu Unrecht zurück. Die Belohnung ist eleganter und prägnanter Code, der sich leichter warten lässt.

    In dieser Session lernen die Teilnehmer verschiedene typische Pattern aus der funktionalen Programmierung kennen. Der Fokus liegt darauf, den Nutzen dieser Pattern zur praktischen Verwendung zu vermitteln. Für die Code-Beispiele wurden die beiden JVM-Programmiersprachen Kotlin und Scala gewählt. Jedoch können Entwickler in jeder Sprache unmittelbar von den vorgestellten Konzepten profitieren.

    Florian Pfleiderer beschäftigt sich als Senior Consultant bei Digital Frontiers mit agiler Software-Entwicklung. Seine Kunden berät er in den Bereichen Architektur, Microservices und Craftsmanship.

    Benedikt Jerat ist als Consultant für Digital Frontiers tätig. Seine Schwerpunkte liegen dabei auf der Softwareentwicklung im Scala-, Java- und Spring-Umfeld mit Fokus auf funktionaler Programmierung.

    Unsere Speaker: www.digitalfrontiers.de/
    Host: www.mischok.de
    Programmieren lernen: www.mischok.academy
    Spring Boot blog: www.spring-boot-blog.de
    Digitalisierung: go-digital.mischok.de

    1
  • Neues von microstream - Markus Kett

    Benötigt einen Veranstaltungsort

    Link zum Talk:
    https://microstream.youcanbook.me/zoom/NRVA-IBCZ-DDAB

    MicroStream ist die erste Java Persistence (Engine), mit der man beliebige Java Objekt-Graphen oder einzelne Subgraphen in einer beliebigen Storage-Lösung nativ speichern kann. Nativ bedeutet, dass der Objekt-Graph so wie er im RAM von der JVM gehalten wird, persistent gespeichert wird. Der MicroStream Ansatz unterscheidet sich fundamental vom traditionellen RDBMS/NoSQL DB-Server Programmiermodell:

    1. nur noch 1 Datenmodell: Java-Klassen ohne Abhängigkeiten (POJOs)

    2. kein DB-spezifisches Datenmodell mehr (Tables, Column-Store, JSON, Key-Value, DB-spezifisches Graph-/Object-Modell) - welche zu Objekt-Graphen, die wir in Java verwenden inkompatibel sind

    3. überhaupt keine Mappings mehr

    4. keine DB-spezifische Query Language mehr, keine klassischen Selects mehr, einfach nur Getter-Aufrufe

    Objekt-Graphen im RAM lassen sich als superschnelle Java In-Memory Datenbank nutzen. Dabei ist der Objekt-Graph eine echte Multi-Model-Data-Structure, da beliebige Java-Typen wie Collections genutzt werden können. Queries: Mit Java Streams und GraphQL lassen sich Objekt-Graphen in nur Mikrosekunden durchsuchen und die Suche sogar parallelisieren. Das ermöglicht bis zu unglaubliche 1000 Mal schnellere Suchergebnisse als vergleichbare JPA-Queries und ist sogar bis zu 100 Mal schneller als das Lesen von Objekten aus einem lokalen Cache. Zusätzliche Caching-Frameworks wie EHCache sind damit ebenfalls überflüssig. Das Endergebnis ist eine ultraschnelle Pure Java In-memory Datenbank-Applikation oder Microservice mit ultraschneller Persistenz. MicroStream selbst ist eine kleine Java API, die in beliebige Java-Projekte via Maven eingebunden wird und auf dem Server, Desktops, in Container, in GraalVM Native-Images und auch auf Android benutzt werden kann.

    MicroStream richtet sich an Java Entwickler, die hoch performante Datenbank-Applikationen oder Microservices mit eigener Persistenz entwickeln wollen und eine ultraschnelle, leichtgewichtige, einfach implementierbare, Pure-Java Alternative zu JPA/ORM-Frameworks wie Hibernate sowie zu heutigen NoSQL-Ansätzen suchen.

    MicroStream ist bereits seit über 5 Jahren im Produktiv-Einsatz u.a. bei der Allianz SE in über 30 Ländern weltweit. 2019 wirde die erste freie Version von MicroStream veröffentlicht. Mit dem nächsten Major-Release wird MicroStream Open-Source und in Kürze Bestandteil von Helidon, Open Liberty und anderen Microservice-Frameworks.

    Checkt auch den Host der JUG Augsburg: www.mischok.de und den Spring Boot Blog: www.spring-boot-blog.de

    Du willst Programmieren lernen? Schau bei der Mischok Academy vorbei: www.mischok.academy

  • AdoptOpenJDK – was ist das eigentlich? - Hendrik Ebbers

    Online-Event

    In den letzten zwei Jahren gingen bzgl. der neuen Java Roadmap und der geänderten Lizenzbestimmungen von Oracle viele Gerüchte und Fragen durch die Java-Community. Heute kann man sich nicht mehr einfach seine Java Runtime bei Oracle runterladen und auf den eigenen Firmenservern nutzen, sondern muss zwischen verschiedenen Providern wählen. Einer dieser Runtime-Anbieter ist AdoptOpenJDK. Aber wer bzw. was verbirgt sich eigentlich hinter AdoptOpenJDK und wie unterscheiden sich diese Java-Distributionen und Lizenzen von denen anderer Anbieter? Mit bereits über 100 Millionen Downloads ist auf jeden Fall klar, dass wir es hier nicht mit einem Nischenprodukt zu tun haben. Als Mitglied des TSC von AdoptOpenJDK will ich in diesem Talk einen Überblick zur Entstehung und Intention von AdoptOpenJDK geben und zeigen, wie hier ein großes communitybasiertes Projekt zur kostenlosen Weiternutzung von Java entstanden ist. Natürlich wird auch auf Fragen zum Thema Security und Zukunftssicherheit von AdoptOpenJDK eingegangen werden.

    Checkt auch den Host der JUG Augsburg: www.mischok.de und den Spring Boot Blog: www.spring-boot-blog.de

    Du willst Programmieren lernen? Schau bei der Mischok Academy vorbei: www.mischok.academy

  • Reinforcement Learning - Ein kurze Einführung mit Tobias Steidle

    Reinforcement Learning ist ein Teilbereich im Machine Learning Umfeld.
    Dabei lernt ein Agent die beste Aktion für eine Situation, ohne ihm vorher eine Lösung vorzuzeigen.

    In meinem Vortrag zeige ich anhand eines Beispiels
    wie ein Reinforcement Learning Algorithmus implementiert wird.
    Im Wechsel wird das theoretische Fundament gelegt und direkt in der Praxis angewendet.
    So bauen wir Stück für Stück einen selbstlernenden Agenten auf.

    Tobias Steidle ist Full-Stack Entwickler und seit über 15 Jahren in verschiedensten Branchen tätig.
    Aktuell hauptsächlich im Versicherungsumfeld als Entwickler von Cloud Anwendungen (Front- u. Backend) u.a. mit Spring.
    Sein besonderes Interesse gilt dem Machine Learning.
    Von Computer Vision über Natural Language Processing bis zum Reinforcement Learning.

    Checkt auch den Host der JUG Augsburg: www.mischok.de und den Spring Boot Blog: www.spring-boot-blog.de

    Du willst Programmieren lernen? Schau bei der Mischok Academy vorbei: www.mischok.academy

  • DDD - Damit Dein Code Klartext spricht - Daniel Ludwig (micromata)

    Domain Driven Design hilft nicht nur, fachliche Missverständnisse in der Kommunikation zwischen den beteiligten Stakeholdern zu vermeiden, sondern stellt insbesondere in der Spezifikation Klarheit und Eindeutigkeit über die fachlichen und technischen Parametern her – und schafft damit die Voraussetzung für eine hohe Codequalität: DDD from scratch!

    In meinem Vortrag teile ich zunächst Erfahrungen, die wir in einem neuen Projekt im Umfang von mehreren tausend Leistungstagen machen konnten, und gebe bei der Gelegenheit Einblick in die aus meiner Sicht wichtigsten Vorteile von DDD:

    - eine allumfassende Sprache, die sowohl im Gespräch mit dem Kunden als auch in der Software selbst Anwendung findet,

    - die sortenreine Trennung von fachlicher und technischer Schicht

    - Domänenklassen mit rein fachlichen Daten, ohne technischen Ballast

    - eindeutige Strukturen für Funktionen wie Serviceklassen, Repositories etc.

    Der Speaker:

    Daniel Ludwig arbeitet seit 2006 bei der Micromata GmbH als Softwareentwickler. Sein Aufgabenbereich umfasst die Gestaltung von Softwarearchitekturen sowie die Entwicklung von Frontend- und Backend-Komponenten.

    Durch mehr als zwanzig Jahre Berufserfahrung in komplexen Softwareprojekten ist Daniel Ludwig mit einer Vielzahl an Entwicklungskonzepten und Technologien vertraut. Sein Hauptinteresse gilt der Entwicklung domainspezifischer Sprachen unter Verwendung dynamischer Programmiersprachen wie etwa Groovy oder mithilfe von Frameworks.

    Seine breite Praxiserfahrung teilte Daniel Ludwig bereits mehrfach mit der Java User Group Hessen, zuletzt 2018 mit dem Talk „Xtext und die Integration in Java-Anwendungen“ (zu sehen auf Youtube).

  • Machine Learning: ein Programm, das ein Programm schreibt - Oliver Zeigermann

    In der klassischer Software-Entwicklung schreibt ein Entwickler anhand von Anforderungen ein Programm. Im Machine Learning kann eine Lern-Strategie anhand von Daten ebenfalls ein Programm schreiben. Dies ist nicht offensichtlich, da ein manuell geschriebenes Programm aus Code besteht, während ein Machine Learning Modell davon abstrakt ist.

    In diesem Talk mache ich diesen Ansatz explizit indem ich aus einem abstrakten Machine Learning Modell Code generieren. Dabei lösen wir zusammen eine gegebene Aufgabe mit klassischer Programming, und trainieren zusätzliche ein Modell anhand von Daten. Am Ende vergleichen wir unseren handgeschriebenen Code mit dem erzeugten anhand von Qualitätsmerkmalen wie Lesbarkeit, Wartbarkeit, Testbarkeit und Interpretierbarkeit, wie gut die Aufgabe gelöst wird, etc. Als Bonus nutzen wir unseren selbst geschriebenen Code als Lehrer für das Machine Learning Modell und führen eine etwas sonderbare Art des Refactorings durch.

    Oliver ist Freelancer aktiv und arbeitet für embarc in Hamburg.
    https://zeigermann.eu/

  • Ich packe meinen Testtoolkoffer und nehme mit… - Sandra Parsick

    Ich packe meinen Testtoolkoffer und nehme mit… - Testwerkzeuge für den Entwickleralltag

    Tests sind das Hauptkommunikationsmittel von Entwicklern über den Code. Mit Tests kommuniziert man auch noch mit dem nächsten Entwickler, nachdem man das Projekt verlassen hat. Tests sind eine lebende Spezifikation des Codes, den sie testen. Man sollte sie mindestens so sauber halten, wie den Produktionscode - wenn nicht sauberer.

    Doch wer hat die Aussage “Das kann man nicht testen” oder “Den Test kann man nicht schöner schreiben” noch nicht gehört? Oft basieren diese Aussagen darauf, dass man den Großteil des Arsenals der Testwerkzeuge, die uns Java-Entwicklern inzwischen zur Verfügung stehen, noch nicht kennt.

    Neben JUnit, gibt es viele weitere Testwerkzeuge, die den Entwickleralltag beim Testschreiben vereinfachen können. Dieser Vortrag gibt einen Überblick über nicht so bekannte Features von JUnit 5 und stellt nicht so bekannte Testwerkzeuge vor, mit denen das Schreiben von Tests wieder Spaß macht.

    Sandra Parsick:

    Sandra Parsick ist als freiberufliche Softwareentwicklerin und Consultant im Java-Umfeld tätig. Seit 2008 beschäftigt sie sich mit agiler Softwareentwicklung in verschiedenen Rollen. Ihre Schwerpunkte liegen im Bereich der Java Enterprise Anwendungen, agilen Methoden, Software Craftsmanship und in der Automatisierung von Softwareentwicklungsprozessen. Darüber schreibt sie gerne Artikel und spricht gerne auf Konferenzen. In ihrer Freizeit engagiert sich Sandra Parsick in der Softwerkskammer Ruhrgebiet, einer Regionalgruppe der Software Craftmanship Community im deutschsprachigen Raum. Seit 2019 ist sie Mitglied im Oracle Groundbreaker Ambassador Programm.

    1