- Supports major browsers (Firefox/Gecko, Internet Explorer,
Safari, Chrome, Konqueror, and Opera) but also plain HTML browsers
- Simple deployment in standard Java Servlet 2.4 or 3.0 containers.
- No need for IDE plugins: it's plain old Java.
as far as possible, by using graceful degradation or progressive
- Efficient rendering and low latency.
- Support for browser history navigation (back/forward buttons and
bookmarks), pretty URLs with HTML5 History if available, and
search engine optimization with a unified behavior for plain HTML
or Ajax sessions.
- Widget centric API that promotes component reuse and increases
- Uses an event listener system for server-side event handling,
comparable to Java GUI frameworks (SWT, Swing).
- Listen for keyboard, mouse, focus and scroll events, and get
event details (such as mouse position, modifier buttons, or
- Automatic synchronization of form field data between browser and
only event handling), and emit Java signals from this
- Flexible Drag&Drop API.
- Timed events and server-initiated updates ("server push"), the
latter using Servlet 3.0 async features when deployed in a Servlet
Native painting system
- Unified painting API which uses the browsers native (vector)
graphics support (inline VML, inline SVG, or HTML5 canvas).
- Supports arbitrary painter paths, clipping, text, images,
transformations, drop shadow.
See also the Widget
for an interactive overview of built-in functionality.
- Enables continuous use of HTTPS through low bandwidth
- Built-in Cross-Site Scripting (XSS) prevention. Rendered text is
always filtered against potentially malicious code, making XSS
attacks against JWt applications (close to) impossible.
- Not vulnerable to Cross-site Request Forgery (CSRF) because
cookies are not needed for session tracking.
- Not vulnerable to breaking the application logic by skipping to
a particular URL, since only those events exposed in the interface
can be triggered.
With JWt, event handling code constructs and manipulates a widget
tree, which can easily be inspected by test code. Therefore, a test
allows your application to be instantiated and events
to be simulated in absence of a browser, short-cutting the underlying
request/response cycle that would otherwise require a simulated
- Deploy into servlet containers (Tomcat, Jetty) and application
- Consists out of (currently four) jar files that need to be
included in the IDE or used in war/ear archives.
- No XML, except for JEE's web.xml and message resource bundles.