1. Why is it call "Æjaks"? Isn't that confusing with the term "Ajax"?
    Æjaks started out to be some clever acronym using Ajax, Echo2, JTcl, etc., but I've since dropped trying to make the words fit. Beside, disruptive technologies are often confusing at first. In email or other mediums, you can write Aejaks instead of using the Æ symbol.

  2. What is Ajax?
    Asychronous Javascript and XML. It is the term coined by Jesse James Garrett in February 2005 to describe the technology used in highly interactive Web applications that resemble traditional workstation applications. See the Wikipedia entry.

  3. Why Tcl as a scripting language? Why not {Jython,Jruby,Rhino,Groovy,etc.}?
    First, I like Tcl alot. After using it for over 14 years, it still is first language I turn to when developing new applications. Tcl isn't a fanboy language, but gets the job done often with less code to write. Tk (on which the Æjaks object interface is based) is the standard for creating GUIs in the most concise manner. JTcl is a mature Java scripting language used by heavyweights like IBM as part of the WebSphere application server product.

  4. What browsers are supported?
    Echo2 (and thus Æjaks) has support for a wide number of modern browsers: Firefox 1+, Internet Explorer 6/7.8/9, Google Chrome, Opera, Konqueror, Safari, Mozilla 4+, and Netscape 8+.
    Also see: Ajax/DHTML Library Scorecard.

  5. Can I use Tk's bind command to capture focus events?
    No. Æjaks is a web framework, and still uses the HTTP protocol. Focus events could potentially fire a large number of events. Your applications should be designed to minimize the need for such fine-grained control.

  6. How do I use a different database for Æjaks applications?
    You will need a JDBC driver for your database, and possibly a database connection pool. When using the Jetty web server, set the command line argument -Djetty.class.path=yourdriver.jar . You will also need to configure a JNDI datasource using your driver and a database connection pool (if your driver does not supply one.) The file jetty-datasource.xml specifies the connection pool and JDBC driver. See,, and for open source connection pools.

  7. How can I run more that one application at a time??
    Æjaks uses session tracking provided by a Java servlet engine (e.g., Jetty, Tomcat, etc.), which tracks applications by webapp name (the name of the aejaks.war file becomes the /aejaks webapp name.) Since Æjaks is stateful, any attempt to open another window using the same webapp name will cause the system to refresh your current application state. The easiest solution is to simply copy the aejaks.war file as aejaks2.war. Open your other application using the URL http://localhost:8080/aejaks2/app?AEJAKS_SCRIPT_NAME=other.tcl