SoftWay
FoxyUI 4.0 • Java 21 • Tomcat 10/11

Web apps written entirely in Java

FoxyUI is a server-driven web framework. You compose the interface from Java components and handle events on the server; the browser only receives the HTML fragments that changed. No Node.js, no bundler, no client state to keep in sync — just one WAR file.

How FoxyUI works

Business logic, validation and UI live in one place — your Java code — on top of proven open standards.

🧱

Java component tree

Compose Card, Button, TextField, layouts and more with a fluent, type-safe API.

⚡

Partial HTML updates

After an event the server sends only the changed fragments (out-of-band swaps). No virtual DOM, no full reloads.

☕

Jakarta Servlet 6 & Java 21

Runs on Tomcat 10/11 or Jetty 12 and uses virtual threads for high concurrency.

📊

CSS-only charts

Bar, column, line and pie charts rendered from semantic HTML tables with Charts.css — no JS charting library.

📡

Real-time push

WebSocket and Server-Sent Events for live dashboards, notifications and telemetry.

🛡️

Secure by default

CSRF protection, server-side validation and a minimal client surface. Light and dark themes included.

The app and the Java code behind it

In-browser simulations of real FoxyUI apps. Pick one, use it, and read the Java source that defines it.

📄 Calculator2.java

            

FoxyUI vs. a typical SPA stack

AspectFoxyUIReact / Next.js SPASpring MVC + JSP
LanguagesJava onlyJava + TypeScriptJava + templates
Frontend buildNonenpm, Vite/WebpackNone
UI updatesChanged fragments onlyClient-side virtual DOMFull page reload
Client JS~25 KB runtime350 KB – several MBVaries
StateServer onlyDuplicated client + serverServer
DeploymentOne WARNode server or CDN + APIWAR

Your first FoxyUI page in four steps

  1. Create a web project

    Any Maven or Eclipse Dynamic Web Project targeting Java 21 and Jakarta Servlet 6 (Tomcat 10/11).

  2. Add the FoxyUI JAR

    Copy foxyui-4.0.jar into WEB-INF/lib/. It is the only dependency — nothing to install on the client side.

  3. Write a page in Java

    public class HelloPage extends FoxyPage {
        private final TextField name = new TextField();
        private final Label greeting = new Label();
        private final Button hello = new Button("Say hello");
    
        @Override
        public void init() {
            hello.onClick(e -> greeting.setText("Hello, " + name.getValue() + "!"));
            add(new Card().add(name, hello, greeting));
        }
    }
  4. Register the route and deploy

    FoxyConfig.setProductionMode(true);
    FoxyAppRegistry.registerPage("/hello", "hello", HelloPage::new);

    Map FoxyServlet in web.xml, build the WAR (mvn package or Eclipse Export → WAR) and deploy it to Tomcat.

More technical details Source code, full API reference, architecture notes and more examples. github.com/Ste3fan/FoxyUI

Adding AI to your app? Meet SamurAI.

A zero-dependency Java framework for AI agent pipelines with 31 LLM providers.

Explore SamurAI →

Frequently asked questions

What is FoxyUI?

FoxyUI is a server-driven web framework by SoftWay. You build the UI as a tree of Java components; events are handled on the server and only the changed HTML fragments are sent to the browser.

Do I need Node.js, npm or a JavaScript framework?

No. FoxyUI ships as a single JAR. A small HTML-over-the-wire runtime (about 25 KB) is served by the framework; there is no frontend build step.

Where can a FoxyUI application run?

Any Jakarta Servlet 6 container with Java 21+, such as Apache Tomcat 10/11 or Eclipse Jetty 12. Applications are packaged as a standard WAR.

Is FoxyUI suitable for production?

Yes. It has a production mode and built-in CSRF protection, and all state and validation stay on the server.