Home Overview Demos/Webs News Download/Install Docs/Support Investors/Partners Commercial Tutorial: Simple ItsNat (Core) Application Tutorial: Simple ItsNat (Core) STATELESS Application Tutorial: Single Page Interface SEO Compatible Web Site With ItsNat STATEFUL Using HASHBANGS Tutorial: Single Page Interface SEO Compatible Web Site With ItsNat STATELESS Using HASHBANGS Tutorial: Single Page Interface SEO Compatible Web Site With ItsNat STATEFUL Using HISTORY API Tutorial: Single Page Interface SEO Compatible Web Site With ItsNat STATELESS Using HISTORY API Tutorial: Hybrid Client-Server Centric Programming
ItsNat Overview

Last update: 2013 Jun 8  

spiral Introduction

Requisites / Platforms
Online DEMO
Download & Installation
Docs & Support
Investors and Partners
ItsNat Droid

The Natural Approach

ItsNat is an innovative open source Java AJAX Component based Web Framework, it offers a natural approach to modern web development.

Why natural? ItsNat leverages the old tools to build the new AJAX based Web 2.0 applications: pure (X)HTML and pure Java W3C DOM!

ItsNat is server centric using a unique approach called TBITS, "The Browser Is The Server". ItsNat simulates a Universal W3C Java Browser at the server, with ItsNat the server mimics the behavior of a web browser, containing a W3C DOM Level 2 node tree and receiving W3C DOM Events.

How it works

When the Java user code modifies the server DOM tree this modification is detected (using DOM mutation events) and automatically sent to the real web browser as JavaScript DOM based code, synchronizing the client DOM with the server. This approach fits perfectly well with AJAX! AJAX is not an addition is a core part of ItsNat.

From server the developer can register W3C DOM Event listeners listening for W3C DOM events. This registry 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 DOM is used to modify the original tree/layout on loading time or as a response of a AJAX event, this original layout is defined using pure (X)HTML/SVG/XUL/XML based templates with absolutely NO logic! (extreme separation of view and logic). If the modification is big ItsNat provides "template fragments", a template fragment is a piece of markup that can be inserted (included) as DOM into the main tree statically or dynamically (typically as a response of a user/AJAX event).

Load Process

Event Processing

Don't worry about the memory size of a DOM tree, ItsNat provides a smart DOM tree cache in a serialized form (pure text not DOM) for the static parts of a page/fragment shared between pages and DOM subtrees no longer going to be used can be removed only in server.

This approach perfectly fits with the Single Page Interface web paradigm. In typical ItsNat applications there is no reload, no page navigation, no back and forward problems, the methodology used is more similar to the desktop style of development.

In spite of the same client-server DOM contract and server-centric nature, ItsNat provides some tolerance to DOM nodes introduced by non-ItsNat JavaScript code, for instance static zones in server can be managed by non-ItsNat JavaScript code, DOM subtrees removed only in server can be changed freely in client. developer code can inject custom JavaScript from server, and in some locations (between and at the end of head and body elements), "intrusive" nodes are tolerated opening a new world of "hybrid" (client-centric and server-centric) Single Page Interface web sites/apps.

As of v1.3 ItsNat provides a new stateless mode, in this new mode there is no page state kept in server allowing horizontal scaling to multiple symmetric servers with no need of session replication or server affinity!!

Stateless Mode

spiral Features

