Speaker

Simon Martinelli

Simon Martinelli

Programming Architect

Programmierender Architekt

Erlach, Switzerland

Simon Martinelli is a Java Champion, a Vaadin Champion, and an Oracle ACE Associate. He regularly shares his knowledge in articles, speaks at international conferences, and writes his blog: https://martinelli.ch. His current interest is increasing the efficiency of full-stack development with Java.

He owns 72 Services LLC and has worked as a software architect, developer, consultant, and trainer for three decades, especially in the Java Enterprise environment. Besides his work, he has been a lecturer at the Bern University of Applied Sciences BFH and the University of Applied Science Northwestern Switzerland FHNW for modern architecture and integrating distributed systems and persistence technologies with Java and DevOps since 2007. He also served as an expert group member of JSR-352 Java Batch and JSR-354 Money and Currency.

Simon Martinelli ist Java Champion, Vaadin Champion und Oracle ACE Associate. Er teilt sein Wissen regelmässig in Artikeln, spricht auf internationalen Konferenzen und schreibt seinen Blog: https://martinelli.ch. Sein aktuelles Interesse gilt der Steigerung der Effizienz der Full-Stack-Entwicklung mit Java.

Er ist Inhaber der 72 Services GmbH und arbeitet seit drei Jahrzehnten als Softwarearchitekt, Entwickler, Berater und Trainer, insbesondere im Java Enterprise-Umfeld. Nebenbei ist er seit 2007 Dozent an der Berner Fachhochschule BFH und der Fachhochschule Nordswestchweiz FHNW für Architektur und Integration verteilter Systeme, Persistenztechnologien und DevOps mit Java. Zudem fungierte er als Expertengruppe Mitglied von JSR-352 Java Batch und JSR-354 Money and Currency.

Awards

Area of Expertise

  • Information & Communications Technology

Topics

  • java
  • Vaadin
  • jOOQ
  • Spring Boot
  • Hilla
  • Full Stack

Sessions

Separation of Concerns: CQRS in Action with Java Records en de

Command Query Responsibility Segregation (CQRS) is a proven design pattern that enables the clear separation of data changes (commands) and data queries (queries). This separation allows each of these responsibilities to be scaled and optimized independently. An essential question in the application of CQRS is whether two separate data stores are necessarily required or whether CQRS can also be used effectively to keep data in a single database while still structuring the application code more efficiently and optimizing the data access.

In this talk, we will deepen the understanding of the practical implementation of the CQRS principles. We use jOOQ, a type-safe SQL query library, as our persistence layer and model both the query and command models using Java Records. Using a concrete example application, we demonstrate how the theoretical foundations of CQRS can be applied in practice and how this affects the design of applications and improves the data access performance.

Separation of Concerns: CQRS in Action mit Java Records en de

Command Query Responsibility Segregation (CQRS) ist ein bewährtes Entwurfsmuster, das die klare Trennung von Datenveränderungen (Commands) und Datenabfragen (Queries) ermöglicht. Diese Trennung erlaubt die eigenständige Skalierung und Optimierung jeder dieser Verantwortlichkeiten. Eine wichtige Frage in der Anwendung von CQRS ist, ob zwingend zwei separate Datenspeicher erforderlich sind oder ob CQRS auch effektiv genutzt werden kann, um Daten in einer einzigen Datenbank zu halten, während der Anwendungscode dennoch effizienter strukturiert wird und den Datenzugriff optimiert.

In diesem Vortrag vertiefen wir das Verständnis der praktischen Umsetzung der CQRS-Prinzipien. Wir setzen jOOQ ein, eine typsichere SQL-Abfragebibliothek, als unsere Persistenzschicht, und modellieren sowohl das Abfrage- als auch das Command-Modell mithilfe von Java Records. Anhand einer konkreten Beispielanwendung demonstrieren wir, wie die theoretischen Grundlagen von CQRS in der Praxis angewendet werden können und welche Auswirkungen dies auf das Design von Anwendungen hat und gleichzeitg die Effizienz des Datenzugriffs steigert.

Do you really need JavaScript? en de

Single Page Applications (SPAs) have emerged as the de facto standard for modern web application development, with Angular, React, and Vue.js leading the pack. However, for Java developers, diving into the world of SPAs often means learning new programming languages and unfamiliar build environments, presenting a steep learning curve.

