ItsNat
From Wikipedia, the free encyclopedia
ItsNat is an open source Java AJAX Component based web application framework, it offers a "natural" approach to modern web development.
Contents |
[edit] Overview
ItsNat is server centric using an approach called TBITS, "The Browser Is The Server". ItsNat simulates a Universal W3C Java Browser at the server containing a W3C DOM Level 2 node tree and receiving W3C DOM Events.
[edit] How it works
When the server DOM tree is modified using Java W3C DOM APIs by the developer, this modification is detected (firing DOM mutation events) and automatically sent to the real web browser as JavaScript DOM based code, synchronizing the client DOM accordingly, usually as response of an AJAX event (ItsNat is heavily based on AJAX).
The developer code in the server can register Java W3C DOM Event listeners listening for W3C DOM events, this listener registration is automatically propagated to the client. When the user, for instance, clicks a "listened" element, the real browser event is sent to the server using AJAX, converted to a W3C DOM event and received by the server based listener(s).
The original page layout is defined using pure HTML or XHTML based templates with no logic. If the modification is big ItsNat provides "template fragments", a template fragment is a piece of (X)HTML (or XML) markup that can be inserted (included) as DOM into the main tree statically or dynamically (typically as a response of a user/AJAX event).
To save server memory ItsNat provides a DOM tree node cache in a serialized form (as plain text not DOM).
[edit] Core features
- DHTML on the server, client automatically synchronized
- Web-continuations ("continue" events)
- User defined event types as W3C DOM Events extensions
- AJAX Timers
- Long running server tasks (client notified when the task finishes)
- COMET without special application servers
- DOM utils (to simplify DOM manipulation)
- Resolution of ${} based variables in markup
- W3C ElementCSSInlineStyle support in the server
- Out of the box remote/view control of pages of other users/sessions
- XML generation
- Non-HTML namespaces support like SVG embedded in XHTML and pure SVG pages with AJAX
- JavaScript generation utilities
- Events fired by the server sent to the client (server-sent events) simulating user actions for instance to test the view from the server (functional web testing)
- Events fired by the server dispatched directly to the server W3C DOM tree simulating user actions with no browser interaction. Again useful for functional web testing (faster than browser version), and for AJAX-compatible bookmarking/permalinks compatible with Google/search engines.
- Custom pretty URLs
- Previous/forward page navigation (pull and push referrers) with back/forward button support
- Degraded modes (AJAX disabled and JavaScript disabled modes)
[edit] Component System
ItsNat provides a Component system built using the core features of the framework. These components are AJAX based and inspired in Swing, reusing Swing as far as possible such as data and selection models, but ItsNat is not a Swing clone in the web and is not a pixel based web framework.
ItsNat provides several button types, text based components, labels, lists, tables, trees usually with content editable "in place".
Any HTML element can be a component, for instance any element can be a normal button, a check box, a radio button, any element list may be a combo or a list component, for instance a group of SVG circles may be a multiple selection list component. Components can be used to generate XML too.
ItsNat components are not intrusive because the component view (markup) is provided by the developer and attached to the component.
[edit] Requisites / Platforms
ItsNat is pure Java and runs in any Java Virtual Machine v1.4 as the minimum configuration and virtually any Servlet compliant container.
Supported desktop browsers: Internet Explorer 6+, FireFox 1+, Safari 3+, Opera 9+, QtWebKit (Qt 4.4)
Mobile browsers tested (all including AJAX): Opera Mini 4, Opera Mobile 8.6, NetFront 3.5, Minimo 0.2, Internet Explorer Mobile 6 (Windows Mobile 6), iPhone/iPod Touch/iPhone SDK, Android, S60WebKit (S60 3rd), Iris[1] 1.0.8 and QtWebKit embedded (Qt 4.4)
[edit] See also
- Ajax
- Ajax framework
- Comet (programming)
- List of web application frameworks
- Web application frameworks
- Comparison of web application frameworks
[edit] External links
- [2] ItsNat Home page
- [3] Online demo and examples with source code
- [4] Discussion/opinion at JavaLobby
- [5] Discussion/opinion at javaHispano