<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vaadin on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/vaadin/</link><description>Recent content in Vaadin on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 13 Nov 2025 08:50:13 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/vaadin/index.xml" rel="self" type="application/rss+xml"/><item><title>How to Deploy a Vaadin Application as a WAR on Tomcat 11</title><link>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-as-a-war-on-tomcat-11/</link><pubDate>Mon, 19 May 2025 07:40:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-as-a-war-on-tomcat-11/</guid><description>&lt;p&gt;&lt;strong&gt;If you want to run a Vaadin application on an external servlet container like Apache Tomcat 11, you need to package your application as a WAR (Web Application Archive) instead of the usual executable JAR.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this post, I&amp;rsquo;ll show you step-by-step how I did it.&lt;/p&gt;
&lt;h2 id="h2-0-step-1-download-tomcat-11"&gt;Step 1: Download Tomcat 11&lt;/h2&gt;
&lt;p&gt;First, download Tomcat 11 from the &lt;a href="https://tomcat.apache.org/download-11.cgi" target="_blank" rel="noopener noreferrer"&gt;official Apache Tomcat website&lt;/a&gt;
. After extracting it to a local folder, you have a clean Tomcat installation ready to use.&lt;/p&gt;</description></item><item><title>Securing Vaadin Applications with Microsoft Entra</title><link>https://foojayio.github.io/website/today/securing-vaadin-applications-with-microsoft-entra/</link><pubDate>Wed, 26 Feb 2025 12:55:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/securing-vaadin-applications-with-microsoft-entra/</guid><description>&lt;p&gt;Many companies use Microsoft 365, so letting users log in with their Microsoft account is a good choice. This blog post shows how to secure your Vaadin applications using Microsoft Entra for authentication and authorization and explains how Karibu Testing must be configured.&lt;/p&gt;
&lt;h2 id="h2-0-step-1-create-an-application-in-entra"&gt;Step 1: Create an Application in Entra&lt;/h2&gt;
&lt;p&gt;The first step is to create an application, configure roles, assign users, and set the redirect URI.&lt;/p&gt;
&lt;p&gt;To create an application, log in to &lt;a href="http://entra.microsoft.com" target="_blank" rel="noopener noreferrer"&gt;http://entra.microsoft.com&lt;/a&gt;
 and select &amp;ldquo;Applications&amp;rdquo; -&amp;gt; &amp;ldquo;Enterprise applications.&amp;rdquo; There, you can create a new application. Select &amp;ldquo;Register an application to integrate with Microsoft Entra ID (App you&amp;rsquo;re developing).&amp;rdquo;&lt;/p&gt;</description></item><item><title>Integrating Google Analytics With Vaadin Flow: A Step-By-Step Guide</title><link>https://foojayio.github.io/website/today/integrating-google-analytics-with-vaadin-flow-a-step-by-step-guide/</link><pubDate>Wed, 08 Jan 2025 11:55:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/integrating-google-analytics-with-vaadin-flow-a-step-by-step-guide/</guid><description>&lt;p&gt;&lt;strong&gt;Want to track how users interact with your Vaadin Flow application? Learn how to integrate Google Analytics with a clean, reusable component. This guide shows you step-by-step instructions on how to set up tracking, monitor page views, and capture custom events in your Vaadin application.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Analytics are crucial for understanding how users interact with your web application. In this guide, I&amp;rsquo;ll show you how to integrate Google Analytics with your Vaadin Flow application in a clean, maintainable way.&lt;/p&gt;</description></item><item><title>AI-powered Chat Application using watsonx.ai and Spring AI</title><link>https://foojayio.github.io/website/today/ai-powered-chat-application-using-ibm-watsonx-ai-and-spring-ai/</link><pubDate>Fri, 03 Jan 2025 08:31:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/ai-powered-chat-application-using-ibm-watsonx-ai-and-spring-ai/</guid><description>&lt;p&gt;&lt;strong&gt;Generative Artificial Intelligence (Gen AI) disrupted enterprises with the introduction of GPT-4 foundation model by Open AI in the late 2022 to early 2023 triggering big tech to release their own Gen AI platform and foundation models. Among them are Google, Microsoft, AWS and IBM. In this article, we will deal with the Gen AI platform and model of IBM called watsonx and integrate it with Spring AI to create a custom chat application using the IBM Granite Foundation Model.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Crafting Your Own Railway Display with Java!</title><link>https://foojayio.github.io/website/today/crafting-your-own-railway-display-with-java/</link><pubDate>Mon, 18 Nov 2024 08:46:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/crafting-your-own-railway-display-with-java/</guid><description>&lt;p&gt;&lt;strong&gt;Have you fancied to have your own railway display at home? If you love traveling by public transport and always jump on the train just before the door closes like us, it&amp;rsquo;s really cool and highly efficient to have your own personalized display.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/crafting-your-own-railway-display-with-java/NS_display_2-scaled.jpg" alt="custom railway display showing the train timings" loading="lazy"&gt;
