Author: Matti Tahvonen

Build modern web apps 100% in Kotlin
Build modern web apps in 100% Java is the tagline often used for Vaadin Flow. By changing the language, this could actually apply to Kotlin as well, known for its Kotlin-to-JavaScript transpilation. Kotlin code can be transpiled to JavaScript for execution in the browser, so one could argue that no ...

Persist your data with pure Java
In the fast-paced world of software development, efficiency and simplicity often dictate a project's success. This is why many Java developers have chosen Vaadin. With Vaadin, you can use a single language and execute your code in a single execution environment to create compelling web UIs. This ...

Forget passwords - Accessing WebAuthn API with Vaadin
Various WebAuthn/passkey-related questions have been trending in the Vaadin community, and unsurprisingly so. In 2024, "passkeys" should become the only acceptable authentication method for any self-respecting software craftsman, and passwords should be burnt with 🔥. Some questions have been ...

Asynchronous JavaScript execution in Vaadin Flow
Web applications built entirely in Java. That promise holds true when core Vaadin Flow components and browser APIs are enough. However, if you’re creating custom components or using modern asynchronous browser APIs, you’re likely to encounter a very different kind of “Promise.” JavaScript's ...

Testing Vaadin applications and add-ons using Playwright
Playwright is a browser automation tool similar to Selenium (WebDriver). These tools can be used as such to implement end-to-end tests that simulate actual user actions through the browser. Often, those are used through higher-level testing libraries such as Vaadin TestBench (built on top of ...

Embedding Vaadin Flow apps in a React-based web app
In my recent blog post, I discussed wrapping a component implemented with React in a Vaadin application. A greatly undervalued way to use Vaadin is by implementing only certain functions or parts of your web app or website. In that case, we are essentially doing the opposite: wrapping a Vaadin ...

Lazy Loading Hierarchical Data for Efficient UI and Database Performance
I shared my experience with performance optimizations a couple of weeks ago at our Vaadin Create conference. One key takeaway was implementing lazy loading at the client-server and database layers. Lazy loading essentially transfers only the required data to the client and requests a reasonable ...

Creating a Java wrapper for a React component
In a recent blog post, I debunked the myth that a Web Component is essential as a counterpart to your Vaadin Java component. The Element API in Vaadin Flow is also apt for raw JS components. Given that React components are JS components, it's feasible to wrap them directly. However, React's unique ...

You might not need the database
Bashing ORM tools, which in the JVM bubble is most likely Hibernate, is probably the most common hobby among developers. I agree ORM is often an obsolete piece in our technology stacks, but I claim that in most cases, it ought to be the relational database itself that should be burnt with fire. ...