This presentation introduces an alternative path for Java developers: Vaadin. This well-established web framework enables the development of web applications entirely in Java while also accommodating the classic SPA approach. We will start with the architecture of Vaadin, shifting away from its previous reliance on GWT in favor of WebComponents, and then highlight the benefits and advantages of this framework.

The second part of the talk will feature practical examples from ongoing projects, showcasing how Vaadin enhances efficiency by using the simplicity and familiarity of Java, even in mobile-first application development.

This presentation provides valuable insights for Java developers seeking an alternative to traditional SPA frameworks. It introduces Vaadin and demonstrates its potential within the Java ecosystem. Whether you're a seasoned Java developer or new to the language, this talk aims to inspire and inform your journey toward a more Java-centric approach to web development.

Muss es wirklich JavaScript sein? en de

Single Page Applications (SPAs) haben sich zum De-facto-Standard für die moderne Webanwendungsentwicklung entwickelt, wobei Angular, React und Vue.js die Spitzenreiter sind. Für Java-Entwickler bedeutet das Eintauchen in die Welt der SPAs jedoch häufig das Erlernen neuer Programmiersprachen und unbekannter Build-Umgebungen, was eine steile Lernkurve mit sich bringt.

Diese Präsentation stellt einen alternativen Weg für Java-Entwickler vor: Vaadin. Dieses etablierte Webframework ermöglicht die Entwicklung von Webanwendungen vollständig in Java und berücksichtigt gleichzeitig den klassischen SPA-Ansatz. Wir werden uns mit der sich entwickelnden Architektur von Vaadin befassen, uns von der bisherigen Abhängigkeit von GWT zu Gunsten von WebComponents verlagern und die Vorteile und Vorzüge dieses Frameworks hervorheben.

Im zweiten Teil des Vortrags werden praktische Beispiele aus laufenden Projekten vorgestellt und gezeigt, wie Vaadin Entwickler in die Lage versetzt, die Effizienz zu steigern, indem es die Einfachheit und Vertrautheit von Java nutzt, selbst bei der Entwicklung von Mobile-First-Anwendungen.

Diese Präsentation bietet wertvolle Einblicke für Java-Entwickler, die eine Alternative zu herkömmlichen SPA-Frameworks suchen, bietet einen Einblick in die Welt von Vaadin und demonstriert dessen Potenzial innerhalb des Java-Ökosystems. Ganz gleich, ob Sie ein erfahrener Java-Entwickler oder ein Neuling in der Sprache sind, dieser Vortrag soll Sie auf Ihrem Weg zu einem stärker Java-zentrierten Ansatz für die Webentwicklung inspirieren und informieren.

Workshop: Efficient Data Access with jOOQ en de

SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than… SQL! - Lukas Eder, the creator of jOOQ.

What’s the best way to use SQL with Java? Often JPA/Hibernate is used without rethinking the choice. But there are other frameworks like jOOQ that, in many situations, maybe a better fit.

This workshop will teach you how to use jOOQ with Spring Boot, Flyway, and Testcontainers to access SQL databases efficiently.

AGENDA
After a quick start, the workshop will do a deep-dive into the features of jOOQ and the integration with Spring Boot and how to use it in combination with JPA

Setting up jOOQ, Spring Boot, Flyway, and Testcontainers
How to use the jOOQ DSL for SQL building
Generating the metamodel for writing type-safe queries
Execute queries and process results, including nested Java Records and multisets
Call stored procedures and use functions
Use transactions
How does the jOOQ Spring Boot auto-configuration work
Use the best of both worlds. How to integrate jOOQ with JPA

Full-Stack development is dead, long live Full-Stack development! en de

The gap between frontend and backend in web development has widened in recent years. In frontend programming, frameworks such as Angular, React, or Vue.js are predominant, forcing developers to use a different programming language and a different ecosystem.

This has made it more difficult for Java developers to find their way around, and in many projects, frontend and backend developers are separated.

However, it can be beneficial in many ways if a developer can develop both the frontend and backend. But as a Java developer, do I have to get familiar with a whole new ecosystem?
No, there are alternatives!

This talk shows how to develop web applications quickly as a Java full-stack developer. We will compare three options that suit the Java developer: Thymeleaf with htmx, Vaadin, and Hilla. Based on an example, we look at the advantages and disadvantages to determine which framework is the best choice in which scenario.

Full-Stack Entwicklung - darf man das noch? en de

Der Graben zwischen Frontend und Backend in der Webentwicklung hat sich in den letzten Jahren vergrößert. In der Frontend-Programmierung dominieren Frameworks wie Angular, React oder Vue.js, die Entwickler dazu zwingen, eine andere Programmiersprache und ein anderes Ökosystem zu verwenden.