&lt;/p&gt;
&lt;h3 id="h3-0-background"&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Without live data, this project could not work. Luckily, all the data we needed was publicly and freely available with Nederlandse Spoorwegen (NS) APIs. To access them, you only need to create an account in the &lt;a href="https://apiportal.ns.nl/" target="_blank" rel="noopener noreferrer"&gt;NS API Portal and subscribe to the APIs&lt;/a&gt;
 you want to use.&lt;/p&gt;</description></item><item><title>Summary of the AJAX Frameworks Comparison</title><link>https://foojayio.github.io/website/today/summary-of-the-ajax-frameworks-comparison/</link><pubDate>Thu, 14 Nov 2024 11:35:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/summary-of-the-ajax-frameworks-comparison/</guid><description>&lt;p&gt;In previous weeks, I&amp;rsquo;ve analyzed several libraries and frameworks that augment the client with AJAX capabilities.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.frankel.ch/ajax-ssr/3/" target="_blank" rel="noopener noreferrer"&gt;Vue.js&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.frankel.ch/ajax-ssr/4/" target="_blank" rel="noopener noreferrer"&gt;Alpine.js&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.frankel.ch/ajax-ssr/5/" target="_blank" rel="noopener noreferrer"&gt;HTMX&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.frankel.ch/ajax-ssr/6/" target="_blank" rel="noopener noreferrer"&gt;Vaadin&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this post, I&amp;rsquo;ll compare them across several axes.&lt;/p&gt;
&lt;h2 id="h2-0-analysis"&gt;Analysis&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Frontend skills:Remember that I started this series from the point of view of a backend developer. In this section, I grade how much you need to know about client technologies to complete the job.&lt;/li&gt;
&lt;li&gt;Team organization:In the introduction, I hinted that the decoupling of frontend and backend teams profoundly impacted projects. Each team is fast on its own, and they can parallelize their work, but integrating the two can double the initial development time. Here, I grade how easy it is to integrate frontend and backend.&lt;/li&gt;
&lt;li&gt;Ease of setup:How easy it is to set up the tool from the backend.&lt;/li&gt;
&lt;li&gt;Ease of styling:Backend developers are not designers by default. Does the tool offer a default, at least average-looking style? How hard is it to create one?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For all intents and purposes, Vue.js and Alpine.js are similar; I&amp;rsquo;ll refer to them as JavaScript frameworks.&lt;/p&gt;</description></item><item><title>Vaadin: Battery-Included Server-Side AJAX Framework</title><link>https://foojayio.github.io/website/today/vaadin-battery-included-server-side-ajax-framework/</link><pubDate>Tue, 22 Oct 2024 09:39:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-battery-included-server-side-ajax-framework/</guid><description>&lt;p&gt;&lt;strong&gt;I&amp;rsquo;ve written a lot about &lt;a href="https://vaadin.com/" target="_blank" rel="noopener noreferrer"&gt;Vaadin&lt;/a&gt;
. I was so enthusiastic that I wrote the &lt;a href="https://www.amazon.fr/Learning-Vaadin-Nicolas-Frankel/dp/1849515220" target="_blank" rel="noopener noreferrer"&gt;first book&lt;/a&gt;
 about it (besides the Book of Vaadin), its &lt;a href="https://www.amazon.fr/Learning-Vaadin-Second-Nicolas-Frankel/dp/1782169776" target="_blank" rel="noopener noreferrer"&gt;updated edition&lt;/a&gt;
 for Vaadin 7, and a &lt;a href="https://morevaadin.com/" target="_blank" rel="noopener noreferrer"&gt;companion website&lt;/a&gt;