"ItsNat allows the designers do their job on UI, and allows the developer do Java,no messing up" Adimpression
"ItsNat is the BEST solution as I checked almost all options before using it, even the latest JSF implementations." Ravindranath Akila
"I really found ItsNat's 'The Browser Is The Server' (TBITS) approach one of the smartest ideas I’ve seen in the web programming area in the last years." ddpole's Blog
"ItsNat is an open source Java Ajax framework that will basically answer the need of any developer who doesn’t want to delve into JavaScript development." Stephen Palmer
"One of ItsNat's strengths is its IDE agnosticism (same as Wicket). In other words, there are no special artifacts, it simply uses standard Java EE artifacts such as HTML, servlets and general Java classes (and no ItsNat-specific servlet or filter needs to be registered in web.xml)." Geertjan Wielenga (Oracle)
"The only thing I will say about ItsNat, is that it looks like a nice clean technology. I dont think it is a good idear to let java generate html because you always want something the default cannot do. The view should be written in the appropriate language (i.e. in this example HTML). That makes your life much more simpler." Marc de Kwant (wowww)
"ItsNat, me parece un framework de una calidad indiscutible, con una filosofia de trabajo magistral. ItsNat "rebosa" sencillez y libertad de hacer y programar lo que se te ocurra, simplemente genial ..." argi
"Orchestrated by Jose Maria Arranz, ItsNat is the smartest Java web framework around. Adimpression proudly uses ItsNat for most of its websites" Adimpression LLC

Core features

ItsNat provides many more (core) features:

  • DHTML on the server. Automatic client synchronization from server
  • Some support of automatic server synchronization from client
  • Web-continuations ("continue" events)
  • User defined event types
  • AJAX Timers
  • Long running asynchronous server tasks (client is notified when finished)
  • COMET without special application servers
  • Server side DOM utils (to simplify DOM manipulation like lists, trees, ElementCSSInlineStyle
    support etc)
  • Resolution of ${} based variables in markup (helps to keep Java DOM code as agnostic as
    possible of the concrete layout)
  • Markup fragments (dynamic parts of the page to be inserted in any time very useful in
    Single Page Interface)
  • DOM subtrees in server not going to be used anymore can be removed only in server saving memory (disconnected child nodes)
  • SVG (and other namespaces) embedded inline on XHTML and application/xhtml+xml MIME
  • SVG (and other namespaces) embedded inline on X/HTML and text/html MIME on
    • Browsers with native SVG
    • MSIE with Adobe SVG Viewer (v3.0) plugin including dynamic processing
      of SVG DOM
    • Any browser with Flash support using SVGWeb
  • Pure SVG documents including AJAX in browsers with native SVG or MSIE with Adobe SVG
    Viewer or Savarese Ssrc SVG/XUL plugin.
  • Pure XUL documents including AJAX in Gecko browsers (like FireFox) or MSIE with
    Savarese Ssrc SVG/XUL plugin.
  • XML generation
  • IFrame/Object/Embed/Applet Auto-Binding: in server child documents opened by
    IFRAME, OBJECT, EMBED or APPLET tags are automatically bound to the parent document in server . This feature works with:
    • X/HTML loaded by an IFRAME
    • SVG loaded by an IFRAME/OBJECT/EMBED in browsers with native SVG or MSIE with Adobe SVG Viewer or Savarese Ssrc SVG/XUL (only OBJECT and EMBED)
    • SVG loaded by Batik applet (custom version for ItsNat) in an APPLET/OBJECT/EMBED
  • Java to JavaScript generation utilities
  • Server-sent events (events fired by the server sent to the client simulating user actions) with the real browser or simulated for instance to test the client view simulating user actions or simulating the client in server
  • Referrers: in page navigation, the previous document in server can be obtained to copy any data avoiding session data in page based applications. Navigation includes back/forward/reload support . Two modes: push and pull
  • Degraded modes: Events disabled and JavaScript disabled modes
  • Extreme Mashups
  • AJAX bookmarking (or bookmarking in Single Page Interface applications)
  • Pretty URLs
  • Automatic page remote/view control of other users/sessions!!
  • Remote Templates
  • Single Page Interface SEO COMPATIBLE Web Sites!!
  • Hot class reload without redeploys using RelProxy!!
  • Use Groovy instead of Java if you want and with hot class reload using RelProxy
  • ...

A Component System

ItsNat also provides a Component system (constructed over the Core level). These components are AJAX based from the scratch inspired in Swing and reusing Swing as far as possible such as data and selection models (but ItsNat does not want to be a Swing forced clone in web, is not a pixel based web framework).

