DocsGo further

Go further

Under the hood

Three familiar foundations, one live application model. Follow a page from compilation to a browser patch.

Browse documentation

A meta-framework, by composition

Spring Boot provides the application, MVC integration, dependency injection, and transports. Angular’s compiler supplies template parsing. GraalJS runs the compiler and PostCSS at startup. Jaspring implements the Java component model, expression evaluation, signals, page turns, and HTML patching.

This gives you Angular’s template language without running a conventional Angular application in the browser. The browser receives rendered HTML and a small client runtime. Java browser closures optionally add a WebAssembly application module.

At startup

Classpath scanning discovers Jaspring components, pipes, and directives. Angular’s real compiler parses each template in GraalJS. Jaspring converts the result into Java AST records, resolves members, and validates the template.

PostCSS scopes component CSS; Tailwind runs here too if configured. Invalid templates fail startup with Angular’s compiler messages. The server does not evaluate JavaScript on the request path.

At render and event time

A controller returns JaspringView. The runtime creates a live page and renders its component tree in a turn. It waits for tracked work up to the configured stability timeout and wraps the result in the HTML layout.

The browser sends bound events back to that page. Java runs the handler under the page lock, change detection chooses changed views, and the transport delivers HTML patches. The browser runtime morphs the corresponding DOM.

The live loop
Browser event
    → page turn + Java handler
    → signal writes + change detection
    → changed component HTML
    → WebSocket or HTTP
    → browser DOM patch

The framework modules

jaspring-core owns the component, template, signal, zone, and live-page machinery. jaspring-spring-boot-starter adds auto-configuration, MVC views, layouts, live transports, and browser assets.

jaspring-gradle-plugin provides component scaffolding and browser-closure builds. jaspring-browser-runtime is the BrowserClient facade compiled into WebAssembly. jaspring-sample shows the pieces working together.

Jaspring · release + master guidesRead the framework source