JavaScript and DHTML flexibility, Native Power

JNEXT is an open source (triple MPL, GPL, LGPL license), small footprint, cross platform and cross browser 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:

Check the screen shots for real examples 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 Windows, Mac OS/X and Linux and supports 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 been successfully tested on Mac OS/X too with Safari and Firefox browsers.

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 packaged versions below are very old. For those wishing to compile the latest version, you can grab the latest code by installing bazaar (available for all platforms) and pulling the sources from http://jnext.org/core, i.e just issue the following from the command line:

bzr branch http://jnext.org/core jncore

This will create a directory named jncore which will contain the latest JNEXT source code.

Binaries (old - should be replaced soon)

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 (old - see above for obtaining fresh 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




Latest update

August 29, 2008:

  • Support for Firefox 3.0 on Linux

  • New Directory Plugin