JavaScript and DHTML flexibility, Native Power

JNEXT is an open source (triple MPL, GPL, LGPL license), small footprint and cross platform framework for extending Web browser Javascript (for more background and motivation check this blog entry).

With JNEXT it is possible to utilize existing Web browsers to host full and self contained applications that do not depend on external Web servers for the application logic (although they are free to make use of them). This is acheived by enabling Javascript controlled access to the full range of native operating system resources (such as TCP/UDP sockets, files, databases, threads etc). An example is worth a thousand words:

below is another example to whet your appetite:

As can be seen from the above examples, the extensions are transparently added to JavaScript just by including the JNEXT libraries. JNEXT runs on Linux and on Windows on several Web browsers: IE, FireFox, Opera, Netscape and Safari have been successfully tested on Windows. On Linux it has been successfully tested on Firefox and Netscape Navigator (support for Konqueror and Opera is in progress). JNEXT has recently been successfully tested on Mac OS/X too - the formal OS/X support will be added in the next release.

The main purpose for creating JNEXT was to enable developers to build applications much faster by using JavaScript as the language for creating the HTML UI and application logic, while using native plugins to access system resources that are not available from JavaScript due to obvious security reasons.

Sounds great, but what about security ?

A great deal of thought went into making JNEXT secure. The way most RIA technologies tackle this is by limiting your freedom to access the full potential of the operating system, in other words, making the sandbox you're allowed to play in a bit larger.

The vision behind JNEXT is to enable a Web developer to unleash the combined power of the Web browser and operating system it runs on. However, without ultimate security measures, JNEXT would be a malevolent hackers dream, making it easy to use XSS attacks to format an innocent surfer's hard drive or worse - to read and send sensitive information.

To this effect, a tight PKI (Public Key Infrastructure) system has been designed to make sure that only the valid owner of a site is the creator of the code running on the user's browser (and even then, only if the user authorizes the site to run JNEXT).

The above PKI authentication system is still being implemented and is planned to be operational in JNEXT version 1.0.9 . In the meantime, the current version of JNEXT (1.0.7), does not include the PKI sucurity framework yet and is provided just to form a proof of concept or to be used as an alternative for cross platform UI development tool. As such the current version only makes use of a URL whitelist check, i.e any browser using the JNEXT framework can only access JNEXT via JavaScript if the site or file containing the JavaScript native extensions code is explicitly authorized by a local whitelist to access JNEXT extensions. The type of extensions (sockets, sqlite etc.) that are allowed to be accessed by JavaScript code for each permitted URL or file can also be explicitly defined. No other page has access to any of the local operating system resources.

So what does it run on ?

The following is the compatibility matrix of the soon to be released JNEXT 1.0.8 . It will be updated as new versions are released.

Windows Mac OS/X Linux
XP & Vista. Should run also on earlier versions OS/X v10.4 (Tiger) & OS/X v10.5 (Leopard). Ubuntu 7.10 (Gutsy Gibbon) & 8.04 (Hardy Heron)
Firefox 2 & 3
Internet Explorer 
Safari
Opera
Konqueror
Epiphany

Compatibility Index
Tested and works fine.
Needs fixing (does not work, or works partially).
Net tested yet, should be tested soon.
Not considered interesting. Will be tested only if time permits.
Not applicable to this OS

Where can I download it from ?

Note that the versions below are rather dated. For those wishing to compile the beta version of 1.0.8, you can grab the code by installing bazaar and pulling the sources from http://jnext.org/src

Binaries

A binary setup for Windows can be downloaded below (automatically installs JNEXT for IE, Firefox, Safari, Opera and Netscape):

JNEXT-1.0.7.exe (1.1 MB)

A binary setup for Linux can be downloaded below (manual installation, includes a readme file):

JNEXT-bin-1.0.7.tgz (714 KB)


Sources

If you wish to download the source code, the link below will download the source code that compiles on both Linux and Windows. (compiling the Windows version currently requires the standard version of VC2005). The sources also contain a sample project to illustrate how to easily create your own JNEXT extension:

jnext-src-1.0.7.tgz (1.2 MB)

You can always post questions or comments to the blog or the discussion group

Where can I learn more ?

If you're a Web developer, check out the Using JNEXT link. If you wish to help with developing JNEXT, read more at the Extending JNEXT page.

Although there's not much activity at the moment, you can also check out the JNEXT irc channel at #jnext




Releases

5 Nov 2007:
JNEXT 1.0.7 released
Bug fixes for 1.0.6