Dadurch ist es für Java-Entwickler schwieriger geworden, sich zurechtzufinden, und in vielen Projekten werden Frontend- und Backend-Entwickler getrennt.
Es kann jedoch in vielerlei Hinsicht von Vorteil sein, wenn ein Entwickler sowohl das Frontend als auch das Backend entwickeln kann. Aber muss ich mich als Java-Entwickler in ein ganz neues Ökosystem einarbeiten?
Nein, es gibt Alternativen!

Dieser Vortrag zeigt, wie man als Java-Full-Stack-Entwickler schnell Webanwendungen entwickelt. Wir werden drei Varianten vergleichen, die für den Java-Entwickler geeignet sind: Thymeleaf mit htmx, Vaadin und Hilla. Anhand eines Beispiels betrachten wir die Vor- und Nachteile, um festzustellen, welches Framework in welchem Szenario die beste Wahl ist.

Going Full-stack with Hilla en de

Full-stack development is often a good choice when developing business applications. But the integration of the frontend and the backend is not trivial.

Hilla to the rescue!
Hilla integrates a Spring Boot Java backend with a reactive TypeScript frontend. You build UIs using Lit framework or React and web components without caring about a REST API. Hilla generates the REST-API and the client code for you.
The backend is secure by default and fully stateless.

Hilla was made by the creators of the famous Java web framework Vaadin. This talk introduces the architecture and concepts of Hilla and Lit. A hands-on demo shows how easy it is to do full-stack development using Hilla and Spring Boot.

Efficient Full-Stack Development with Java en de

Single Page Applications (SPA) have become the quasi-standard in the development of web applications today. Angular, React, and Vue.js are the most well-known representatives of this category of web frameworks.

For Java developers, however, this means learning a new programming language and finding a completely foreign build environment with its ecosystem, which can often be more difficult.

Are there alternatives?
Vaadin is an established web framework that allows web applications to be developed entirely in Java but recently also supported a classic SPA approach.
First, the new architecture of Vaadin, which is no longer based on GWT but WebComponents, is explained.

The second part explains Hilla (former Vaadin Fusion), which offers the possibility to develop SPAs with TypeScript and WebComponents in the frontend and Java in the backend.

You may not need JavaScript en de

Single page applications (SPA) have become the for web application development. Angular, React, Vue.js and Ember.js are the best known representatives from this category of web frameworks. But does this client architecture fit every application? Or are there alternatives that may fit better and are less complex to develop?

In the first part of the talk, the differences between SPAs and classic, server-side approaches are explained and the advantages and disadvantages are discussed.

The second part reports on a current customer project in which the front end of a large ERP system had to be replaced by a modern web front end. The chosen framework is Vaadin Flow, a server-side web framework that makes development of web applications entirely in Java possible.

First, the new architecture of Vaadin Flow, which is no longer based on GWT but on web components, is explained. Then it will be shown how configurable, form-based and data-centric web applications can be implemented very efficiently by using jOOQ as a database access layer.

The Real Value of Microservices en de

For older software developers new trends are often nothing but "old wine in new bottles." That's exactly what I thought when I heard about microservices for the first time.
Through my work as a software renovator, though, I realized that many aspects of microservice architectures have a huge impact on value retention and can greatly simplify future migrations.

The first part of the talk will explain how microservice architectures are based on some very old principles, and will discuss the advantages they bring for the life cycle of an application. In the second part, I will discuss my experience in a recent customer project and how it demonstrates how to move from a monolithic legacy application to a modern, sustainable microservice architecture.

Do we still need Spring Data JPA? en

In this talk, we'll compare the recent query and finder methods added to Hibernate 6.3 with the familiar Spring Data JPA, focusing on how they can used to handle data access in Java. Using code examples, we'll uncover what each framework offers and where its strengths lie.

The big question we'll tackle: Does the functionality of Hibernate 6.3 make Spring Data JPA unnecessary? We'll break down scenarios where Spring Data JPA shines and contrast them with the fresh features of Hibernate 6.3.

Der wahre Wert von Microservices en de

Für erfahrene Softwareentwickler sind neue Hypes häufig nichts anderes als «alter Wein in neuen Schläuchen». Genau so ist es mir mit dem Thema Microservices ergangen.