ItsNat provides several button types, text based components, labels, lists, tables, trees (all of them with content editable "in place"), file upload based on AJAX...

The most interesting feature is: any 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. Furthermore components can be used to generate XML!!

ItsNat components are not intrusive, they are not "black boxes", you can customize and control every element used, every attribute. Components are highly extensible and customizable, for instance there is no default decoration when selection ItsNat tells you when and what has been selected, ItsNat may be seen as a meta-framework.

Making user defined components, for instance compound components, is amazingly easy.

Stateless Mode

ItsNat normal mode is stateful making use of server memory (and optionally sessions) to storing in server the browser state, when using multiple symmetric servers sticky sessions are required (unless session replication is enabled).

Since v1.3 ItsNat provides a new mode of working, the “stateless” mode, in stateless mode current browser state can be reconstructed in server and modificated, modifications are sent to the browser as JavaScript as DOM operations as usual, but the “page” loaded in server is not stored in server nor in session, by this way multiple symmetric servers can work together with no need of session replication (use of session for your custom data is up to you).

See in action here and here (using components)

Stateless mode provides a new kind of Single Page Interface STATELESS SEO compatible Web Sites!!

What ItsNat is NOT, what is MISSING (deliberately)!

No XML configuration (use Spring or the configuration technique you like more), no declarative navigation, no JSP, no custom tags, no declarative programming, no view-Java bindings, no logic mixed with view, no new (expression) languages, no "pull/active views" (ItsNat pushes data/markup to the view), no page based development (ItsNat is event based), no highly closed, not customizable and intrusive components, no obscure HTML and JavaScript generation, not fully programmatic view definition (ItsNat uses pure XML/HTML templates), not JavaScript centric, no big and obscure JavaScript libraries hard to debug and maintain open to modifications by malicious users in runtime, not AJAX as a forced add-on, not oriented to tools (use your favorite X/HTML designer and pure Java IDE), not developer/designer substitution by the framework, no loss of developer control.

spiral Requisites / Platforms

ItsNat is pure Java and runs in any Java Virtual Machine v1.5 as the minimum configuration and virtually any Servlet compliant container.

ItsNat has been tested in Tomcat v6 and v7, GlassFish v2 and v3, Oracle’s Java SE 1.6 developer kits.

Google App Engine is supported including AJAX with some limitations.

Supported desktop browsers (previous versions may work): Google Chrome, FireFox, Internet Explorer 8+, Opera 12.12+ (WebKit based), Safari 5.1.7+

Supported mobile browsers (previous versions may work): Android 2.1+, BlackBerry JDE 5.0+ (WebKit based), iPhone/iPad/iPod iOS 6.1+, Opera Mini (still based on Presto), Opera Mobile (WebKit based).

Supported SVG plugins: Adobe SVG Viewer v3, Savarese Ssrc SVG/XUL (Ssrc also adds XUL to MSIE), SVGWeb, and Batik as applet.

spiral Licensing

ItsNat is open source GNU Lesser General Public License v3 (LGPL v3) licensed, this license allows closed source applications developed on top of ItsNat.

Alternative commercial licenses exist if LGPL v3 is not for you. More info.

spiral Online Demo

The ItsNat Feature Showcase, is a special Java AJAX web application developed with ItsNat. Follow this LINK.

More demos and web applications running ItsNat

spiral Download & Installation

The ItsNat distribution includes binaries, source code, javadoc, manuals and the ItsNat Feature Showcase.

Visit the Download Section.

spiral Documentation & Support

Visit the Support section.

spiral Credits

ItsNat is a product authored by the Spanish citizen Jose Maria Arranz Santamaria.

spiral Investors and Partners

Looking for Investors and Partners to CHANGE THE WORLD.

spiral ItsNat Droid

ItsNat Droid is a side project going to create a new generation of Android applications, take a look here.

This article is translated to Serbo-Croatian language by Jovana Milutinovich from WebHostingGeeks.com.

Terms of Use Privacy Statement Contributor Agreement Add to deli.cio.us Single Page Interface logo ItsNat logo Innowhere logo