ItsNat
Encyclopedia
ItsNat Natural AJAX, is an open source
Java
component-based
Ajax framework
.
centric using an approach called the browser
is the server (TBITS). ItsNat simulates a Universal World Wide Web Consortium
(W3C) Java Browser at the server containing a W3C DOM
Level 2 node tree and receiving W3C DOM events
.
, 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
, XHTML
, SVG, or XUL
based templates
with no 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).
To save server memory ItsNat provides a DOM tree node cache in a serialized form (as plain text not DOM) and DOM subtrees no longer used can be removed manually only in server saving memory (the client DOM remains untouched).
Despite same client-server DOM contract, ItsNat provides some tolerance to DOM nodes introduced by non-ItsNat JavaScript code, static zones in server can be managed by non-ItsNat JavaScript code, DOM subtrees removed only in server can be changed freely in client, and in some locations (between and at the end of head and body elements), "intrusive" nodes are tolerated.
, 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.
v1.4 as the minimum configuration and virtually any servlet compliant container.
Google App Engine
is supported including AJAX with some limitations.
Supported desktop browsers: Adobe AIR HTML Component, Arora
, Google Chrome
1+, Firefox 1+, Internet Explorer
6+ (including v9), Moblin 2.0, Opera
9+, QtWebKit and QtJambi (Qt
4.4), Safari
3+.
Mobile browsers (all including AJAX): Android since 1.0 r2, BlackBerry JDE 4.6+ (Bold
, Storm etc), Bolt
, Fennec
(a.k.a Firefox Mobile)Internet Explorer Mobile 6 of Windows Mobile 6 and 6.1 (Pocket IE) and IE Mobile of WM 6.1.4 (6 on 6 browser), iPhone
/iPod Touch
2.0+, Iris Browser
1+, Minimo
0.2, Motorola Symphony 1.1 http://developer.motorola.com/docstools/motodevstudio/webui/ (ROKR EM35, MOTO VE66 phones), NetFront
3.4+ (WinMob and included in some SonyEricsson phones), Opera Mini
4.x and 5.x, Opera Mobile
8.6x (WinMob and UIQ), 9.5, 9.7 and 10, S60WebKit
(since S60 3rd), S40WebKit (since S40 6th), Palm Pre webOS, QtWebKit of Qt
for Embedded Linux and Windows CE (Qt 4.4), Skyfire 1.0 and UCWEB
6+ (Java and WinMob).
SVG plugins (including AJAX): Adobe SVG Viewer v3 http://www.adobe.com/svg/viewer/install/ and v6 beta http://www.adobe.com/svg/viewer/install/beta.html, Renesis Player
v1.1, Savarese Ssrc http://www.savarese.com/software/svgplugin/ (adds XUL to MSIE too), SVGWeb http://code.google.com/p/svgweb/, and Batik
as applet.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
component-based
Component-based software engineering
Component-based software engineering is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system...
Ajax framework
Ajax framework
In web application development, an Ajax framework is a framework which leverages Ajax, a collection of technologies for building dynamic web pages on the client side...
.
Overview
ItsNat is serverApplication server
An application server is a software framework that provides an environment in which applications can run, no matter what the applications are or what they do...
centric using an approach called the browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...
is the server (TBITS). ItsNat simulates a Universal World Wide Web Consortium
World Wide Web Consortium
The World Wide Web Consortium is the main international standards organization for the World Wide Web .Founded and headed by Tim Berners-Lee, the consortium is made up of member organizations which maintain full-time staff for the purpose of working together in the development of standards for the...
(W3C) Java Browser at the server containing a W3C DOM
Document Object Model
The Document Object Model is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents. Aspects of the DOM may be addressed and manipulated within the syntax of the programming language in use...
Level 2 node tree and receiving W3C DOM events
Event-driven programming
In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an...
.
How it works
When the server DOM tree is modified using Java W3C DOM APIs by the developerSoftware developer
A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...
, this modification is detected (firing DOM mutation events) and automatically sent to the real web browser as JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
DOM based code, synchronizing the client
Client (computing)
A client is an application or system that accesses a service made available by a server. The server is often on another computer system, in which case the client accesses the service by way of a network....
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
User (computing)
A user is an agent, either a human agent or software agent, who uses a computer or network service. A user often has a user account and is identified by a username , screen name , nickname , or handle, which is derived from the identical Citizen's Band radio term.Users are...
, 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
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....
, XHTML
XHTML
XHTML is a family of XML markup languages that mirror or extend versions of the widely-used Hypertext Markup Language , the language in which web pages are written....
, SVG, or XUL
XUL
In computer programming, XUL , the XML User Interface Language, is an XML user interface markup language developed by the Mozilla project. XUL operates in Mozilla cross-platform applications such as Firefox...
based templates
Web template
A web template is a tool used to separate content from presentation in web design, and for mass-production of web documents. It is a basic component of a web template system.Web templates can be used to set up any type of website...
with no logic. If the modification is big ItsNat provides "template fragments", a template fragment is a piece of markup
Markup language
A markup language is a modern system for annotating a text in a way that is syntactically distinguishable from that text. The idea and terminology evolved from the "marking up" of manuscripts, i.e. the revision instructions by editors, traditionally written with a blue pencil on authors' manuscripts...
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) and DOM subtrees no longer used can be removed manually only in server saving memory (the client DOM remains untouched).
Despite same client-server DOM contract, ItsNat provides some tolerance to DOM nodes introduced by non-ItsNat JavaScript code, static zones in server can be managed by non-ItsNat JavaScript code, DOM subtrees removed only in server can be changed freely in client, and in some locations (between and at the end of head and body elements), "intrusive" nodes are tolerated.
Core features
- Automatic client synchronization from server
- Some support of automatic server synchronization from client
- Web-continuations: "continue" events
- User defined event types
- AJAX timerTimerA timer is a specialized type of clock. A timer can be used to control the sequence of an event or process. Whereas a stopwatch counts upwards from zero for measuring elapsed time, a timer counts down from a specified time interval, like an hourglass.Timers can be mechanical, electromechanical,...
s - Long running asynchronous server tasks: client is notified when finished
- CometComet (programming)Comet is a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it. Comet is an umbrella term, encompassing multiple techniques for achieving this interaction. All these methods rely on features included by...
without special (NIONew I/ONew I/O, usually called NIO, is a collection of Java programming language APIs that offer features for intensive I/O operations. It was introduced with the J2SE 1.4 release of Java by Sun Microsystems to complement an existing standard I/O. NIO was developed under the Java Community Process as JSR...
or similar) Servlet engines - Server side DOM utils: to simplify DOM manipulation like lists, trees, ElementCSSInlineStyle support etc
- Resolution of ${} based variables in markup: helps 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
- SVG, and other namespacesXML Namespacexmlns tagged XML namespaces are used for providing uniquely named elements and attributes in an XML document. They are defined in a W3C recommendation. An XML instance may contain element or attribute names from more than one XML vocabulary...
, embedded inline on XHTML and application/xhtml+xml MIMEMIMEMultipurpose Internet Mail Extensions is an Internet standard that extends the format of email to support:* Text in character sets other than ASCII* Non-text attachments* Message bodies with multiple parts... - 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 or v6.0 beta) 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 Renesis Player v1.1 or Savarese Ssrc plugin.
- Pure XUL documents including AJAX in Gecko browsers (like FireFox) or MSIE with Savarese Ssrc 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 Renesis or Savarese Ssrc: 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 prior 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: AJAX 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
Component system
ItsNat provides an optional Component system built using the core features of the framework. These components are AJAX based and inspired in SwingSwing (Java)
Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....
, 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
Pixel
In digital imaging, a pixel, or pel, is a single point in a raster image, or the smallest addressable screen element in a display device; it is the smallest unit of picture that can be represented or controlled....
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.
Requisites, platforms
ItsNat is pure Java and runs in any Java Virtual MachineJava Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...
v1.4 as the minimum configuration and virtually any servlet compliant container.
Google App Engine
Google App Engine
Google App Engine is a platform as a service cloud computing platform for developing and hosting web applications in Google-managed data centers. It virtualizes applications across multiple servers,...
is supported including AJAX with some limitations.
Supported desktop browsers: Adobe AIR HTML Component, Arora
Arora (browser)
Arora is a free and open source lightweight cross-platform web browser. It runs on Linux, Mac OS X, Windows, FreeBSD, OS/2, Haiku, and any other platforms supported by the Qt toolkit....
, Google Chrome
Google Chrome
Google Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...
1+, Firefox 1+, Internet Explorer
Internet Explorer
Windows Internet Explorer is a series of graphical web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year...
6+ (including v9), Moblin 2.0, Opera
Opera (web browser)
Opera is a web browser and Internet suite developed by Opera Software with over 200 million users worldwide. The browser handles common Internet-related tasks such as displaying web sites, sending and receiving e-mail messages, managing contacts, chatting on IRC, downloading files via BitTorrent,...
9+, QtWebKit and QtJambi (Qt
Qt (toolkit)
Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
4.4), Safari
Safari (web browser)
Safari is a web browser developed by Apple Inc. and included with the Mac OS X and iOS operating systems. First released as a public beta on January 7, 2003 on the company's Mac OS X operating system, it became Apple's default browser beginning with Mac OS X v10.3 "Panther". Safari is also the...
3+.
Mobile browsers (all including AJAX): Android since 1.0 r2, BlackBerry JDE 4.6+ (Bold
BlackBerry Bold
The BlackBerry Bold 9000 is a line of smartphones developed by Research in Motion. The family includes the 9000 , the 9700 , the 9650 and 9780, both of which were released in 2010, 9788 released in 2011 and the 9900/9930, the first touchscreen Bold, released in August 2011...
, Storm etc), Bolt
Bolt browser
The BOLT Browser is a web browser for mobile phones including feature phones and smartphones that can run Java ME applications. The BOLT Browser is offered free of charge to consumers and by license to Mobile network operators and handset manufacturers...
, Fennec
Fennec (browser)
Firefox for mobile is the name of the build of the Mozilla Firefox web browser for devices such as mobile phones and personal digital assistants ....
(a.k.a Firefox Mobile)Internet Explorer Mobile 6 of Windows Mobile 6 and 6.1 (Pocket IE) and IE Mobile of WM 6.1.4 (6 on 6 browser), iPhone
IPhone
The iPhone is a line of Internet and multimedia-enabled smartphones marketed by Apple Inc. The first iPhone was unveiled by Steve Jobs, then CEO of Apple, on January 9, 2007, and released on June 29, 2007...
/iPod Touch
IPod Touch
The iPod Touch is a portable media player, personal digital assistant, handheld game console, and Wi-Fi mobile device designed and marketed by Apple Inc. The iPod Touch adds the multi-touch graphical user interface to the iPod line...
2.0+, Iris Browser
Iris Browser
Iris Browser is a web browser for Windows Mobile smartphones and personal digital assistants developed by the Torch Mobile company. The first version of Iris Browser was released in 2008. It is currently one of only three web browsers designed for portable devices which scores a 100/100 on the...
1+, Minimo
Minimo
Minimo was a project to create a version of the Mozilla web browser for small devices like PDAs and mobile phones.The project aimed to make it easier for developers to embed parts of Mozilla into systems with limited system resources...
0.2, Motorola Symphony 1.1 http://developer.motorola.com/docstools/motodevstudio/webui/ (ROKR EM35, MOTO VE66 phones), NetFront
NetFront
NetFront Browser is a mobile browser for embedded devices, developed by Access Co. Ltd. of Japan, and was designed to function as an embedded browser....
3.4+ (WinMob and included in some SonyEricsson phones), Opera Mini
Opera Mini
Opera Mini is a web browser designed primarily for mobile phones, smartphones and personal digital assistants. Until version 4 it used the Java ME platform, requiring the mobile device to run Java ME applications. From version 5 it is also available as a native application for Android, iOS, Symbian...
4.x and 5.x, Opera Mobile
Opera Mobile
Opera Mobile is a web browser for smartphones and PDA's developed by the Opera Software company. The first version was released in 2000 for the Psion Series 7 and netBook. Today, it is available for a variety of devices that run on Android, S60, Windows Mobile, Maemo , and MeeGo...
8.6x (WinMob and UIQ), 9.5, 9.7 and 10, S60WebKit
Web Browser for S60
Web Browser for S60 or the S60 OSS Browser, is the default web browser for the S60 mobile phone platform. It is the default browser for many old phones running on the Symbian mobile operating system and all new phones running on Symbian. It was developed by Nokia...
(since S60 3rd), S40WebKit (since S40 6th), Palm Pre webOS, QtWebKit of Qt
Qt (toolkit)
Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
for Embedded Linux and Windows CE (Qt 4.4), Skyfire 1.0 and UCWEB
UCWEB
UC Browser is a web browser for mobile devices, such as mobile phones. The web page is not handled on the phone, but compressed and rendered by a server, similar to the operation of a thin client...
6+ (Java and WinMob).
SVG plugins (including AJAX): Adobe SVG Viewer v3 http://www.adobe.com/svg/viewer/install/ and v6 beta http://www.adobe.com/svg/viewer/install/beta.html, Renesis Player
Renesis Player
The RENESIS Player is a SVG compatible viewer and renderer, which was distributed by examotion GmbH .It currently runs on the Windows platform....
v1.1, Savarese Ssrc http://www.savarese.com/software/svgplugin/ (adds XUL to MSIE too), SVGWeb http://code.google.com/p/svgweb/, and Batik
Batik (software)
Batik is a pure-Java library that can be used to render, generate, and manipulate SVG graphics. IBM supported the project and then donated the code to the Apache Software Foundation, where other companies and teams decided to join efforts.Batik provides a set of core modules that provide...
as applet.
See also
- Ajax (programming)Ajax (programming)Ajax is a group of interrelated web development methods used on the client-side to create asynchronous web applications...
- Ajax frameworkAjax frameworkIn web application development, an Ajax framework is a framework which leverages Ajax, a collection of technologies for building dynamic web pages on the client side...
- Comet (programming)Comet (programming)Comet is a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it. Comet is an umbrella term, encompassing multiple techniques for achieving this interaction. All these methods rely on features included by...
- List of web application frameworks
- Web application frameworkWeb application frameworkA web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...
- Comparison of web application frameworksComparison of web application frameworksThis is a comparison of notable web application frameworks.-Perl:-PHP:-Java:-Python:-Ruby:-CFML :-ASP.NET:-Other:-ASP.NET:-C++:-CFML:-Python:-Java:-PHP:-Ruby:-Others:...