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.
FoxyUI vs. a typical SPA stack
| Aspect | FoxyUI | React / Next.js SPA | Spring MVC + JSP |
|---|---|---|---|
| Languages | Java only | Java + TypeScript | Java + templates |
| Frontend build | None | npm, Vite/Webpack | None |
| UI updates | Changed fragments only | Client-side virtual DOM | Full page reload |
| Client JS | ~25 KB runtime | 350 KB – several MB | Varies |
| State | Server only | Duplicated client + server | Server |
| Deployment | One WAR | Node server or CDN + API | WAR |
Your first FoxyUI page in four steps
-
Create a web project
Any Maven or Eclipse Dynamic Web Project targeting Java 21 and Jakarta Servlet 6 (Tomcat 10/11).
-
Add the FoxyUI JAR
Copy
foxyui-4.0.jarintoWEB-INF/lib/. It is the only dependency — nothing to install on the client side. -
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)); } } -
Register the route and deploy
FoxyConfig.setProductionMode(true); FoxyAppRegistry.registerPage("/hello", "hello", HelloPage::new);Map
FoxyServletinweb.xml, build the WAR (mvn packageor Eclipse Export → WAR) and deploy it to Tomcat.
Adding AI to your app? Meet SamurAI.
A zero-dependency Java framework for AI agent pipelines with 31 LLM providers.
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.