JWt: an introduction
JWt is a Java library for developing web applications.
The API is widget-centric and uses well-tested patterns of desktop GUI development tailored to the web. To the developer, it offers abstraction of web-specific implementation details, including client-server protocols, event handling, graphics support, graceful degradation (or progressive enhancement) and URL handling.
Unlike many page-based frameworks, JWt was designed for creating stateful applications that are at the same time highly interactive (leveraging techinques such as Ajax to their fullest) and accessible (supporting plain HTML browsers), using automatic graceful degradation or progressive enhancement. Things that are natural and simple with JWt would require an impractical amount of effort otherwise: switching widgets using animations, while being perfectly indexed by search robots with clean URLs, or having a persistent chat widget open throughout, that even works in legacy browsers like Microsoft Internet Explorer 6.
JWt applications can be deployed in a standard Java Servlet container.
Interactive, secure and accessible
By using standard Java and JVMs, JWt applications can benefit from any existing Java libraries and JVM features including its support for your favourite scripting language.
Typical use scenarios:
- High performance, complex web applications (with a database backend) that require a responsive and dynamic user interface and benefit from the use of Java, if only to use Java refactoring tools while keeping track of ever changing requirements.
- Web applications which maximally benefit from modern browser capabilities but with graceful degradation to adhere to W3C accessibility guidelines and be search engine friendly.
- Porting of Java desktop applications to the web.
Some benefits of using JWt
- The library allows you to develop web applications much like you develop Java desktop applications, using your favourite JVM programming language, while benefitting fully from the powerful tools available for (Java) development such as flexible debugging and source code refactoring.
- There are no fragile string-based bindings of parameters in templates or XML files, nor do you need to implement tedious (and security critical) request/response controller logic.
- Just a library: no need for new conventions which imply behavior or requirements for organizing your source code.
- Optionally, use XHTML and CSS for layout and decoration.
- Generates standards compliant HTML or XHTML code.
- Portable, anti-aliased graphics optimized for web usage (using inline VML, inline SVG, HTML5 canvas or PNG images).
- Avoid common security problems since Wt has complete control over the presentation layer and proactively filters out active tags and attributes, does not expose business logic, and simplifies authentication using a stateful design.
- Ultra-fast load time and low bandwidth usage, which are affected only by screen complexity, not application size. Wt implements all the common tips and tricks for optimizing application responsiveness and even optimizes per browser.
- Integrates well with modern object relational mapping techniques such as the Java Persistence API (e.g. Hibernate).