Siirry pääsisältöön
← Blog

Java framework for web applications: what to require

· 9 minuuttia
webforJ
Do it all in Java! Build in Java, deploy to the Web.

cover image

Most lists of Java web frameworks compare names. The question that decides the project is different: what does the app need on the day it goes to production, and how many separate tools will you stitch together to get it? A Java framework for web applications has to answer that question, and the answer starts with a choice between two architectures.

For a business app, our answer is webforJ, the full-stack Java framework. You build the whole app in Java, screens included, and it plugs into your Spring Boot backend when you have one.

This guide is the pillar guide for the search phrase java framework for web applications. It lists what such a framework must provide, explains the two architectures you can choose from, shows what webforJ ships for each item, and says plainly when a backend framework with a JavaScript frontend is the better fit.

The two architectures​

Every Java web framework falls into one of two shapes.

A backend framework plus a separate frontend. Spring Boot, Quarkus, Micronaut, Jakarta EE and Javalin handle HTTP, services and data in Java. The browser UI is a second app, usually React or Angular, that talks to the backend over REST or GraphQL. Two languages, two build chains, one API contract to keep in sync.

One full-stack Java framework. Routing, components, forms, security and data access live in a single Java codebase. The same developer who writes the service writes the screen that uses it. There is no REST layer between them that exists only to feed your own UI.

Our comparison of Java web frameworks by job covers the backend options one by one, and the best Java UI framework for business apps ranks the UI side. This post is about the requirements that cut across both.

What the framework must provide​

Nine capabilities decide whether a framework carries a business app or leaves you assembling one. Here is what each means and how webforJ answers it.

Routing and navigation​

Require URLs that map to screens, deep links that survive a reload and nested layouts. In webforJ a view is a Java class mapped to a path with an annotation. See routing and defining routes.

UI components​

Require a table, a date picker and an app layout out of the box, or you are shopping for libraries on day two. webforJ ships a component library that includes AppLayout, all composed in Java.

Forms and validation​

Require field binding to a model and validation with a standard. webforJ uses data binding with Jakarta Validation, the same annotations your backend entities already carry.

Data access​

Require rows to come from a repository, not a hand-written endpoint. webforJ's repository pattern feeds tables, and the Spring Data JPA integration connects the repositories you already have.

Security​

Require access rules on routes, not only on buttons. webforJ attaches annotations to routes, so a view that a user may not open is never rendered, and it works with Spring Security. Route security is available since 25.10. Start at security.

Testing​

Require fast tests that do not need a browser. webforJ's TestBed, available since 26.03, runs browserless JUnit tests against views, and end-to-end tests with Selenium or Playwright remain an option. See testing and Java UI testing without a browser.

Deployment​

Require one artifact to ship. A webforJ app is an executable JAR with Spring Boot or a WAR for a servlet container, with no frontend bundle on a second host. The Spring Boot guide and the production builds section cover it.

Upgrades​

Require a path for existing code when a major release lands. webforJ publishes OpenRewrite recipes that rename APIs, change types and update dependencies, and leave a TODO comment where no one-to-one replacement exists.

AI tooling​

Require an assistant that checks real APIs instead of guessing method names. The webforJ AI plugin bundles an MCP server and Agent Skills, and the craftforJ Assistant checks every edit against a Java compiler. The full loop is in the AI verification loop.

The requirements at a glance​

Use this table when you shortlist a framework. The right column is what webforJ provides.

RequirementWhat to askwebforJ
RoutingURL-to-view mapping, nesting, deep linksAnnotated routes, layouts
ComponentsTable, inputs, dialogs, app layoutComponent library composed in Java
FormsBinding and standard validationData binding, Jakarta Validation
Data accessRows from repositories, not hand-built endpointsRepository pattern, Spring Data JPA
SecurityRules on routes, Spring Security fitRoute annotations, Spring Security integration
TestingFast tests without a browserTestBed, Bun frontend tests, Selenium or Playwright
DeploymentOne artifact to shipExecutable JAR or WAR
UpgradesA tool for major versionsOpenRewrite recipes
AI toolingAssistant that checks real APIsMCP server, Agent Skills, AI plugin