Durch meine Tätigkeit als Softwaremodernisierer ist mir jedoch klar geworden, dass gewisse Ideen aus dem Umfeld der Microservicearchitekturen die Werterhaltung der Applikationen fördern und spätere Migrationen stark vereinfachen.

Der Vortrag zeigt auf, welche, zum Teil sehr alten, Prinzipien in Microservicearchitekturen enthalten sind und welche Vorteile diese für den Lebenszyklus einer Applikation bringen.

Im zweiten Teil werde ich anhand eines aktuellen Kundenprojekts zeigen welches Vorgehen nötig ist um von einer monolithischen Legacyapplikation zu einer modernen, nachhaltigen Microservicearchitektur zu gelangen.

Es muss nicht immer Angular sein en de

Single Page Applikationen (SPA) sind heute bei der Entwicklung von Webanwendungen zum Quasi-Standard geworden. Angular, React, Vue.js und Ember.js sind die bekanntesten Vertreter aus dieser Kategorie von Webframeworks. Aber passt diese Client-Architektur zu jedem Anwendungsfall? Oder gibt es Alternativen die eventuell besser passen und weniger aufwändig in der Entwicklung sind?

Im ersten Teil des Vortrags werden die Unterschiede zwischen SPAs und klassischen, serverseitigen Ansätzen erläutert und auf die jeweiligen Vor- und Nachteile eingegangen.

Der zweite Teil berichtet über ein aktuelles Kundenprojekt, bei welchem das Frontend eines grossen ERP Systems durch ein modernes Webfrontend ersetzt werden musste. Die Frameworkwahl fiel dabei auf Vaadin Flow, ein serverseitiges Webframework das verspricht, Webanwendungen vollständig in Java entwickeln zu können.

Zuerst wird die neue Architektur von Vaadin Flow, welche mittlerweile nicht mehr auf GWT sondern auf Webcomponents basiert, erklärt. Dann wird aufgezeigt, wie durch die Zuhilfenahme von jOOQ als Datenbankzugriffsschicht konfigurierbare, formularbasierte und datenlastige Webanwendungen sehr effizient umgesetzt werden können.

Effiziente Full-Stack-Entwicklung für Java Entwickler en de

Single Page Applikationen (SPA) sind heute bei der Entwicklung von Webanwendungen zum Quasi-Standard geworden. Angular, React und Vue.js sind die bekanntesten Vertreter aus dieser Kategorie von Web-Frameworks.

Für Java Entwickler bedeutet das aber, erstens eine neue Programmiersprache zu lernen und zweitens, was oft schwieriger sein kann, eine komplett fremde Build-Umgebung mit einem eigenen Ökosystem vorzufinden.

Gibt es Alternativen?
Vaadin ist ein etabliertes Web-Framework, das es erlaubt Webanwendungen komplett in Java zu entwickeln, neuerdings aber auch einen klassischen SPA-Ansatz unterstützt.

Zuerst wird die neue Architektur von Vaadin, welche mittlerweile nicht mehr auf GWT sondern auf WebComponents basiert, erklärt.

Anhand eines Kundenprojekts wird aufgezeigt, wie damit formularbasierte und datenlastige Webanwendungen sehr effizient umgesetzt werden können.

Im zweiten Teil wird auf Hilla (ex Vaadin Fusion) eingegangen, welches die Möglichkeit bietet SPAs mit TypeScript und WebComponents im Frontend und Java im Backend zu entwickeln.

Do you really need Hibernate? en de

Projects often use Java Persistence API (JPA) by default and, thus, mostly Hibernate. But do all applications need a comprehensive object/relational mapping (ORM) with all conceivable functions?

This talk examines the architecture of database-centric applications and discusses whether you always need an object graph for persistence.

Using an example application, it is shown how pure SQL, with the help of jOOQ and (nested) Java Records simplifies data access and how common ORM problems, such as the n+1 select problem, can be avoided.
Finally, the possibility of combining jOOQ and JPA/Hibernate and thus using the best of both worlds is discussed.

Muss es wirklich Hibernate sein? en de

Projekte verwenden oft standardmässig Java Persistence API (JPA) und damit meistens Hibernate.
Aber braucht es in allen Applikationen wirklich ein vollumfängliches Objekt/Relationales-Mapping (ORM) mit allen erdenklichen Funktionen?

Dieser Talk beleuchtet die Architektur von datenbank-zentrierten Applikationen und diskutiert die Frage ob man immer einen Objektgraphen für die Persistenz braucht.

