Deploying code to production can be filled with uncertainty. Reduce the risks, and deploy earlier and more often. Download this free guide to learn more. Brought to you in partnership with Rollbar.

Its been over two years since the first release of the
ItsNat server centric Java Ajax web framework. Since then, the framework has experienced significant evolution, but the focus has remained the same: Define templates using pure X/HTML/SVG/XUL files with no logic. ItsNat's view logic is coded in pure Java using Java W3C DOM APIs. It is also known for its "Browser is the Server" approach, in which a Universal W3C Java Browser is simulated in the server. Client events are sent (Push model) to the server via AJAX where they are converted into W3C Java DOM Events. Finally, changes in the DOM server are sent automatically to the client as JavaScript, updating the client DOM. ItsNat has recently arrived at
version 0.7 with a greater focus on supporting the Flash-like capabilities in SVG and HTML5.

Thanks to a high level of browser support and projects like Google's SVGWeb, HTML5 and SVG are well on their way to standardizing many rich web capabilities that were at one time only possible through plugins. SVG is now more of a first-class citizen in ItsNat 0.7. The framework adds more support for SVG in native browsers and even Internet Explorer, with new plugins including Adobe SVG Viewer (v3 and v6), Renesis 1.1, Savarese Ssrc, SVGWeb, and Batik as applet.

SVG along with any other non-XHTML namespace can now be embedded inline with XHTML that is served with MIME "text/html" using a browser with native SVG support. The new SVGWeb and Adobe SVG Viewer plugins can both embed MSIE and MIME SVG code inline in XHTML with dynamic DOM behavior. This feature with Adobe SVG Viewer is only available in ItsNat and it is useful on a single page interface application where there is no page navigation. The support for SVGWeb in ItsNat is special because the SVGWeb API is hidden and many problems with it are avoided because SVG DOM is managed on the server-side.

A few more things that have been added to ItsNat 0.7 include better (X)HTML support, MSIE with the Savarese Ssrc plugin, XUL including Ajax in Gecko browsers, and some support for Google App Engine including Ajax. ItsNat, Vaadin, and ZK are the only server centric frameworks with built-in Ajax support running GAE.

Below are some excepts from Geertjan Wielenga's
interview with Jose Maria Arranz, the author of ItsNat. They give some insight into the motivations behind ItsNat's creation.

When I read about these web frameworks, I usually thought: “Oh my God, what a ton of artifacts! Java web development is becoming a nightmare, I think another web framework should be possible”. When I say “artifacts”, what I mean is the custom tags and tag libs that are mixed with tons of XML-based programming, language expressions, XML based navigation, XML descriptors for bindings, and so on.

Arranz was influenced by Wicket, but wanted a truly pure HTML component:

ItsNat was motivated partially by Wicket. But the pure HTML promise is broken in Wicket too, with custom tags like <wicket:extend> <wicket:link> <wicket:panel> and < wicket:head>. And, when you see some components, for instance the tree component, the HTML content of the component is missing in the template and is generated as a typical black boxed component. This is not very different to custom tags generating markup. I am not railing against Wicket, this is the correct way to improve web frameworks (I would do the same) and is a direct consequence of the traditional techniques of templating, that is "dead markup", where the template is basically raw text and only custom "marks" like custom tags and custom attributes are the live elements.

He explains why it is important to keep control of the HTML layout:

Because that is the web culture: the web is an amazing place of visual innovation, including web applications. When anyone develops a Swing application, there is not very much space for visual design, unless you are Romain Guy or Chet Haase... in the web space, anyone can change the visual appearance of a web application. Furthermore, on the web it is not difficult to create a list or a table containing complex forms, while in Swing the JList or JTable is not so easy to customize.

To summarize his message, Arranz says:

ItsNat doesn't want to be all things to all people, and technically it can't be that anyway. For instance, if you need highly interactive components, you may need some cool JavaScript framework on the client, such as Dojo, prototype, YUI, and so on. Many people talk about there being "too many Java web frameworks" and it is true that there are many web frameworks out there. However, when you analyze their "development styles", there aren't very many. This speaks to the greatness of Java: you can select the style you like the most, because every style has pros and cons. I think ItsNat introduces a new web development style, that of DHTML programming on the server.

ItsNat is a dual licensed under the Affero General Public License v3 for open source, and a commercial license for closed source projects.

Deploying code to production can be filled with uncertainty. Reduce the risks, and deploy earlier and more often. Download this free guide to learn more. Brought to you in partnership with Rollbar.