- We design and build extraordinary applications for companies looking to make the next great idea a reality.
- learn more
Recent Ajax Framework Releases/Developments
Some noteworthy Ajax Framework releases have come out in the last few weeks, along with some other news of interest:
- Ext JS 2.1 and Ext GWT 1.0 Beta - Better performance, new Slider, StatusBar components. REST support (support for other HTTP methods beyond POST and GET). The Ext GWT 1.0 Beta consummates the love affair between GWT (Google Web Toolkit) and Ext that was started by gwt-ext and MyGWT, but provides the comfort of knowing that it is supported by the Ext JS folks. Note: Ext GWT is pure GWT, not an Ext JS wrapper.
- Dojo 1.1 - First off, API compatibility between 1.0 and 1.1. Unified timing loop (ala Scriptaculous) for animation effects, with increased performance. Syntactic improvements to dojo.query. Unification of XHR functionality into dojo.xhr() function.
- Backbase Enterprise Ajax 4.2 - Backbase has been in the commercial framework game longer than almost anyone. Among the new features: hierarchical data bindings and improved performance. If you've wanted data binding for tree widgets, have a look.
- Google Search, Feed and Translation API - I opined a while back that Google discontinued their SOAP search API because they didn't want people reordering or otherwise manipulating their search results. Looking at the terms of use of the new REST service, you can see that this continues to be a concern: You agree that you will not, and you will not permit your users or other third parties to: (a) modify or replace the text, images, or other content of the Google Search Results, including by (i) changing the order in which the Google Search Results appear...
- Google App Engine - it only runs Python apps right now, and it's a preview release available to a select few, but you can already see that this is Google's challenge to Amazon's EC2 compute cloud. In at most a year, unless you are security sensitive -- health care, financial services -- or running on Windows, you won't be building and maintaining data centers. The capital requirements for launching sophisticated and scalable online services is about to change.
- Echo3 (beta) - it's getting close. Superior performance to Echo2. Easier development of new components. Automatic serialization of objects between client and server. All HTML rendering now done on client. Overall the JavaScript client code is now of a design quality on par with the server code.
Lots of exciting developments for Ajax developers and Web 2.0 entrepreneurs. I, for one, can't wait to see how the Google App Engine compares to EC2 for deploying and scaling Facebook applications.
Technorati Tags: ajax, dojo, google app engine, gwt, ext js, backbase, echo3, google search
Topics: Ajax Frameworks, Dojo, Echo2, Echo3, Ext JS, Facebook, Google, GWT, Javascript Libraries
Server-side Ajax Framework: IT Mill Toolkit 5, now with GWT
I've long been a proponent of server-side Ajax frameworks -- frameworks that store state on the server and use an Ajax engine in the browser to drive the display. The advantages: state and control logic stay on the server, so security compromises that exploit client-side state and logic are more difficult to pull off; developers can work in one language and, for the most part, ignore the fact they are writing a web application. The disadvantages: the server retains a large amount of state, so scaling your application can be problematic.
There's one other large disadvantage to these open source server-side frameworks: for every 100 Java developers who use the framework, there is only 1 of them that can do serious JavaScript development. That means that the lifeblood of these frameworks -- the development of new and cool JavaScript widgets -- is sluggish at best. That has certainly been the case with the best known 3 frameworks: Echo2, ZK and ThinWire (though ZK does wrap a number of Ajax widget libraries, such as Dojo).
Topics: Echo2, GWT, Server Side, ZK
Echo3 Update: SVN, Wiki, Forms, Builds
Echo3 is showing a few more signs of life. Since my update last month on some early details of Echo3, the pace has picked up. No alpha release, but already there are two forums, one especially for folks looking to contribute to Echo3 development. Also, a few other things worth mentioning about Echo3:
- The SVN repository can be found at svn://svn.nextapp.com/echo3/trunk (Echo3Extras are at svn://svn.nextapp.com/echo3extras/trunk).
- If you just want the binaries (or binaries with source), the Echo3Go project is handy.
- Initial performance numbers of Echo2 vs Echo3 show a more than 2x improvement in performance.
Further, a more detailed description of the new features, design principles and ideas behind Echo3 can be found on the wiki. Two items that are especially interesting for those looking to write their own components:
- Automatic Serialization: Data objects sent between client and server can be automatically serialized between Java, XML, and JavaScript. The serialization architecture is extensible--serialization code for new object types may be added by the developer.
- Simplified Client/Server Synchronization Peers: Serializing components and commands between client and server is performed automatically using the built-in serialization architecture. The component developer only need specify which properties should be sent (for components, all local style properties are automatically sent).
Serializing and deserializing data between client and server can be one of the more timeconsuming and error prone parts of developing Ajax apps. Packaging this into the framework with improve productivity at the very least.
Technorati Tags: ajax, echo3, echo2
Topics: Ajax Frameworks, Announcement, Echo2, Echo3
Details Emerge on Echo3
Some hopeful news on Echo3:
- First, it is close to a release.
- Second, there are more developers working on it.
- Next, they have a new web container architecture:
In Echo2, we used the client as a remote “canvas”, upon which to “render” the state of an application that was running on a server. We sometimes did this by sending down blocks of XHTML code, instructing the client to add the new code to its DOM. We sometimes did this by sending XML directives that would invoke JavaScript code to render an HTML representation of a component on the client. In both cases, the client did not have any real information about what components were being rendered to it. It was simply used as a display.
[...]
With Echo3, the client gets smart. The first step was to create a version of Echo that ran entirely on the client, that is, a JavaScript version of Echo. This has been done to such an extent that, if desired, Echo 3.0 applications can be developed in client-side JavaScript without the need for a server at all (this topic will be discussed at length later).
The mission of Echo 3.x is still to enable advanced web-based application development in server-side Java code, just as it was with 2.x. Just like in 2.x, the developer is not required to write any client-side JavaScript. From the end-developer's perspective, this still works in 3.x in the same way it did with 2.x. You still write server-side, object-oriented and event-driven Java code, and the application state magically appears on the client. Behind the scenes though, the process by which application state is synchronized between the client and server is quite a bit different.
In Echo3, we serialize the state of an application between client and server. As we now have the application framework running on the client as well, this is quite easy to do.
As another poster observed, it should be possible to write Echo3 apps in other languages besides Java on the server side, plus it looks like writing components will be much simplified.
I'm still waiting to hear, though, how the community will be able to contribute to Echo3, rather than the current wandering wiki/forum zip file.
Time to update and extend the tutorial.
Technorati Tags: ajax, echo2, echo3
Topics: Ajax Frameworks, Echo2
Aejaks 0.5 Integrates Echo2Extras
Aejaks, a Tcl/Tk style framework built on top of Echo2, has a new version out: 0.5, now considered Beta. What's in the new release?
- Echo2 Extras widgets - MenuBar, Drag/Drop, TabPane, TransitionPane, etc.
- Echo2 Chart widget
- Echo2 FileTransfer widget & Download command
- TaskQueue command - update widgets asynchronously
- Nuvola icon set -3,700+ high quality icons ready to use
- Updated widget_tour demo to show off all new widgets
- Download packages now split between exe and src; separate war file can also be downloaded which runs the widget_tour demo.
Check out the project news page and the 0.5 CHANGELOG.
Technorati Tags: ajax, echo2, aejaks, tcl, tk
Topics: Ajax Frameworks, Echo2
IDE Watch: Echo2 Module for NetBeans
We can see the beginnings of IDE support for Echo2 in NetBeans. This isn't close to the commercial plugin for Eclipse provided by NextApp, which, among other things, provides a widget tree and property editor that eases UI assembly. But the nbecho2support module does a couple of useful things for you. First, it will create an Echo2 webapp project for you with Echo2, Echo2Extras and the EchoPointNG libraries already included. Also, the web.xml file is already configured (though you will have to edit the default index.jsp to redirect to the /app url).