. Still, I&amp;rsquo;m amazed that so many people in the JVM world never heard of it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this article, I&amp;rsquo;d like to introduce Vaadin in the context of AJAX and SSR.&lt;/p&gt;
&lt;h2 id="h2-0-short-introduction-to-vaadin"&gt;Short introduction to Vaadin&lt;/h2&gt;
&lt;p&gt;The beauty of Vaadin lies in its simplicity - &lt;strong&gt;you only write backend code&lt;/strong&gt; . You read that well. A Vaadin developer only needs to know Java, or any JVM language, and the Vaadin API. At runtime, Vaadin will create the client-side code, &lt;em&gt;i.e.&lt;/em&gt;, HTML, JavaScript and CSS. This approach empowers developers to focus on the application&amp;rsquo;s core functionality, making the development process more productive.&lt;/p&gt;</description></item><item><title>Browserless Testing of Vaadin Applications with Karibu Testing</title><link>https://foojayio.github.io/website/today/browserless-testing-of-vaadin-applications-with-karibu-testing/</link><pubDate>Mon, 09 Sep 2024 06:27:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/browserless-testing-of-vaadin-applications-with-karibu-testing/</guid><description>&lt;p&gt;I&lt;strong&gt;n modern web development, testing is essential for ensuring the reliability and performance of applications. For developers working with Vaadin, one of the best testing tools is Karibu Testing. This testing framework stands out for its ability to run browserless testing, offering several advantages over traditional end-to-end testing approaches, such as Selenium, Playwright, or Cypress.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This article will highlight the benefits of browserless testing with Karibu Testing and how it compares to the end-to-end testing approach (E2E).&lt;/p&gt;</description></item><item><title>Foojay Podcast #53: JCON Report, Part 5 – CQRS, JOOQ, GraphQL, API, Vaadin, OpenRewrite, ErrorProne, Gateways, Proxies,...</title><link>https://foojayio.github.io/website/today/foojay-podcast-53/</link><pubDate>Mon, 17 Jun 2024 09:24:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-53/</guid><description>&lt;p&gt;This is the final part of the JCON interviews. Did I save the best for last? It&amp;rsquo;s up to you to decide&amp;hellip;&lt;/p&gt;
&lt;p&gt;In this episode you&amp;rsquo;ll hear Simon Martinelli, Nicolas Fränkel, Marcus Hellberg, Rick Ossendrijver, and Abdel Sghiouar.&lt;/p&gt;
&lt;p&gt;We talked about a bunch of topics like evolving your APIs, GraphQL, Java versus Kotlin versus Rust, Vaadin, AI and ChatGPT, OpenRewrite, ErrorProne, Infrastructure, and a lot more.&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6ops5sU_UiY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Vaadin 24.4 Adds React Support, In-App Coding Assistant</title><link>https://foojayio.github.io/website/today/vaadin-24-4-adds-react-support-in-app-coding-assistant/</link><pubDate>Wed, 12 Jun 2024 14:38:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-24-4-adds-react-support-in-app-coding-assistant/</guid><description>&lt;h2 id="h2-0-unified-vaadin-platform-seamless-integration-with-hilla"&gt;Unified Vaadin Platform: Seamless Integration with Hilla&lt;/h2&gt;
&lt;p&gt;24.4 adds React support to the entire Vaadin platform by including the Hilla framework.&lt;/p&gt;
&lt;p&gt;The Vaadin BOM and Vaadin Spring Boot Starter now include Hilla, allowing you to choose between Flow and Hilla or mix both in your projects.&lt;/p&gt;
&lt;h2 id="h2-1-vaadin-copilot-an-in-app-development-assistant"&gt;Vaadin Copilot: an in-app development assistant&lt;/h2&gt;
&lt;p&gt;Vaadin 24.4 introduces &lt;strong&gt;&lt;a href="https://vaadin.com/copilot" target="_blank" rel="noopener noreferrer"&gt;Vaadin Copilot&lt;/a&gt;
&lt;/strong&gt;, a visual development tool and AI-powered assistant.&lt;/p&gt;
&lt;p&gt;Available by default in development mode, Copilot helps you inspect and edit the UI, and use generative AI to create or modify code.&lt;/p&gt;</description></item><item><title>Foojay Podcast #41: Web Development with Java</title><link>https://foojayio.github.io/website/today/foojay-podcast-41/</link><pubDate>Mon, 29 Jan 2024 08:23:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-41/</guid><description>&lt;p&gt;When starting to build a new website, you are facing a major challenge. Which framework should you use? Angular, React, Vue, Svelte? They are all based on JavaScript and can be the right choice depending on your needs.&lt;/p&gt;
&lt;p&gt;But&amp;hellip; do you really need one of these frameworks? Why would you not just stick to Java and use one of the many great libraries that are available for it?&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/aaYs7zqaBO8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Video: Vaadin Drag &amp; Drop Support. It's so easy!</title><link>https://foojayio.github.io/website/today/video-vaadin-drag-drop-support-its-so-easy/</link><pubDate>Fri, 01 Dec 2023 13:24:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/video-vaadin-drag-drop-support-its-so-easy/</guid><description>&lt;p&gt;In this video I show how simple it can be to add drag and drop to a Vaadin application! Drag and Drop can be helpful in many situations, but often it&amp;rsquo;s complicated to implement. That&amp;rsquo;s not the case with Vaadin. Vaadin makes it easy to have drag-and-drop support for all components.&lt;/p&gt;
&lt;p&gt;More information about drag and drop can be found in the &lt;a href="https://vaadin.com/docs/latest/create-ui/dnd" target="_blank" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;
.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/WIyT9PqhbqA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;</description></item><item><title>Enterprise Java Applications With Jakarta EE and Vaadin</title><link>https://foojayio.github.io/website/today/enterprise-java-application-development-with-jakarta-ee-and-vaadin/</link><pubDate>Wed, 12 Jul 2023 09:26:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/enterprise-java-application-development-with-jakarta-ee-and-vaadin/</guid><description>&lt;p&gt;&lt;strong&gt;Watch this webinar recording to get an overview of the &lt;a href="https://vaadin.com/" target="_blank" rel="noopener noreferrer"&gt;Vaadin framework&lt;/a&gt;
 and learn how to use it to build modern web applications on the Jakarta EE Platform in pure Java, without any frontend framework.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Find out more about the core features of Jakarta EE, like its dependency injection (Jakarta CDI) and persistence (Jakarta Persistence) APIs. Additionally, you will learn how to use Vaadin and Jakarta EE to build responsive web applications that can run on different devices and browsers.&lt;/p&gt;</description></item><item><title>Vaadin 24.1: Bringing You More Than Minor Improvements!</title><link>https://foojayio.github.io/website/today/vaadin-24-1-bringing-you-more-than-minor-improvements/</link><pubDate>Thu, 15 Jun 2023 14:58:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-24-1-bringing-you-more-than-minor-improvements/</guid><description>&lt;p&gt;I am pleased to share with you the newest release of Vaadin 24.1.&lt;/p&gt;
