Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[ANNOUNCE] Aejaks 1.0

13 views
Skip to first unread message

Tom Poindexter

unread,
Sep 14, 2008, 10:19:27 PM9/14/08
to

Aejaks is now 1.0 !!

http://aejaks.sf.net

This release adds many new features and stability enhancements.
New in this release:
- MrPersister database access library.
- H2 Database engine included for quick-start database application development.
- Apache Log4J logging system.
- RichTextArea widget.
- Standard library dialogs for messages, input, color selection, data
selection, file upload.
- TclTutor, Aejaks Rolodex, WarMachine sample applications.
- Hyde package for easy Tcl-to-Java integration.

Notable fixes:
- Eliminate Jacl interp lock, now uses notifier for all interpreter access.
- Allow pasting into TextComponents without requiring additional keystrokes.
- Standard bgerror dialog.
- Jacl patches applied for open resource:/, notifier liveliness, reflected
object re-creation.
- Echo2 libraries updated from latest code.

Several real-world applications are on display at the website, see the
'Screen Shots' and 'App Gallery' pages.

Thanks to Dennis Lima and Matt Avery for the Log4J patches.


--README----------------------------------------------------------------------
AEJAKS: http://aejaks.sf.net

ABOUT:
Aejaks combines the server-side Ajax windowing system Echo2 with the powerful
simplicity of the Tcl langauge. The result is a rich development environment
in which to develop Ajax-based web applications, often with much less code to
write.

Building a Rich Internet Application (RIA) usually means having to write
your application in a variety of languages and markup: HTML, CSS, and
Javascript for the browser, plus some backend language (PHP, Java, Tcl, etc.)
With Aejaks, you only need a single language: Tcl. Aejaks applications
resemble desktop Tcl/Tk applications. Aejaks uses a Tk-inspired object
interface to create and interact with widgets.

Classic "Hello world" in Aejaks:

Button .hello -text "Hello world" -command {. exitApp /index.html}
Pack .hello

The first line creates a Button widget named '.hello' and defines a command
to be run when the button is pressed (exit the application and tell the
browser to load the index.html page.) The second line makes the Button widget
visibile in the browser window. That's all you need!


AUTHOR:
Aejaks was conceived and written by Tom Poindexter. Please subscribe and use
the mailing list for Aejaks related discussion. Subscription information at:
http://lists.sourceforge.net/lists/listinfo/aejaks-general

If you really, absolutely need to get in touch with me privately, email:
tpoi...@nyx.net


ACKNOWLEDGEMENTS:
Aejaks stands on the shoulders of giants, and would not be possible
without the contributions of a host of very talented programmers and
artists:

Echo2: Tod Liebeck, NextApp
Tcl/Jacl John Ousterhout, Ioi Lam, Brian Smith, Mo DeJong
IncrTcl: Michael J. McLennan, Mo DeJong
Jetty: Greg Wilkins, Mort Bay Consulting
Clcms: Jelte Jansen
EchopointNG: Brad Bakerman
Nuvola icons: David Vignoni
MrPersister Jacob Jenkov
H2 Database Thomas Mueller


DOWNLOAD:
http://sourceforge.net/project/showfiles.php?group_id=184611
or http://sourceforge.net/projects/aejaks

Three downloads are available (where 'x.y' is the current version):

aejaks-x.y-exe.tar.gz
aejaks-x.y-exe.zip

This package contains everything required to run, develop and deploy
Aejaks applications. Included are the aejaks.war file, Jetty web server,
sample scripts, and documentation.

Java 1.4 or higher is required to run the Aejaks and the Jetty web server.
http://java.sun.com


aejaks-x.y-src.tar.gz
aejaks-x.y-src.zip

Developers who wish to contribute to Aejaks development should download
this file and the above '-exe' file, and unpack both into the same
directory. This package contains source for Java and Tcl files,
documentation source, build scripts, library files, icon and image
source, Eclipse project and classpath files.

Java JDK 1.4 or higher is required to develop Aejaks.
http://java.sun.com

Ant or Eclipse is require to run the Java source build.xml file.
Ant and Eclipse can be downloaded from
http://ant.apache.org
http://eclipse.org

The Jetty web server is not included with the source distribution.
If you would like to run with the Jetty web server, download and
unpack the executable distribution (e.g., aejaks-x.y-exe.zip) or
download the Jetty web server at:
http://jetty.mortbay.com
You may also run with Apache Tomcat, or other Java Servlet web servers.

Clcms and Python are required to regenerate the local website &
documentation. Clcms and Python can be downloaded from:
http://www.jelte.nlnetlabs.nl/Projects/clcms/index.html
http://python.org

AejaksDemo.war