The one Echo2 specific filetype that can be created is the Echo2 style sheet, default to blank. So, definitely a useful module for those who want to work with NetBeans, with plenty of room for improvement.

Google Maps Component for Echo2
Just stumbled across this not quite ready Google Maps component for Echo2 over at Sourceforge. Hacim Bengalis over at his blog has taken this work and presents the code changes necessary to getting it to work with Echo2. Basically, he registers his own service (i.e. the stuff that gets run at start time for an Echo2 session, as I recall) that injects the Google Maps Javascript include into the page.
/* add google maps api */ baseDoc.addJavaScriptInclude("js/googleload.js");
If you read French, then this fellow claims to have done it without having to register his own services, i.e. with a stock Echo2.
The solution use the component HttpPaneEx from EchoPointNG (I guess this is standard library for most Echo2 users). This component creates an HTML Iframe in which you can display any HTML pages : even one using GoogleMaps. Next, you need to interact with it. The trick is to use method enqueueCommand and JavaScriptInclude and JavaScriptEval object from Echo2 to trigger javascript from Echo2.
I recall that when I tried this with Echo2 2.0.x, I had issues with the Echo2 client engine capturing events and making the Google maps component do weird things. His tutorial looks extensive; anybody feel up to translating some French?
Technorati Tags: ajax, echo2, google maps
Informagen Echo2 Component Library
Will Gilbert has contributed a handful of validating form field components. Take RegExTextField, for instance. It will take a regex and, surprise, validate the input against it. Maybe not earth shattering, but handy nonetheless.

