Comparing Frontend Frameworks for Spring Boot: React, Angular, and Vaadin (+JHipster)
Tags: Java, Spring Boot, Frontend Framework, Vaadin, Frontend Development

Comparing Frontend Frameworks for Spring Boot: React, Angular, and Vaadin (+JHipster) Lilli Follow Jul 6 · 5 min read

This article was originally published on Vaadin.com

Spring Boot is a preconfigured version of the Spring framework that makes it easy to create stand-alone, production-grade applications. Spring Boot is a backend framework that has become a major player in the enterprise Java ecosystem. It lets Java developers start building web applications quickly, without fuss.

Today we are spoilt for choice, with several different frontend frameworks out there that go well with a Java Spring Boot backend. To help you decide on a stack, we’ve done some of the heavy lifting by comparing the most popular frontend frameworks.

How does Angular compare to React, and where is Vaadin’s position in all of this? How does JHipster fit in? Let’s find out!

Comparing React, Angular, and Vaadin

We can begin our comparison by placing Angular, React, and Vaadin on a continuum, based on how opinionated each framework is.

An opinionated framework is designed in such a way that its users will experience the least friction with the framework, if it is used according to the assumptions made by the original framework designer.

React

React is actually a library and not a framework, meaning that it helps you build components with reactive templates. The model that React provides is very flexible, allowing you to build larger apps out of these components. Out of Vaadin and Angular, React is the least opinionated.

It comes with a vast ecosystem and, as the developer, you make the decisions on which set of tools and libraries you want to use. Essentially, with React you design your own framework that is specific for your project. This can often be time-consuming and lead to other bumps along the way.

For example, by building your project and own framework with React, your dependencies often have dependencies, meaning that you end up relying on other people and open source projects.

If React gets an update and one of the third-party dependencies that you’ve used in your framework doesn’t support the update, you must decide whether to stay on the older version of React, or to update and choose an entirely new set of UI components.

The following Devnexus 2021 presentation by our Head of Community, Marcus Hellberg, is insightful and dives into the nitty-gritty of not only React, but other frontend frameworks too.

Angular

At the opposite end of the continuum, we can find Angular, which is considered to be a highly opinionated framework. Angular defines its own platform for you to build on, so it comes with everything from dependency injection to testing and a component model, as well as custom ways of doing server calls.

In essence, everything you do in Angular has an Angular-specific way of doing it, rather than making use of the more common JavaScript way. Angular provides a one-stop shop for all that you need for the frontend of your app.

Vaadin

Vaadin takes the middle road between Angular and React. Vaadin provides you with a set of hand-picked tools and libraries that function well together and use plain TypeScript or Java. As a result, when you’re working with Vaadin, there are very few library- or Vaadin-specific things you need to learn.

With Vaadin, you get a fully featured frontend framework, as well as a backend framework, server-client communication, tooling, and components. Due to its maintainability, full type safety, and a mechanism for ensuring that your backend and frontend stay in sync, Vaadin is especially well suited to larger projects with longer lifespans.

Everything you need in order to build and maintain an app is literally at your fingertips with Vaadin. As a developer, you don’t need to spend time on setup and configuration with Vaadin. Instead, you can start coding right away, increasing your productivity.



Would you like to give Vaadin a go? Get started — here!

A summary of the feature comparisons between each frontend framework

Out of the three frameworks, only Vaadin comes with a backend, which in our case is a Spring Boot backend, as well as a type-safe way to communicate with it.

Simply put, Vaadin comes with both what runs in the browser and a way to connect to a server. Angular and React are more bring-your-own back-end or, in the case of React, you build your own custom framework whilst building the app.

For a more practical understanding of the programming differences between Angular, React, and Vaadin, check out the following video, also by Marcus Hellberg.

What about JHipster?

JHipster is a project generator for Spring Boot web projects. It is a guided walk-through for selecting a backend and frontend, and deciding which libraries and configurations you want to use; and then JHipster will generate those into your project.

It automates the decision process and generates all the required boilerplate and setup code. However, JHipster is not a full-stack framework and you are still the one who needs to maintain everything going forward.

Some key differences between Vaadin and JHipster include:

Multiple configurations — JHipster has several configurations available for backend and frontend.

— JHipster has several configurations available for backend and frontend. Lacks type safety — JHipster doesn’t come with a type-safe way of accessing your backend.

— JHipster doesn’t come with a type-safe way of accessing your backend. App complexity — JHipster generates an overwhelming amount of code with many libraries, which can lead to complex apps that are challenging to maintain.

Vaadin offers a much more simplified development process. With our curated set of libraries and smaller number of configuration options, everything works together effortlessly and you can focus on the essential — building apps that users will love.

On our comparison page, you can take a more in-depth look at how all of the different frontend frameworks from Angular, React, Vue, and Vaadin Flow and Fusion differ from each other.

If you have any further questions, do leave us a comment below!

Get started with Vaadin!