Go further
Status & compatibility
Familiar syntax comes with a different execution model. Know the current boundaries before building on them.
Browse documentation
Experimental, and usable for exploration
The published Jaspring 0.2.0 starter implements server-rendered components, live browser events, signals, and zone and zoneless change detection. Client hooks, browser calls, and Java-to-WebAssembly browser closures are implemented in the current master source and require a matching source build. Static generation and incremental regeneration remain future work.
A live page keeps its component tree and state on the server between events. Interaction depends on a working connection. Evaluate that architecture and the experimental API against your application’s needs.
Angular syntax, Java behavior
Templates are parsed by Angular’s compiler, but execution happens against Java objects. Signal and input equality use Objects.equals. Numeric results are Long or Double, then coerced at typed Java boundaries.
All scanned components, pipes, and directives are currently globally visible. Angular standalone import boundaries are not enforced. References on ordinary elements contain server-side element metadata, not browser DOM nodes.
Rendering and lifecycle boundaries
@defer renders placeholders unless hydrate triggers call for the main content. Server triggers do not run. ICU plural categories currently cover English categories. Dates and numbers use JDK locale data rather than Angular’s CLDR data.
Effects run before views in page ticks. Sibling lifecycle phases are not batched exactly like Angular. There is no development-mode ExpressionChangedAfterItHasBeenChecked second pass and no parallel sibling rendering.
Browser and trust boundaries
Event preventDefault and stopPropagation flags are decided when handlers render. The HTML sanitizer uses an Angular-derived allowlist over a tolerant tokenizer instead of a browser DOM parser.
Java browser closures run client-side. Captures and results cross the network as JSON; never capture secrets. The optional WebAssembly runtime needs a compatible browser and Oracle GraalVM’s build tooling.
Report reproducible issues in the framework’s GitHub repository. Include the smallest component, template, configuration, and steps that demonstrate the behavior.