Technorati Tags: ajax, echo2, components
Topics: Ajax Components, Echo2
Another Echo2 Sample App
Kenneth Riggio has put together an Echo2 sample app -- a single player Blackjack game.
He was kind enough to put up his source code and even gave a hat tip to my getting started tutorial.
Technorati Tags: ajax, echo2, games, examples
Topics: Ajax Frameworks, Echo2
Some tidbits about Echo3
Tod Liebeck dropped some tantalizing hints on the future direction of Echo2. First, it won't be Echo2, but Echo3! Sounds like the development of custom components will be a touch easier too.
The next version isn't 2.2, it's worth of a full version number change. We're almost ready to do the initial announcement on this one.
The Echo 2.x method of rendering component state to the client is all gone, component state is automatically serialized to the client for you (and changed properties on the client are automatically serialized back).
Another result of the Echo2/Cooee fork? You decide.
Technorati Tags: ajax, echo2, echo3
Topics: Ajax Frameworks, Echo2
Echo2/Cooee Split Bears Some Fruit
Looks like the pressure from the Cooee open source split has already resulted in some action. After many, many months of user grousing, Tod Liebeck of NextApp has just announced the launch of a bug tracker for Echo2. It's Mantis (not my favorite bug tracker -- personally I prefer JIRA), which is better than nothing.
A bug tracker is long overdo. Let's hope that other open source best practices start to appear, so that community involvement is boosted and these bugs get fixed.
Technorati Tags: echo2, cooee, mantis
Topics: Ajax Frameworks, Echo2
Cooee - Branch of Echo2 Project
I've thought for a while now that Echo2 wasn't really working as an Open Source project; I even have a couple of posts laying out some of the reasons that Echo2 was in danger of losing out to other, inferior frameworks all for a lack of organization and activity. Ultimately I didn't post them because I didn't want to undercut what I considered to be an otherwise excellent framework. But it's not surprising that someone else has felt the same way and taken action to rectify the situation.
Cooee, a fork of the Echo2 project, aims to make community participation much easier. From the FAQ:
What we're doing is trying to provide a much more open environment to stimulate the growth and acceptance of Echo2 / Cooee. We've spent a lot of time making sure that everything that happens as part of the Cooee project can directly benefit the work of Nextapp and other projects like EchoPointNG. For instance, all changes to the code base are tracked through JIRA, and marked appropriately in the commit comments. This means applying the changes / fixes we make back to Echo / EchoPointNG are exceptionally easy. To put it simply - we want to work with Echo and maintain as much API compatibility as possible. Not work against it.
The project has all the usual Open Source fixings: JIRA (bug reports), Confluence (wiki), Bamboo (continuous integration), forum, and Fisheye. It consolidates the several different jar files of Echo2, Extras and EchopointNG into a single jar file. A few other Echo2 related projects are also maintained on the site. It's early days yet, so the project doesn't seem to have a lot of momentum, but from the public roadmap to JIRA, they seem to be doing a few things right. Ultimately their success will depend on their ability to recruit other developers. The same is true, by the way, for the main Echo2 project.
Open source forks are not always a good thing. Sometimes an already small community gets split so far that the projects die of neglect. Of course Echo2 has been so moribund for the last few months that I think this particular fork is a good thing. The folks from NextApp seem to have gotten a kick in the pants as a result of this development. I've never seen them this engaged in the forum.
Let the competition begin.
Topics: Ajax Frameworks, Echo2, Open Source
Echo2Sudoku Fixed, Finished and Prettied Up
I had a few bugs in the Sudoku library that was causing the app to produce puzzles with non-unique solutions. I've also moved to using disabled TextField's and simply changing the CSS styles on squares to avoid having the browser re-render the application. Now, at long last, I'm ready to finish the tutorial.
Topics: Echo2
Coming Up - The Next Echo2 Tutorial
I've been hard at work on the next installment of my Echo2 tutorial series, which has been stalled at installment #1 (sorry about that). I decided that a nice, simple Sudoku program might be just the ticket for installment #2. Saturday was spent spelunking around, looking for some reusable Java Sudoku code. That was a bust. Everyone had their generator and solver glued to a GUI, and the actual generator code was fuggly. So the rest of Saturday was spent implementing an efficient puzzle generator.
My all too brief Easter Sunday was spent slapping the Sudoku library from Saturday into an Echo2 app. I didn't get all the way there. Right now, the application generates and displays the puzzles and will toggle back and forth between the solution view. You can try it out here.
Note that this Sudoku puzzle generator produces "hard" puzzles with minimal constraints, i.e. blanking out any of the filled in squares will produce a puzzle with more than one solution. Just a warning.
BTW, the toggling back and forth between the solution and puzzle view takes a bit of time (lots of components being updated). Using something like EPNG's StackedPaneEx (see the April 4th announcement of new goodies in the Echo2 forums) would speed things up quite a bit:
This is a Pane that can contain an number of child components (including other Panes) but ONLY ONE can is visible at a time. The others may however be rendered on the client (lazy is default) and when you pop the stack of visible children, the previous top child is hidden and the one under is in the stack is shown.
This is useful for "descending" in the UI. Say you have a form, that the user selects a record and you show a related subform of data. With StackedPaneEx, you can push the subform onto the stack, have it display and then at the click of a "return" button, display the top level form without re-rendering it.
This performance issue is actually a good lesson in the limits of GUI frameworks (Ajax libraries that sit on the browser side and manipulate the DOM are also affected): if you have to represent hundreds or even thousands of objects or widgets in a GUI, the overhead of the component heirarchy and event observer/observable plumbing makes doing this directly using first-class GUI objects problematic. One approach would involve rendering the widgets graphically (SVG?), and translating mouse clicks on the graphic into model events through pixel location to object mapping. As an example, think of an application that allows patrons to buy stadium tickets. You don't want to render every one of the 20,000 available seats, so instead you allow the patrons to drag a box across a graphic of the stadium and display a corresponding zoom box with a few dozen seats.
OK, enough digression. I'll try and get this tutorial done and polished up by the end of the week, but these tutorials always end up taking a long time to produce; to teach you have to remove all confusion and to be clear and brief at the same time is hard work.
Wt - Another Server-Side Ajax Framework, This Time in C++
We've had two server-side Ajax frameworks for a while now -- Echo2 and ZK -- that tranform web development into desktop GUI development. Now add a third: Wt, or "Witty" as it's known (here for tutorial), is a C++ framework. From the tutorial above, a classic manifesto of the server-side Ajax framework:
Because the API of Wt makes abstraction of the underlying technologies (Forms, JavaScript or AJAX), Wt chooses how to communicate with the web browser depending on technology support in the browser. The responsibility for making the application work in the jungle of web browsers is therefore also transferred from the application developers to the library developers.
The framework has most of the usual widgets and behaviors, including a tree widget and drag and drop.
Now my last serious C++ project was in institutional mutual fund trading system back in 1998, so I'm as rusty as Davey Jones' belt buckle when it comes to that language. To top it all off, I have Java and C# running through my brain, so I'm likely to introduce illigitimate syntax from these close cousins; but I know there are still plenty of talented and experienced programmers out there working with C++. More importantly, three frameworks officially makes for a trend, which means server-side component GUI frameworks are officially a "good idea."
Topics: Ajax Frameworks, Echo2, ZK
About Pathfinder
Recent
- Roles Testing For Security
- Blackbird takes the pain out of JavaScript logging
- Making GWT JSON not Quite so Painful
- IDEA - preconference workshop 06 Oct 08
- HTML5, Ajax history management, and The Ajax Experience 2008 Boston
- A Look Back At Past Posts
- Flash Player on iPhone gossip
- Microsoft to Jump on Board EC2
- TAE Boston 2008: The Unsexy Presentations
- The Ajax Experience 2008: Hope to see you in Beantown
Archives
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006




