Vaadin 15 and beyond: An insider's look at Vaadin's future

Kavish Weerawardane
Kavish Weerawardane
On Feb 11, 2020 4:40:47 PM
In Product

Vaadin has been on a two-decade long quest to provide developers with the cutting-edge tools and the DX they need to build UX-focused web applications that users love.

Today, the Vaadin platform is a leading option for mission-critical enterprise Java web-application development. Our platform is trusted by over 40% of Fortune 100 companies (think Dell, GlaxoSmithKline & Volkswagen) operating across a diverse range of sectors. In addition, the March 2020 release of Vaadin 15 (Try it here) is poised to kick-start our journey into an exciting new era of Vaadin.

The Vaadin platform’s performance, simplicity, powerful abstraction, and 15-year support commitment provides compelling practical benefits, especially for enterprises looking to build mission-critical web applications in Java. However, we appreciate that stability, reliability, and long-term vision are also frequently key factors in selecting critical infrastructure components, such as frameworks.

Read on for an insider’s look at our plans and vision for the next LTS release of Vaadin. We hope that this will give you the information necessary to decide whether Vaadin is the best fit for your organization, team, or project.

Learn more: Our community lead Marcus has written an excellent post about our adventures and milestones in 2019.

Want a regularly-updated general road-map of our company’s overall vision? Bookmark our roadmap page.

What is Vaadin 15?

Vaadin 15 is the initial release that starts the journey to the next Vaadin LTS (expected in 2021). It will receive updates until July 2020, one month after the release of Vaadin 16.

Vaadin 15 is mainly intended for forward-thinking developers and teams looking to explore and familiarize themselves with our latest feature implementations, while providing critical feedback that is instrumental in shaping the upcoming Vaadin LTS release.

The latest LTS release recommended for long-term production deployment is currently Vaadin 14.

A brief note about our release model: Each LTS (long-term support) release of Vaadin is preceded by several cutting-edge versions. These releases come out every 3 months and have support lifecycles of 4 months. A feature-complete LTS version that is supported for up to 15 years (enterprise licenses) is only released after several preceding versions.

Our vision for the next Vaadin LTS

Continued focus on what Vaadin does best: building UI focused Java-only web applications with ease

Until now, Vaadin did one thing extremely well: it allowed developers to create UX-first web apps entirely in Java. This meant powerful abstraction of the client-server communications model and the ability to code UI logic in Java. With this approach, developers can focus on the functionality and design of their application, without getting bogged down in the minutiae of concepts, such as REST, GraphQL, and DOM manipulation.

This development model will continue to be a core focus of the Vaadin platform. It provides inherent benefits, especially for Java-only teams working in mission-critical situations:

  • Component-based Java API and completely abstracted client-server programming model and communication layer.
  • Powerful abstraction hides the minute details of web development, allowing developers to focus solely on the application and UX aspects of development.
  • All UI code is executed securely on the server.

Our product team is working on a number of exciting enhancements leading up to our next LTS version, such as:

  • The introduction of a new form generator that includes helpers to reduce boilerplate code when creating forms.
  • Data provider improvements to allow query rows without knowing the count.
  • Right-to-left language support across all components, allowing Vaadin web apps to correctly and consistently display languages such as Arabic, Hebrew, and Urdu.

Several of these upcoming features will eventually be released as incremental updates for Vaadin 14.

Progressive as an option for the future

Progressive Web Apps (PWAs) blend the performance and offline capabilities of native apps with the portability and simplicity of traditional web apps, to deliver an engaging, performant, and platform-agnostic experience in the user’s web browser. Installation of PWAs is completely optional.

PWAs are also one of the fastest-growing trends in the app-development space.

While any web app made using Vaadin 12 or later can easily be converted into a PWA (with the simple addition of a @PWA annotation), there were limitations or workarounds involved in creating high-performing PWAs, especially where offline functionality was concerned.

Vaadin’s next LTS will implement several features focused on aiding developers in creating more robust PWAs with greater offline capabilities.

Want to learn more? Our community lead, Marcus, published a great post making the business case for PWAs. There is also a comprehensive tutorial on building PWAs.

To this end, we will focus our development efforts and investments on three key avenues:

One full-stack Vaadin framework, two development modelsServerVSClient

Our research uncovered two major tectonic shifts influencing web-app development:

  • The influx of PWAs, which are increasingly complex, modular, mobile, and reliant on offline experiences.
  • The increasing popularity of polyglot full-stack team structures within enterprises, wherein Java developers often work side by side with front-end specialists.