This war is the webserver deployment file containing the Aejaks
runtime and all required libraries, along with the 'widget_tour'
demo script. Simply deploy this file into your existing Java Servlet
engine (e.g., Jetty, Tomcat, Resin, Websphere, Weblogic, Winstone, etc.
Java 1.4 or higher is also requried.)

Once deployed (and depending on your servlet engine), you should be
able to invoke the Aejaks 'widget_tour' demo by opening a browser to
http://your-web-server-host/AejaksDemo

AejaksDemo.war is a full run-time environment for Aejaks. Update the
internal WEB-INF/web.xml file or provide the runtime parameters as
outlined in the documentation:
http://aejaks.sourceforge.net/Documentation/Running/index.html
http://aejaks.sourceforge.net/Documentation/Configuration/index.html


REQUIREMENTS:
Aejaks requires a Java JRE 1.4 or higher installation. No other
external software is required, Aejaks is ready to run. Aejaks includes
the Jetty webserver, configured to start on port 8080.


DOCUMENTATION:
See: ./website/out/index.html
This is a local copy of the website, including all documentation to related
software.

All documentation is also available at: http://aejaks.sf.net


QUICK START:
You will need Java JDK or JRE 1.4 or higher installed. un-tar or un-zip
the '-exe' distribution file:

tar zxf aejaks-x.y-exe.tar.gz
unzip aejaks-x.y-exe.zip
winzip ...etc...

Start the Jetty webserver:

unix/linux:
sh run.sh

windows, execute in a Command Prompt window:
run.bat

Start your web browser and load the index.html page:

unix/linux:
firefox http://localhost:8080

windows:
start http://localhost:8080

Now start exploring the demos!

To stop the web server:

unix/linux:
sh stop.sh

windows:
^C (in the Command Prompt window where you started jetty)
and
^C (in the Command Prompt window running the H2 database)


COPYRIGHT & LICENSE:
Aejaks Copyright 2006-2008, Tom Poindexter

Aejaks is licensed under the Mozilla Public License 1.1, or the GNU LGPL 2.1.

Aejaks includes the following software, please refer to the copyright
and license statements for each package in the ./licenses/ directory:

Echo2
EchopointNG
Jacl, IncrTcl, TJC
Jetty
JFreeChart
Nuvola icons
Mr Persister
H2 Database
TclTutor

--
Tom Poindexter
tpoi...@nyx.net

Harm Olthof

unread,
Sep 15, 2008, 4:15:32 PM9/15/08
to
Congratulations!
This is really great work.
Can you tell us about your future roadplan for Aejaks? Especially if you
have any plans to shift to the Echo3 developments?
Regards,
Harm


"Tom Poindexter" <tpoi...@nyx3.nyx.net> wrote in message
news:12214451...@irys.nyx.net...

Tom Poindexter

unread,
Sep 15, 2008, 6:56:54 PM9/15/08
to
In article <48cec276$0$198$e4fe...@news.xs4all.nl>,

Harm Olthof <geenspam@invalid> wrote:
>Congratulations!
>This is really great work.
>Can you tell us about your future roadplan for Aejaks? Especially if you
>have any plans to shift to the Echo3 developments?
>Regards,
>Harm


Thanks!

I'm tracking Echo3, but because Aejaks is using some component
libraries that have not yet been ported (Echo2Chart, EchopointNG),
I will stick to Echo2 until those are available. In terms of
functionality for Aejaks, Echo3 doesn't yet provide any
compelling reasons to make a switch to it now. Echo3 provides
mostly the same Java API, the underlying rendering scheme is
the big difference.


Also - I believe I found a bug already in the 1.0 release, which
affects the Hyde package, and consequently, the MrPersister database
package. It seems that the on-the-fly Java compiler is having
problems when running under Java 1.6. Running the 'Aejaks Rolodex'
demo will probably give an error. For now, use Java 1.4 or 1.5,
I'll have a work-around on the website in a day or two, and hopefully
a fix by next week.

-Tom

--
Tom Poindexter
tpoi...@nyx.net

Harm Olthof

unread,
Sep 16, 2008, 4:25:52 AM9/16/08
to
Thanks for sharing. I will concentrate on using Aejaks, then. I Think I may
have noticed a bug too: unless you use explicitly the exit button to exit
the Widget Tour, you allways return to the Widget Tour and not to some other
item you may have choosen from the main page.
Regards,
Harm

"Tom Poindexter" <tpoi...@nyx.net> wrote in message
news:12215194...@irys.nyx.net...
..> I'm tracking Echo3, but because Aejaks is using some component

Tom Poindexter

unread,
Sep 16, 2008, 9:39:38 AM9/16/08
to
In article <48cf6d90$0$186$e4fe...@news.xs4all.nl>,

Harm Olthof <geenspam@invalid> wrote:
>Thanks for sharing. I will concentrate on using Aejaks, then. I Think I may
>have noticed a bug too: unless you use explicitly the exit button to exit
>the Widget Tour, you allways return to the Widget Tour and not to some other
>item you may have choosen from the main page.