Anhand einer Beispielapplikation wird aufgezeigt wie mit reinem SQL mit Hilfe von jOOQ und (verschachtelten) Java Records der Datenzugriff vereinfacht und häufige Probleme von ORM wie z.B. das n+1-Select-Problem vermieden werden kann.
Abschließend wird auf die Möglichkeit eingegangen jOOQ und JPA/Hibernate zu kombinieren und damit das Beste aus beiden Welten zu verwenden.

Full-Stack-Entwicklung mit Hilla en de

Full-Stack-Entwicklung ist oft eine gute Wahl bei der Entwicklung von Geschäftsanwendungen. Aber die Integration von Frontend und Backend ist nicht trivial.

Dieses Problem löst Hilla.
Hilla integriert ein Spring Boot Java-Backend mit einem reaktiven TypeScript-Frontend. Benutzeroberflächen werden mit dem Lit-Framework oder React und Webkomponenten erstellt und sie müssen sich nicht um die REST-API kümmern. Hilla generiert die REST-API und den Client-Code. Das Backend ist standardmäßig sicher und vollständig zustandslos.

Hilla wurde von den Machern des bekannten Java-Webframeworks Vaadin entwickelt. Dieser Vortrag stellt die Architektur und Konzepte von Hilla und Lit vor. Die Demo zeigt, wie einfach es ist, Full-Stack-Entwicklung mit Hilla und Spring Boot zu erstellen.

Workshop: Effizienter Datenbankzugriff mit jOOQ en de

SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than… SQL! - Lukas Eder, the creator of jOOQ.

Was ist der beste Weg, um SQL mit Java zu verwenden? Oft wird JPA/Hibernate verwendet, ohne die Wahl zu überdenken. Aber es gibt andere Frameworks wie jOOQ, die in vielen Situationen besser passen.

In diesem Workshop lernen Sie, wie Sie jOOQ mit Spring Boot, Flyway und Testcontainers verwenden, um effizient auf SQL-Datenbanken zuzugreifen.

AGENDA
Nach einem Quick-Start wird der Workshop einen Einblick in die Funktionen von jOOQ und die Integration mit Spring Boot geben und wie man es in Kombination mit JPA verwendet

1. Einrichten von jOOQ, Spring Boot, Flyway und Testcontainern
2. So verwenden Sie die jOOQ DSL für die die Erstellung von SQL Abfragen
3. Generieren des Metamodells zum Schreiben typsicherer Abfragen
4. Abfragen ausführen und verarbeiten der Ergebnisse, einschließlich verschachtelter Java Records und Multisets
5. Stored Procedures aufrufen und verwenden von Funktionen
6. Transaktionen
7. Wie funktioniert die automatische Konfiguration von jOOQ in Spring Boot?
8. Nutzen Sie das Beste aus beiden Welten. So integrieren Sie jOOQ mit JPA

Workshop: Java Full-Stack Development with Vaadin en

Introduction

Single Page Applications (SPA) have become a quasi-standard in the development of web applications. Angular, React, and Vue are the best-known representatives from this category of web frameworks. But does this client architecture fit every use case? Or are there alternatives that might be a better fit and less time-consuming to develop?
Vaadin is a proven web application framework with a long history and was overhauled four years ago.
The latest version is based on a modern architecture with web components. It allows web applications to be developed entirely in Java.

Program

Topics
- Architecture and concepts from Vaadin
- Spring Boot integration
- Routing
- Application Lifecycle
- Form and data binding
- Grids and data providers
-Theming
- I18N
-Push

We will put the theory into practice using an example application.

Workshop Goals

Participants understand the concepts of Vaadin and can develop effective and attractive full-stack Java applications using the Vaadin Framework.

Target audience

The workshop is aimed at all Java developers interested in modern web applications.

Requirements

Java knowledge

Infrastructure

- Up-to-date IDE
- Latest Java version
- Notebook with internet access

JCON EUROPE 2024 Upcoming

May 2024 Köln, Germany

Devnexus 2024 Upcoming

April 2024 Atlanta, Georgia, United States

J-Fall 2023

November 2023 Ede, The Netherlands

BaselOne 2023

October 2023 Basel, Switzerland

JCON EUROPE 2023

June 2023 Köln, Germany

Java Forum Nord 2022

October 2022 Hannover, Germany

WeAreDevelopers World Congress 2022

June 2022 Berlin, Germany

JCON 2021

October 2021

JNation 2021

June 2021

Simon Martinelli

Programming Architect

Erlach, Switzerland