While Vaadin is an excellent option for building UI focused, Java only web-applications, we recognize that Vaadin comes up a bit short in certain contexts, especially when our customers need to:

  • Develop apps with a stateless server-side and those that require increased control over the client-server communication or the DOM structure (a necessity for many offline-capable apps).
  • Select a robust development platform that enables contributions by both Java and front-end developers on the same team.

Until now, utilizing Vaadin for app building in these circumstances involved complex workarounds, such as piercing the abstraction layer, building custom components, or incorporating (and spending on) third-party services/products.

Vaadin 15 and above will provide out-of-the-box solutions to these problems, with the ultimate goal of providing the Vaadin community with two fully-supported development models in our next LTS release:

  1. Programmatic server-side Java development model complete with powerful abstraction abstraction, allowing developers to write Java UI logic without considering the client-side.

  2. Declarative front-end LitElement-based TypeScript development model that allows developers to write TS UI logic and fetch data from the server. All component instances will exist solely on the client-side, but developers will have the possibility to seamlessly query the server and update the UI based on the response. Any application developed using this model will have the possibility of being completely stateless on the server.

A robust, extendable design system

Essentially, design systems allow designers and developers to effectively collaborate through the use of clearly defined and reusable common building blocks.

Also read: This blog post by our very own Marc Englund offers a concise introduction to design systems, along with additional links to more in-depth material.

Vaadin has long offered pre-built themes and a constantly-increasing stream of default Vaadin components (built on the platform-agnostic Web Components standard), while providing customers with the tooling required to build their own custom components and themes.

However, there is currently no convenient way for our customers to package their custom components and themes in a way that makes them "first-class citizens" equivalent to our default offerings. Our Design System initiative will solve these issues by providing the needed tools to make this happen.

We look forward to providing developers with the documentation and tooling necessary to conveniently edit and customize our available themes, along with the option to visually edit them. This effort is part of our long-term push to eventually create a unified web-based IDE that runs in a browser environment. Finally, we are also looking into extending our support to designers, by providing them with the proper assets needed to collaborate with developers (such as an official Figma UI kit).

In practice, these changes in combination will allow Vaadin developers to build upon the base (Vaadin) design system and utilize our provided tooling to add or remove components in line with their organization’s own requirements. We aim to enable teams to create their very own highly-specific internal design system that can be reused across multiple projects, while simultaneously allowing seamless upstream merging with the updated base Vaadin design system.

Collaborative experiences

As latency in online communications approaches negligible levels and businesses increasingly favor remote, distributed workforces, collaborative experiences are set to be one of the next frontiers in online web-apps.

Major players in the technology sector, such as Google (Google Docs), Microsoft (Office 365), Figma (Figma) and Adobe (CC collaborative tools) have already thrown their hats in the ring, with a variety of office-productivity and design tools. We want to provide Vaadin developers with the tools to build similarly responsive and collaborative experiences.

Our first step towards enabling the development of end-user collaboration is the creation of Vaadin components that allow asynchronous communication between users.

The first is a chat/activity log component, which allows developers to add interactive-chat experiences to their apps, or implement an activity log centered around work items. This component is due to be launched in the next few months and will be followed by more advanced components that enable permission sharing and management, and multiplayer-editing capabilities in Vaadin apps.

A world of possibilities are on the horizon

In conclusion, our investment in these three key areas (client-side development support, an extendable design system, and collaborative experiences) will provide Vaadin developers with the tooling and support they need to create performant, offline-capable Progressive Web Apps for a variety of consumer-facing and mission-critical use-cases.

Additionally, we want to assure all Vaadin users that these changes will be rolled out gradually, and we are working to provide backward compatibility and convenient migration paths. Vaadin 14 will also receive several of our newer features, at least from the early milestone releases, such as Vaadin 15.

However, we do encourage all interested developers to try out Vaadin 15 and provide feedback through our Github repository or in the comments. Let us know which features would make Vaadin the framework you need. Your voice can make a difference.

Finally, what do you think about our plans for Vaadin’s next LTS? Let us know in the comments.

Kavish Weerawardane
Kavish Weerawardane
Kavish leads our product marketing team in bringing exceptional developer and enterprise focused products to market. He is particularly passionate about design systems, UX & real-time collaboration technologies.
Other posts by Kavish Weerawardane