&lt;p&gt;While &lt;a href="http://https://foojay.io/today/vaadin-24-java-17-jakarta-ee-10-servlet-6-spring-boot-3/" title="Vaadin 24.0" target="_blank" rel="noopener noreferrer"&gt;Vaadin 24.0&lt;/a&gt;
 was about upgrading the technology baseline and compatibility, this version brings you some new features.&lt;/p&gt;
&lt;p&gt;Here are the best of them!&lt;/p&gt;
&lt;h2 id="h2-0-visual-view-builder"&gt;Visual View Builder&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://vaadin.com/docs/latest/tools/view-builder" title="Vaadin View Builder" target="_blank" rel="noopener noreferrer"&gt;&lt;img src="https://vaadin.com/docs/latest/static/37d22f0783d625059a3b94ed276b7d7a/cfb07/view-builder-start.webp" alt="Vaadin View Builder" title="Vaadin View Builder" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Built into start.vaadin.com, Visual View Builder helps you to create application prototypes using Vaadin UI components, generate Java code and share your prototypes to gather feedback.&lt;/p&gt;</description></item><item><title>Your First Vaadin Spring Application in 2023</title><link>https://foojayio.github.io/website/today/your-first-vaadin-spring-application-in-2023/</link><pubDate>Thu, 25 May 2023 12:08:30 +0000</pubDate><guid>https://foojayio.github.io/website/today/your-first-vaadin-spring-application-in-2023/</guid><description>&lt;p&gt;Spring pun intended, but I wanted to update the guide for beginners interested in combining these two technologies.&lt;/p&gt;
&lt;p&gt;By following these steps, you&amp;rsquo;ll have a basic Vaadin-Spring Boot application up and running in no time.&lt;/p&gt;
&lt;p&gt;Recently I noticed that it is 8 years since Vaadin was first released in &lt;a href="https://start.spring.io/" title="start.spring.io" target="_blank" rel="noopener noreferrer"&gt;start.spring.io&lt;/a&gt;
. Since then, there have been many additions to both Spring boot and Vaadin.&lt;/p&gt;
&lt;p&gt;Recent upgrade to&lt;a href="https://spring.io/blog/2021/09/02/a-java-17-and-jakarta-ee-9-baseline-for-spring-framework-6" title=" Java 17 and Jakarta EE 9" target="_blank" rel="noopener noreferrer"&gt;Java 17 and Jakarta EE 9&lt;/a&gt;
 baseline. Vaadin 24 added a new &lt;a href="https://vaadin.com/docs/latest/configuration/development-mode#pre-compiled-front-end-bundle-for-faster-start-up" title="pre-compiled frontend mod" target="_blank" rel="noopener noreferrer"&gt;pre-compiled frontend mod&lt;/a&gt;
e making the initial startup matter of seconds (native compilation using GraalVM would make that even faster). And many many more. Time to grow a new project.&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/your-first-vaadin-spring-application-in-2023/plant-lines2-691x510.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Vaadin 24: Java 17, Jakarta EE 10, Servlet 6, Spring Boot 3</title><link>https://foojayio.github.io/website/today/vaadin-24-java-17-jakarta-ee-10-servlet-6-spring-boot-3/</link><pubDate>Wed, 22 Mar 2023 09:22:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-24-java-17-jakarta-ee-10-servlet-6-spring-boot-3/</guid><description>&lt;p&gt;Vaadin 24 delivers a significant step forward with a new technology baseline that includes Java 17, Jakarta EE 10, Servlet 6.0, Spring 6.0, and Spring Boot 3.&lt;/p&gt;
&lt;p&gt;This ensures you can continue building Vaadin Flow apps with the latest Java technologies.&lt;/p&gt;
&lt;p&gt;It also provides several exciting improvements that help you build Java applications even faster. Let me introduce some of them.&lt;/p&gt;
&lt;h2 id="h2-0-faster-build-times"&gt;Faster build times&lt;/h2&gt;
&lt;p&gt;You can now experience significantly improved build and start-up times during development.&lt;/p&gt;</description></item><item><title>Vaadin, OAuth2, and Keycloak</title><link>https://foojayio.github.io/website/today/vaadin-oauth2-and-keycloak/</link><pubDate>Tue, 24 Jan 2023 09:34:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-oauth2-and-keycloak/</guid><description>&lt;p&gt;This article shows how to configure Vaadin and Spring Security to use OAuth2 with Keycloak.&lt;/p&gt;
&lt;h2 id="h2-0-keycloak"&gt;Keycloak&lt;/h2&gt;
&lt;p&gt;First, we must start Keycloak and configure a realm. The easiest way is to start Keycloak with Docker.&lt;br&gt;
&lt;em&gt;Caution: This is just for development purposes. Don&amp;rsquo;t use the setup in production.&lt;/em&gt;&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;docker run -d -p 8180:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin \ 
 quay.io/keycloak/keycloak:20.0.1 start-dev&lt;/pre&gt;