That behavior is actually a characteristic of the Echo library. Echo
uses a JSESSIONID cookie to maintain state on the server. Using
'exit' in an Aejaks application is recommended, since the Jacl
interpreter and Echo objects are still active in server memory, and will
otherwise be reclaimed when the session timeout is reached.

This is one reason why Aejaks applications are radically different from
other HTTP applications - state, including all of the interpreter, is
resident during the app's lifetime, for each active user. Each user gets
their own intepreter on the server. This also means that you can program
'after' events to do work when not servicing a user event.

This also makes Aejaks more suited for applications where you might
have 50-200 maximum active users (depending on server size), and why
it's not a good candidate for high volume, stateless applications.
--
Tom Poindexter
tpoi...@nyx.net

Harm Olthof

unread,
Sep 16, 2008, 10:36:26 AM9/16/08
to
I was afraid for an answer like this. It breaks the existing user
experience. Unless it is possible to catch the "Back" button, close tab, etc
and end the session.
I have a couple of more questions. Is the Aejaks mailing list still active?
I never receive any digests anymore.
Harm

"Tom Poindexter" <tpoi...@nyx.net> wrote in message

news:12215723...@irys.nyx.net...

Tom Poindexter

unread,
Sep 16, 2008, 12:01:41 PM9/16/08
to
In article <48cfc46a$0$201$e4fe...@news.xs4all.nl>,

Harm Olthof <geenspam@invalid> wrote:
>I was afraid for an answer like this. It breaks the existing user
>experience. Unless it is possible to catch the "Back" button, close tab, etc
>and end the session.

One possibility that might work is have a link to an Aejaks application first
execute some Javascript to clear the JSESSIONID cookie, before linking to
the application. There is a possibility to have another servlet on the
webserver invalidate the user session. There are some posts on the
Echo forum that address this.


>I have a couple of more questions. Is the Aejaks mailing list still active?
>I never receive any digests anymore.

Traffic on the Aejaks mailing list is light, but active. I'll certainly
answer :-)


--
Tom Poindexter
tpoi...@nyx.net

Gerry Snyder

unread,
Sep 16, 2008, 4:12:42 PM9/16/08
to
Tom Poindexter wrote:
> Aejaks is now 1.0 !!

And a most impressive package indeed!

Just unpack and exec run.sh or run.bat and the web server is running and
all the examples are there just waiting to be explored.

The only thing that took any time and thought at all was finding how to
make the server respond to my other PC's (uncomment a line in run.sh or
h2/server.bat), and that was just a very few minutes.

Which brings me to my only question (so far): Am I correct in assuming
that jetty is inherently as (un)secure as any other web server, and that
the real dangers are in exposing a Tcl interp to the outside world? So
that avoiding interpreting code from others is the main concern?


Thank you for this amazing product. It has been a long time since so
little work (on my part) has led to such a great increase in power on my PC.


Gerry

Harm Olthof

unread,
Sep 16, 2008, 4:25:38 PM9/16/08
to
Thanks again. I will try to generate some traffic on the Aejaks mailing
list.
Harm

"Tom Poindexter" <tpoi...@nyx.net> wrote in message

news:12215809...@irys.nyx.net...

Tom Poindexter

unread,
Sep 16, 2008, 6:42:58 PM9/16/08
to
In article <XqUzk.724748$3p2.1...@fe10.news.easynews.com>,

Gerry Snyder <mesmer...@gmail.com> wrote:
>Tom Poindexter wrote:
>> Aejaks is now 1.0 !!
>
>And a most impressive package indeed!

Thanks!

>
>Just unpack and exec run.sh or run.bat and the web server is running and
>all the examples are there just waiting to be explored.
>
>The only thing that took any time and thought at all was finding how to
>make the server respond to my other PC's (uncomment a line in run.sh or
>h2/server.bat), and that was just a very few minutes.


Hmmmm, you should have been able to run from other machines, as long
as no firewalls were in the way. Are you referring to the 'H2OPTS'
shell variable? That (should) only turn on access to the H2 database
server from other machines, i.e., you can remotely connect to the database,
either via JDBC or the H2 web app.

>
>Which brings me to my only question (so far): Am I correct in assuming
>that jetty is inherently as (un)secure as any other web server, and that
>the real dangers are in exposing a Tcl interp to the outside world? So
>that avoiding interpreting code from others is the main concern?


Jetty should be reasonably 'secure', Latest Netcraft survey shows almost a
quarter of a million websites running Jetty
http://survey.netcraft.com/Reports/200808/

Jetty has a big following, probably can find security info at:
http://jetty.mortbay.com

Just as with other web systems, there are a number of things to worry about,
most of which are programming related. Probably the biggest is executing
arbitrary user input. Eg:

TextField .t -command {eval [.t get]}

is not very smart. Don't do it. Same goes for SQL injection attacks.

There have also been some security related issues around systems
that use AJAX. Probably should have a look at these. To my knowledge,
I haven't heard of any attacks on Echo2 (the underlying AJAX libary.)

You can also run Aejaks in other Java servlet containers, Apache Tomcat
is another choice.

Gerry Snyder

unread,
Sep 17, 2008, 1:13:25 AM9/17/08
to
Tom Poindexter wrote:
> In article <XqUzk.724748$3p2.1...@fe10.news.easynews.com>,
> Gerry Snyder <mesmer...@gmail.com> wrote:
>>....

>> The only thing that took any time and thought at all was finding how to
>> make the server respond to my other PC's (uncomment a line in run.sh or
>> h2/server.bat), and that was just a very few minutes.
>
>
> Hmmmm, you should have been able to run from other machines, as long
> as no firewalls were in the way.

Double hmmmmm. Yesterday I executed shell.bat and could not see the
server from another WinXP machine. I found the following two lines in
h2/h2server.bat :

@rem use this command line to allow connections from other machines
@rem java -cp "h2.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Server -web
-tcp -pg -webAllowOthers -tcpAllowOthers

And the following message printed out in a cmd window:

Web server running on http://localhost:8082 (only local connections)

These combined to make me think I needed to uncomment the second line
from the .bat file. I did, and could suddenly see the server on the
other PC. Hence my comments.

Today, based on your reply, I reran the original version and the server
is visible. I ran aejaks on the other machine too, and it is visible
elsewhere. Sigh! You must be right, it was a firewall blocking
something that it later decided to allow. Or else just another instance
of the rule "Some things don't work the first time."

Sorry for wasting your time, but it seemed like I had a pretty
convincing case.

And thanks again.

Gerry

Googie

unread,
Sep 17, 2008, 2:32:24 AM9/17/08
to
Tom Poindexter wrote:

>
> Aejaks is now 1.0 !!
>

[...]

I love it. ToolKit over http, just delicious!

But...
I wanted to play with it using console servlet (are these servlets or
what?), but I cannot access console, becouse I don't know the password.
README says it's printed out while starting server up - well, it's not. The
only numbers it prints are two PIDs and that's all.

How can I make sure that I should get password number printed? What should I
check or change?

I'm using slackware (current version) linux distribution.

--
Pozdrawiam! (Regards!)
Googie

Tom Poindexter

unread,
Sep 17, 2008, 9:42:31 AM9/17/08
to
In article <gaq3g7$8tu$1...@node1.news.atman.pl>, Googie <n...@spam.0rg> wrote:
>Tom Poindexter wrote:

>But...
>I wanted to play with it using console servlet (are these servlets or
>what?), but I cannot access console, becouse I don't know the password.
>README says it's printed out while starting server up - well, it's not. The
>only numbers it prints are two PIDs and that's all.
>
>How can I make sure that I should get password number printed? What should I
>check or change?
>
>I'm using slackware (current version) linux distribution.


The 'password' is a randomly generated number, printed on stdout where you
started 'run.sh'. Try adding the following line in run.sh:

export JETTY_CONSOLE=/dev/tty

This is done for MacOSX, otherwise the Jetty output goes to /dev/console. I
regularly run Aejaks under Unbuntu Linux, Windows XP, and MacOSX, so perhaps
Slackware is treated slightly differntly by the Jetty startup.

If this doesn't work, please let me know and I'll look into it.

This is what you should see when starting Aejaks:

$ ./run.sh
started h2 database server: 240
Starting Jetty:
STARTED Jetty Wed Sep 17 07:34:54 MDT 2008
Jetty running pid=257
jetty web server will be available when 'Started SelectChannelConnector' message is printed
Macintosh:aejaks tpoindex$ 2008-09-17 07:34:57.129::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
TCP server running on tcp://localhost:9092 (only local connections)
PG server running on pg://localhost:5435 (only local connections)


Web server running on http://localhost:8082 (only local connections)

2008-09-17 07:34:57.827::INFO: Bound jdbc/aejaksds
2008-09-17 07:34:57.827::INFO: Bound org.mortbay.jetty.plus.naming.Resource/jdbc/aejaksds
2008-09-17 07:34:57.828::INFO: jetty-6.0.1
2008-09-17 07:34:57.912::INFO: Extract jar:file:/Users/tpoindex/Documents/workspace/aejaks/war/aejaks.war!/ to /tmp/Jetty_0_0_0_0
2008-09-17 07:35:03.222::INFO: Started SelectChannelConnector @ 0.0.0.0:8080


and when you start the Aejaks Console applications, you should see

Aejaks Console password: xxxxxx


--
Tom Poindexter
tpoi...@nyx.net

0 new messages