A backend-only framework answers the middle rows well and leaves the first three and the last to the second app you build next to it. That gap is the cost of the split architecture, and the cost of separate frontend and backend teams is worth reading before you commit to it.

How it fits with Spring Boot​

You do not choose between webforJ and Spring Boot. webforJ integrates with your Spring Boot backend: you generate a Spring Boot project, inject services into views, use Spring Data repositories for tables and Spring Security for routes. It also runs standalone when there is no Spring in the picture. If your team already knows Spring, our Java full stack framework guide walks through a slice from entity to screen.

The unusual part is what you stop writing. A UI that talks to your own services over REST needs controllers, DTOs and a client, all of which exist only to carry data between two halves of the same app. Your Spring Boot app doesn't need a REST API for the UI explains the reasoning, and you can still expose a REST API for other clients when you need one.

When a split stack wins​

A separate JavaScript frontend is the better choice in a few situations, and we would rather say so than pretend otherwise.

  • Several independent clients, such as a public website, a mobile app and partner integrations, all need the same API from the first day.
  • You have a frontend team that already ships a JavaScript app and wants to keep its tools.
  • The product is a consumer-facing site whose design is the product, with heavy custom animation and marketing pages.

For internal tools, back-office systems, admin consoles, ERP screens and the long tail of business apps, none of that applies, and the split costs more than it returns. These are the apps webforJ is built for. The enterprise checklist and the complete platform walk-through go deeper on the preceding items, and how to build a web app in Java is the hands-on version.

Why this is the stronger choice​

Pick a framework by counting the seams. Every seam between languages, build chains, teams or API contracts is a place where work is duplicated and bugs hide. With a backend framework plus a frontend, the seams sit at the API, the build, the type definitions and the validation rules, which you write once in Java and again in TypeScript.

With webforJ, the full-stack Java framework, validation lives on the model, security lives on the route, tests run in the same JUnit build and the deployable is one artifact. A developer who reads Java can read the whole app, and an AI assistant works against one codebase and one set of checked APIs instead of two. That is the case for it, and it holds for the class of apps that most Java teams build. Simple Java web development describes what changes day to day.

Start with one view​

Generate a Spring Boot project with startforJ, add one route and one form bound to a model, and run it. The getting started guide covers prerequisites and the first run.

Frequently asked questions​

What is the best Java framework for web applications?​

It depends on the app. For business apps where the team writes Java, webforJ, the full-stack Java framework, covers routing, components, forms, security, testing, and deployment in one codebase. For a backend that serves several independent clients, a backend framework such as Spring Boot fits.

How is a Java web app framework different from a backend framework?​

A backend framework handles HTTP, services and data, and leaves the browser UI to a separate JavaScript app. A full-stack framework such as webforJ also covers the screens, so the whole app is Java. They combine well, because webforJ integrates with Spring Boot.

Do I need JavaScript for Java web development?​

Not for a business app built with webforJ. Views, forms, tables and navigation are written in Java. You can still add custom web components or frontend sources when a project needs them.

How long does Java web app development take with a full-stack framework?​

It depends on the app, so we do not quote a number. What shortens the path is fewer moving parts: one language, one build, no REST layer for your own UI, and generated project structure from startforJ.

Can I use webforJ with an existing Spring Boot app?​

Yes. webforJ integrates with Spring Boot, so views can use your existing services, Spring Data repositories and Spring Security configuration. You add it to the project and build screens in Java next to the code you have.

Rakennatko jotain webforJ:llä?

Keskustele tiimin kanssa projektistasi, migraatiosta tai siitä, sopiiko webforJ sinulle.

Ota yhteyttä