&lt;p&gt;Now you can log in to the admin console: &lt;a href="http://localhost:8180/admin" target="_blank" rel="noopener noreferrer"&gt;http://localhost:8180/admin&lt;/a&gt;
 (user: admin, password: admin)&lt;/p&gt;</description></item><item><title>Vaadin 23.3 Improves Kubernetes, Three New Components</title><link>https://foojayio.github.io/website/today/vaadin-23-3-improves-kubernetes-support/</link><pubDate>Wed, 14 Dec 2022 23:59:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-23-3-improves-kubernetes-support/</guid><description>&lt;p&gt;The Vaadin 23.3 release includes three new UI components and improvements to the Vaadin Acceleration Kits for easier deployments in clustered environments (support for rolling updates, horizontal scaling, high availability, and session replication).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Release highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New: &lt;a href="https://vaadin.com/docs/latest/components/tabs#tab-sheet" target="_blank" rel="noopener noreferrer"&gt;TabSheet component&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;New: &lt;a href="https://vaadin.com/docs/latest/components/tooltip" target="_blank" rel="noopener noreferrer"&gt;Tooltip component&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;New: &lt;a href="https://vaadin.com/docs/latest/components/spreadsheet" target="_blank" rel="noopener noreferrer"&gt;Spreadsheet component&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;New: &lt;a href="https://vaadin.com/docs/latest/tools/kubernetes" target="_blank" rel="noopener noreferrer"&gt;Kubernetes Kit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;New: &lt;a href="https://vaadin.com/docs/latest/tools/azure-cloud" target="_blank" rel="noopener noreferrer"&gt;Azure Cloud Kit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://vaadin.com/blog/vaadin-23.3-kubernetes-cloud-new-ui-components" target="_blank" rel="noopener noreferrer"&gt;Release blog post&lt;/a&gt;
 | &lt;a href="https://github.com/vaadin/flow/releases/tag/23.3.0" target="_blank" rel="noopener noreferrer"&gt;Release notes&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>How to deploy a Vaadin application to Google Cloud App Engine</title><link>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-to-google-cloud-app-engine/</link><pubDate>Tue, 26 Jul 2022 08:27:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-to-google-cloud-app-engine/</guid><description>&lt;p&gt;I tried to deploy a Vaadin application to Google Cloud App Engine.&lt;/p&gt;
&lt;p&gt;It was not as straightforward as expected, so I want to share my findings.&lt;/p&gt;
&lt;p&gt;The example project is available on GitHub: &lt;a href="https://github.com/simasch/vaadin-appengine-demo" target="_blank" rel="noopener noreferrer"&gt;https://github.com/simasch/vaadin-appengine-demo&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-the-vaadin-application"&gt;The Vaadin Application&lt;/h2&gt;
&lt;p&gt;First, I&amp;rsquo;ve created a new Vaadin application: &lt;a href="https://start.vaadin.com" target="_blank" rel="noopener noreferrer"&gt;https://start.vaadin.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Then I did a production build:&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;mvn package -Pproduction&lt;/pre&gt;
&lt;p&gt;That will generate an executable JAR file in the target directory.&lt;/p&gt;</description></item><item><title>Master-Detail with Hilla</title><link>https://foojayio.github.io/website/today/master-detail-with-hilla/</link><pubDate>Tue, 21 Jun 2022 12:13:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/master-detail-with-hilla/</guid><description>&lt;p&gt;In this article, I&amp;rsquo;ll explain how to use the web application framework &lt;a href="https://hilla.dev" target="_blank" rel="noopener noreferrer"&gt;Hilla&lt;/a&gt;
 to create a master-detail view with a Grid to display the data and a Form to edit the data.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-hilla"&gt;What is Hilla?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Hilla integrates a Spring Boot Java back end with a reactive TypeScript front end. It helps you build apps faster with type-safe server communication, including UI components, and integrated tooling. &amp;ndash; From &lt;a href="https://hilla.dev/" target="_blank" rel="noopener noreferrer"&gt;hilla.dev&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hilla uses TypeScript with &lt;a href="https://lit.dev/" target="_blank" rel="noopener noreferrer"&gt;Lit&lt;/a&gt;
and &lt;a href="https://developer.mozilla.org/de/docs/Web/Web_Components" target="_blank" rel="noopener noreferrer"&gt;Webcomponents&lt;/a&gt;
 in the frontend and Spring Boot in the backend. In the backend you&amp;rsquo;ll create endpoints from which the API and the TypeScript will be generated. This makes the access to the backend much easier and it&amp;rsquo;s also typesafe and compile-time-checked.&lt;/p&gt;</description></item><item><title>How to style a Vaadin Application</title><link>https://foojayio.github.io/website/today/how-to-style-a-vaadin-application/</link><pubDate>Tue, 05 Apr 2022 07:41:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-style-a-vaadin-application/</guid><description>&lt;p&gt;In this guide, we learn the basics of styling a Vaadin application using Cascading Style Sheets (CSS).&lt;/p&gt;
&lt;p&gt;While it is possible to style some parts of a Vaadin application using the Java API, this approach tends to be rather limited for mid- to large-sized applications.&lt;/p&gt;
&lt;p&gt;So, it is recommended to do the styling of a Vaadin application by adding CSS inside standard style sheets. This guide focuses only on the recommended style-sheets approach.&lt;/p&gt;</description></item><item><title>Blink a LED on Raspberry Pi with Vaadin</title><link>https://foojayio.github.io/website/today/blink-a-led-on-raspberry-pi-with-vaadin/</link><pubDate>Fri, 25 Mar 2022 14:44:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/blink-a-led-on-raspberry-pi-with-vaadin/</guid><description>&lt;p&gt;As I&amp;rsquo;m becoming a senior developer, at least in terms of age, I&amp;rsquo;ve transitioned from one language to another.&lt;/p&gt;
&lt;p&gt;One of my main interests has always been clean, easy-to-understand UIs (User Interfaces). That journey started for me with &lt;strong&gt;Director&lt;/strong&gt; (to create multimedia CD-ROMs), &lt;strong&gt;Flash&lt;/strong&gt; website animation, and &lt;strong&gt;Flex&lt;/strong&gt; Rich Internet Applications (= &amp;ldquo;Flash on steroids&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;When I started developing with &lt;strong&gt;Java&lt;/strong&gt; over 10 years ago, we had some projects with the early versions of &lt;strong&gt;Vaadin&lt;/strong&gt; and &lt;strong&gt;JavaFX&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Visualization of Business Function Message Flow with Vaadin and Neo4j</title><link>https://foojayio.github.io/website/today/visualization-of-the-message-flow-between-business-functions-with-vaadin-and-neo4j/</link><pubDate>Wed, 16 Mar 2022 08:21:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/visualization-of-the-message-flow-between-business-functions-with-vaadin-and-neo4j/</guid><description>&lt;h2 id="_the_project"&gt;The Project&lt;/h2&gt;
&lt;p&gt;Analyzing and visualizing the message flow between business functions was the goal of my current project. At first we considered using a UML tool for this job, but we came to the conclusion that it might not be as flexible as we need it to be. Finally I&amp;rsquo;ve got the assigment to create a custom web application.&lt;/p&gt;
&lt;p&gt;Since business functions and messages are related to each other, it made sense to represent them as a graph. That&amp;rsquo;s why I chose &lt;a href="https://neo4j.com/" target="_blank" rel="noopener noreferrer"&gt;Neo4j&lt;/a&gt;
 as the database. Now the question was how to manage and visualize the graph. As I&amp;rsquo;m expierenced with the &lt;a href="https://foojayio.github.io/website/today/vaadin-and-jooq-match-made-in-heaven/"&gt;Vaadin&lt;/a&gt;
 framework I want to use it also in this project.&lt;/p&gt;</description></item><item><title>Vaadin and jOOQ: Match Made in Heaven</title><link>https://foojayio.github.io/website/today/vaadin-and-jooq-match-made-in-heaven/</link><pubDate>Wed, 09 Mar 2022 08:25:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-and-jooq-match-made-in-heaven/</guid><description>&lt;p&gt;Have you ever had to write an application that didn&amp;rsquo;t do much other than display and change data? And did you use a Single Page Application framework like Angular, a REST API, and Hibernate?&lt;/p&gt;
&lt;p&gt;How about if that was a lot easier?&lt;/p&gt;
&lt;h2 id="_introducing_vaadin_and_jooq"&gt;Introducing Vaadin and jOOQ&lt;/h2&gt;
&lt;p&gt;Vaadin exists already for 20 years but was completely overhauled three years ago. Vaadin Flow is a web framework that allows the development of a web application in Java. It&amp;rsquo;s based on web components and the state is synchronized between browser and server.&lt;/p&gt;</description></item><item><title>Hilla 1.0 - A new reactive frontend framework for Spring Boot backends</title><link>https://foojayio.github.io/website/today/hilla-1-0-a-new-frontend-framework-for-springboot/</link><pubDate>Wed, 09 Mar 2022 08:20:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/hilla-1-0-a-new-frontend-framework-for-springboot/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/hilla-1-0-a-new-frontend-framework-for-springboot/og-image-github-700x350.png" alt="Hilla Framework" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hilla.dev/" target="_blank" rel="noopener noreferrer"&gt;Hilla&lt;/a&gt;
 is a new framework for building reactive web apps on Java backends. It seamlessly integrates a reactive &lt;a href="https://lit.dev" target="_blank" rel="noopener noreferrer"&gt;Lit&lt;/a&gt;
 TypeScript frontend with a &lt;a href="https://spring.io/projects/spring-boot" target="_blank" rel="noopener noreferrer"&gt;Spring Boot&lt;/a&gt;
 backend. Hilla is built and supported by &lt;a href="https://vaadin.com" target="_blank" rel="noopener noreferrer"&gt;Vaadin&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Hilla is designed to be simple enough for small utilities, but robust enough to build complex, enterprise-grade apps.&lt;/p&gt;
&lt;h2 id="h2-0-automatic-java-to-typescript-code-generation"&gt;Automatic Java to TypeScript Code Generation&lt;/h2&gt;
&lt;p&gt;Automatic TypeScript code generation helps ensure that the frontend always stays in sync with the backend, so you can build apps faster and with greater confidence, even when your team grows bigger. The strong type-safety also means you can explore server endpoint methods and their input and return types right from your IDE as you type.&lt;/p&gt;</description></item><item><title>Create a CRUD UI in Pure Java</title><link>https://foojayio.github.io/website/today/create-a-crud-ui-in-pure-java/</link><pubDate>Wed, 02 Feb 2022 17:10:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/create-a-crud-ui-in-pure-java/</guid><description>&lt;p&gt;In this guide, we create a web UI that performs full CRUD (create, read, update, and delete) operations on a Spring Data JPA backend. This UI is developed entirely in pure Java using &lt;a href="https://vaadin.com/docs/latest/flow/guide/quick-start" title="Vaadin Flow" target="_blank" rel="noopener noreferrer"&gt;Vaadin Flow&lt;/a&gt;
 (no HTML or JavaScript involved). You can explore the full source code on &lt;a href="https://github.com/tarekoraby/crud-ui-tutorial" title="GitHub" target="_blank" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id="h3-0-what-you-need"&gt;What You Need&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;About 15 minutes&lt;/li&gt;
&lt;li&gt;JDK 17 or later&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-1-step-1-import-a-starter-project"&gt;Step 1: Import a Starter Project&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://start.vaadin.com/dl?preset=no-views" title="Click here to download an empty project starter" target="_blank" rel="noopener noreferrer"&gt;Click here to download an empty project starter&lt;/a&gt;
. Unpack the downloaded zip into a folder on your computer, and import the project in the IDE of your choice.&lt;/p&gt;</description></item><item><title>Build Web Apps in Pure Java with Vaadin Flow</title><link>https://foojayio.github.io/website/today/build-web-apps-in-pure-java-with-vaadin-flow/</link><pubDate>Thu, 16 Dec 2021 09:21:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/build-web-apps-in-pure-java-with-vaadin-flow/</guid><description>&lt;p&gt;Vaadin Flow enables you to quickly build web apps in &lt;em&gt;pure Java&lt;/em&gt;, without writing any HTML or JavaScript.&lt;/p&gt;
&lt;p&gt;In this guide, you learn how to build a small but fully functional ToDo application using Vaadin Flow.&lt;/p&gt;
&lt;h3 id="h3-0-what-you-need"&gt;What You Need&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;About 5 minutes&lt;/li&gt;
&lt;li&gt;JDK 11 or higher (For example, &lt;a href="https://adoptium.net/" title="Eclipse Temurin JDK" target="_blank" rel="noopener noreferrer"&gt;Eclipse Temurin JDK&lt;/a&gt;
).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-1-step-1-download-a-vaadin-project"&gt;Step 1: Download a Vaadin Project&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://start.vaadin.com/dl?preset=flow-quickstart-tutorial" title="here" target="_blank" rel="noopener noreferrer"&gt;Click here to download an empty project starter&lt;/a&gt;
. Unpack the downloaded zip into a folder on your computer, and import the project in the IDE of your choice.&lt;/p&gt;</description></item><item><title>Vaadin 22 released with Quarkus support and stateless Fusion</title><link>https://foojayio.github.io/website/today/vaadin-22-released-with-quarkus-support-and-stateless-fusion/</link><pubDate>Wed, 01 Dec 2021 15:38:30 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-22-released-with-quarkus-support-and-stateless-fusion/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/vaadin-22-released-with-quarkus-support-and-stateless-fusion/1200x630-vaadin-release-v22-700x368.jpg" alt="Vaadin 22 released" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Vaadin is an open source development platform for building modern web applications on Java backends. It includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A large set of &lt;a href="https://vaadin.com/docs/latest/ds/components" target="_blank" rel="noopener noreferrer"&gt;UI components&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vaadin.com/flow" target="_blank" rel="noopener noreferrer"&gt;Vaadin Flow&lt;/a&gt;
 - a framework for building web apps 100% in Java.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vaadin.com/fusion" target="_blank" rel="noopener noreferrer"&gt;Vaadin Fusion&lt;/a&gt;
 - a framework for building reactive frontend apps in TypeScript with type-safe communication to a Spring Boot backend.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="https://vaadin.com/" target="_blank" rel="noopener noreferrer"&gt;vaadin.com&lt;/a&gt;
 to get started.&lt;/p&gt;
&lt;h2 id="h2-0-new-and-noteworthy-since-vaadin-21"&gt;New and Noteworthy Since Vaadin 21&lt;/h2&gt;
&lt;p&gt;Here are the highlighted new and improved features in vaadin 22. To see the full list of bug fixes and improvements, check Included Projects and Change Log.&lt;/p&gt;</description></item><item><title>Announcing New Book: "Practical Vaadin"</title><link>https://foojayio.github.io/website/today/new-book-practical-vaadin/</link><pubDate>Mon, 09 Aug 2021 18:02:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-book-practical-vaadin/</guid><description>&lt;p&gt;I am pleased to announce the publication of Practical Vaadin by Alejandro Duarte.&lt;/p&gt;
&lt;p&gt;The book is available now as an eBook, and print availability will follow within a few days:&lt;/p&gt;
&lt;figure class="wp-block-embed is-type-rich is-provider-amazon wp-block-embed-amazon"&gt;
 &lt;div class="wp-block-embed__wrapper"&gt;
 &lt;iframe title="Practical Vaadin: Developing Web Applications in Java" type="text/html" width="500" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com/kp/card?preview=inline&amp;amp;linkCode=kpd&amp;amp;ref_=k4w_oembed_Pn2dEsswHsNWme&amp;amp;asin=B09BYC4QWD&amp;amp;tag=kpembed-20"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;Alejandro&amp;rsquo;s book shows how to implement web applications in Java using the open source Vaadin framework version 20 and later.&lt;/p&gt;
&lt;p&gt;The book covers the key concepts and steps to become competent with modern versions of Vaadin, including everything from setting up the development environment to implementing advanced features such as Server Push and database connectivity.&lt;/p&gt;</description></item><item><title>Delegation vs. Inheritance in Graphical User Interfaces</title><link>https://foojayio.github.io/website/today/delegation-vs-inheritance-in-graphical-user-interfaces/</link><pubDate>Wed, 24 Feb 2021 16:07:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/delegation-vs-inheritance-in-graphical-user-interfaces/</guid><description>&lt;p&gt;In this article, we will look at the difference between inheritance and delegation concepts.&lt;/p&gt;
&lt;p&gt;Or, to put it in another way, why I prefer delegation and why I want to emphasize this rarely-used feature in Java.&lt;/p&gt;
&lt;h3 id="h3-0-the-challenge"&gt;The Challenge&lt;/h3&gt;
&lt;p&gt;The challenge we face today is quite common in the field of graphic user interfaces like desktop- or web-apps: Java is widely used as the development language for both worlds and it does not matter if we are in the classic fields of Swing or JavaFX or in the field of web frameworks like Vaadin. Explicitly, I&amp;rsquo;ve opted for a pseudo-class model in core Java, as I&amp;rsquo;d like to look at the design patterns here without any technical details.&lt;/p&gt;</description></item><item><title>Spectacular Java Projects on the Raspberry Pi</title><link>https://foojayio.github.io/website/today/spectacular-java-projects-on-the-raspberry-pi/</link><pubDate>Wed, 23 Sep 2020 10:38:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/spectacular-java-projects-on-the-raspberry-pi/</guid><description>&lt;p&gt;Thanks to Twitter and LinkedIn, I&amp;rsquo;ve been in touch with several developers who are doing cool Java stuff on the Raspberry Pi.&lt;/p&gt;
&lt;p&gt;Here I want to share a number of projects with you, as they can be an inspiration for all of us to get started with Java development on the Raspberry Pi!&lt;/p&gt;
&lt;h4 id="igor-souza---kafka-on-the-raspberry-pi"&gt;&lt;a href="https://twitter.com/Igfasouza" target="_blank" rel="noopener noreferrer"&gt;Igor Souza&lt;/a&gt;
 - Kafka on the Raspberry Pi&lt;/h4&gt;
&lt;p&gt;Igor shared this &lt;a href="https://twitter.com/Igfasouza/status/1293514673896202240" target="_blank" rel="noopener noreferrer"&gt;nice video where he set up a Kafka cluster on Raspberry Pi&lt;/a&gt;
. He also has a nice example where this is &lt;a href="https://twitter.com/Igfasouza/status/1297556313518616576" target="_blank" rel="noopener noreferrer"&gt;combined with an e-ink display to show real-time bus information&lt;/a&gt;
. Some of his work is available on GitHub where you can find &lt;a href="https://github.com/igfasouza?tab=repositories" target="_blank" rel="noopener noreferrer"&gt;Kafka and other example code&lt;/a&gt;
.&lt;/p&gt;</description></item></channel></rss>