Open Source AJAX toolkits
twofish writes "InfoWorld columnist Peter Wayner recently reviewed six
of the most popular "open source" Ajax toolkits. The article sets
out to see if they are enterprise ready in comparison to commercial products
such Backbase, JackBe, and Tibco's General Interface. The six open source projects
covered were selected because each has a high-profile in the developer community
and support of one or more stable organizations. "
The toolkits covered are:
Whilst the definition of open source is broad, the round-up is quite helpful.
- Dojo
- Google Web Toolkit
- Microsoft Atlas
- Open Rico and Prototype
- Yahoo AJAX Library
- Zimbra Kabuki AJAX Toolkit
Whilst the definition of open source is broad, the round-up is quite helpful.
http://ww6.infoworld.com/products/print_friendly.j sp?link=/article/06/07/31/31FEajax_1.html
My mom always said, "Jim, you're 1 in a million." Given the current population, there are 7000 of me. God help us all!
This column uses an interesting definition of Open Source.
From the article:
Microsoft's Atlas may not be open source -- the license includes terms that would rankle a devotee -- but the code you create with the system is yours to license as you like, and you'll be able to create Atlas apps with few practical restrictions.
Oh. Is that what Open Source means? That I can create apps with it and license them how I like? Well, crap, Visual Studio must be open source too!
Last I checked, neither Atlas nor GWT were open source in any sense of the word, though at least GWT will run on real servers.
This is in response to Google's toolkit, which allows users to code in Java instead of Javascript. I think this feature is a real winner to Java coders. Who wants to code Javascript when you can use Swing? Regardless of what TFA says, there is a difference between the two programming experiences.
In summary, if you are already proficient in Java, Google is the way to go.
Information wants a fueled airplane waiting at the hangar and no one gets hurt.
Or just write the ten lines needed to do XMLHttpRequest calls yourself (there, that's the AJAX part taken care of), and for all other effects write your own functions just like always (copy/paste from your personal library and adapt), so you don't have to deal with bloat, nine out of every ten functions being unneeded, and far too many levels of abstraction and generalization, and have the benefit of actually being able to quickly debug the script when you encounter a problem!
The only organizations where these toolkits might be useful are the really really large ones where there's a team that can dig into the framework and basically "make it their own". Everything smaller, using occasional contractors to maintain the code, benefit far and far more from simplicity, readability and maintainability than from dubious-quality top-heavy frameworks with lack of code-level documentation and thousand and one edgecase-bugs. (Spoken like someone who's had to trace such bugs in the mess of prototype and scriptaculo.us; I've only _looked_ at Dojo, Rico, Yahoo and Zimbra (and not at all at the other two), but my impressions were that what they made up in better code quality, they lost in bloat.)
If you're doing Java/J2EE work, you should really have a look at DWR
It makes it disgustingly simple to expose pretty much anything as AJAX calls
Why do we care what horse-breeders think? I mean since when have they been the technical thought-leaders?
The more you regulate a company, the worse its products become.
"Whilst the definition of open source is broad, the round-up is quite helpful."
Hemos appears to have misspelt "incorrect" as "broad".
Argh.
after reading the review, google seems to be the best for me, cause i already code in java. Using swing really makes sense, and simplifies the developer's job, instead of having to learn javascript. have to give it a shot sometime... and my friend recently used DOJO and said he found it easier that other toolkits. he is no newbie, so i guess its pretty flexible and detailed enough for serious use. but since i have no experience of using it, i cannot comment. Can some one please enlighten me if its good for beginners?
Using Atlas for asp.net (http://atlas.asp.net/). Fantastic framework; unbelievably simple.
I took a normal asp.net form I built for an ordering-page (lot's of postbacks for updating various basket options, etc, etc), wrapped it in an atlas XML container (all of 10 seconds work), and Bob became my uncle - the entire thing was AJAX enabled, doing lightweight postbacks & updates instead instead of the usual full-page postbacks you normally get with asp.net page-events.
And all the JS is cross-platform too - IE, FF, Safari, etc (allthough, sadly, no Opera support just yet).
And the best thing is, for all you JavaScript haters is turning off JS in the browser just meant the page automatically reverted to full-blown postbacks instead; thus not limiting accesibility.
Oh, and I understand you can link php into Atlas too, but I'm guessing there's other stuff out there for php aswell.
throw new NoSignatureException();
http://www.sitepoint.com/article/javascript-librar y
--
Carnage Blender : Meet interesting people. Kill them.
I just went through and evaluated most of these myself in the past week because of a new work project. Dojo is by far the best when looking at building a real web "application". The others have limitations (such as Google's toolkit which requires you to write your code in Java) or are focused too much on "flashy" stuff. Dojo provides dialog boxes, windows, an editor, and more. It still has bugs and is an early version, so you need to consider your audience and time frame. For example, I had a problem with FF 1.0.7 (even though they say it is supported) but I only need to support FF 1.5 and Safari 2. I'm building a complex web app for an internal audience and I can guarantee they'll have one of these 2 browsers. Still, it seems to have broader support than some of the others toolkits. While I'm jsut starting with it, I've been happy so far. There's little documentation but the examples are good enough to get you started.
If it doesn't include DWR (probably THE most popular Java AJAX toolkit) yet includes a Microsoft offering then the article is effectively rendered useless...
Bob
Listen to my latest album here
What about Echo2 http://www.nextapp.com/platform/echo2/echo/ ?
Why is that script.aculo.us is left out of these comparisons? script.aculo.us is behind the AJAX in most Ruby on Rails apps, but it can be used on its own. (As of Rails 1.1, Rails has special built-in support to make it even easier to use.)
The space unintentionally left unblank.
"In summary, if you are already proficient in Java, Google is the way to go."
Problem is Java is a heavy language. The tools are heavy, as well as the books. Even the programmers are heavy. Javascript however is a much lighter language, and the tools are light weight.
...make sure you check out qooxdoo.
Its not the best known, but its one of the most promising toolkits in [very] active development. I've been involved (sort of -- following the mailing list) and its open source & very slick.
http://www.qooxdoo.org//
The 0.6 release is expected in the next day or so, and is a big jump over 0.5. The only area that is still a bit weak is the documentation, but there is a good group of developers working actively on getting that properly sorted for the next release.
As many have noted the article is really quite clueless. However, any review on Ajax toolkits is not complete with a mention of Direct Web Remoting.
Central idea behind DWR is it exposes methods of Java Beans over the web. Create a server side class and then call methods from javascript like this: MyBean.method(). It couldn't be simpler.
I have used DWR in my just released online version of Risk, called Grand Strategy.
The biggest problem I have with all these toolkits, and with AJAX usage in general, is the RPC-orientation (vs. message-orientation). Instead of creating web services that could be used by many different client libraries, coders are actually deep coupling their server code with the libraries in the article. When a good library finally focuses on the client side sugar and facilitating communication with message-oriented web services on the server side, then we'll make a leap forward.
I'm a little surprised that nobody has mentioned jQuery (http://jquery.com/). While it does AJAX, its much more than that, and lets you write some seriously concise script. There's also a lot of activity from Dean Edwards (http://dean.edwards.name/) on the mailing list, which is probably a good thing. Also looks like it might be the only/first library to find a true solution to the whole cross-browser "window.onload" problem (as of version 1.0, currently in beta).
I'd recently given myself a crash course in javascript for a site I was working on. Ended up using the moo.fx (http://moofx.mad4milk.net/) library with niftycube (http://www.html.it/articoli/niftycube/) for the all important rounded corners. Checked out dojo but it seemed a little more than I needed. Also glanced at Yahoo.
e ct_position
Looking over the packages listed here, I'm especially impressed with Rico. Single file used in conjunction with the prototype.js script. And a really excellent demo page:
http://openrico.org/rico/demos.page?demo=rico_eff
The author of the article gives Yahoo credit for the package management -- I think Rico deserves a praise for their site, too. I look forward to giving it a whirl.
Innovation makes enemies of all those who prospered under the old regime... -- Machiavelli
While Rico is nice, i've never found a need to use it on any website i've built todate. I've just completed http://www.stargamer.net/ (StarGamer.net) which uses the prototype framework and script.aculo.us and i found it to be a breeze.
Admitadly the documentation is a little thin and there hasnt been any real updates in a while, but i've started to mold it into my own library to come up with some rather nice effects and functionality.
Personally I think the Yahoo YUI Toolkit is the best framework out there. It is commented very well, it is 100% cross browser compatible (they test on Opera, Firefox, Netscape, IE etc). It is fully supported by a team of engineers. They provide several versions of each script, so you can build your site with the -debug script, move to the normal script, and then when putting it on a live server, you include the minimzed script which is much smaller.
Just my experience, but they were all a little lacking (although I admit I'm a novice in AJAX).
Rico's newsgroup was great; I got (friendly) answers within hours, but I'm not exaggerating when I say the documentation was the worst I've ever seen. If I had more time to play around, I would have stuck it out and helped (their community is cool), but I'm on the clock and need simple working examples.
I briefly tried Atlas and was impressed with ease of use, but got hung up with bugs (it's beta, but will be a good tool when it's ready).
Dojo had good starter documentation. I spent a while trying to figure out something poorly documented and figured I'd write a brief tutorial, but was surpirsed they have a "closed" Wiki. After some digging, it suggested dropping the developers a line to get an account, but wasn't able to find the address. I gave up. I can see why their documentation is so spotty, since they ignore what a great tool a Wiki could be. The psuedo-Wiki gaps are somewhat filled by a pretty good newsgroup though.
YMMV, but Dojo was the best of the tools I worked with.
Echo http://nextapp.com/ is quite nice IMO
Hey, Anybody know that there is work in progress for strongly typed libraries (targeting javascript and php)? Watch http://www.youtube.com/watch?v=O9erSxI7Rsw and visit for information http://zproxy.wordpress.com/jsc-javascript-script- compiler/
cheers:)
"None of the open source packages I looked at come close to the range, depth, and support of these commercial packages."
Please. The author is impressed with the IDE's that ship with these commercial packages. An IDE, and a glossy web site does NOT equate to good software.
If the author really knew anything about AJAX development, there would be something on DWR in there. Not just list the OS AJAX packages provided by Google, Yahoo, Microsoft, etc. Why can't these tech magazines employ writers with actual tech experience?
There are two other, very active and famous scripts left behind:
1. script.aculo.us : That have many effects include in it and is used in Ruby
2. script.aculo.us : An active library to help for ajax development.
Be like shadow in the light or darkness.KMZ
"Even the programmers are heavy"
Well said.
Echo 2 is the most under-rated, under-hyped, under-exposed Web UI development framework around. Try it. It's how GUI development should be.
-- MartinG To mail me: echo kewyjlcxyzvjfxbqwh | tr bcefhjklqvwxyz
I looked at some of these a while ago. Zimbra has one of the coolest demos. But many of these severely (or completely) lack documentation, which means they are not ready for anything but "mom's basement, no deadline" type projects.
This stuff is really exciting, but until there is documentation, it is not worth mentioning at work.
A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
I've tried Dojo and the Prototype derivatives - Moofx, Rico and Scriptaculous. I don't really like Dojo because it seems so basic. Moofx is pretty good for lightweight effects, and the weight factor for effects goes up with Rico and even more with Scriptaculous. Bad thing about Prototype based scripts is that it doesn't play well with others due to Prototype's large manipulation of core objects. Enter QOOXDOO. Qooxdoo surprised me with how advanced it was. And its free. It is definately the script anyone needs to build a complex user interface for any application, because its designed to look just like an application. Its documentation is sparse, but the development community is amazing. they respond very quickly, and are working hard to fill the gaps on the documentation. The latest version is a vast improvement. The examples are very diverse, showing all the possibilities this remarkable script can do. if you really want to see an advanced framework that looks incredibly awesome, check out Qooxdoo...http://www.qooxdoo.org
"..Sarissa is an ECMAScript library acting as a cross-browser wrapper for native XML APIs. It offers various XML related goodies like Document instantiation, XML loading from URLs or strings, XSLT transformations, XPath queries etc and comes especially handy for people doing what is lately known as "AJAX" development.
r y.html
Supported browsers are Mozilla - Firefox and family, Internet Explorer with MSXML3.0 and up, Konqueror (KDE 3.3+ for sure), Safari and Opera. Konq, Safari and Opera offer no XSLT/XPath scripting support AFAIK... "
http://sarissa.sourceforge.net/doc/overview-summa
once again, echo is missing...
it is me
and there's probably a reason why; I'd like to hear how terrible it is.
...go for MochiKit, nuff said.
if (!signature) { throw std::runtime_error("No sig!"); }
"sometimes it is easier to wedge something in and use a buzzword to sound cool and relevant."
Hey! I'm a SLASHDOTTER!
If you actually know what you're doing, it's far, far better to either write your own code, or strip out the routines from an "established" package rather than deploy the package as a whole.
The biggest problem with the toolkits that are coming out is that they're sacrificing runtime efficiency for programing efficiency. Case in point: just about every one of these toolkits have the asinine $(elementId) method as a shortcut for writing out document.getElementById(elementId). WHY? Do you really need a method look-up just to save yourself a few keystrokes of typing?
Javascript is not compiled. None of the compiler optimizations you get from "good coding practice" are going to go into effect when you wrap your simple methods in gi-normous objects. All you do is make your code run slower on the client's machine.
If I go to the Dojo site and click the "see it in action" tab, Firefox immediately crashes. Not exactly a great demo.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
Google's toolkit is kind of nice for Java developers but seems pretty intrusive to have a layered design with front end stuff done with Java. Dwr (direct web remoting) has a decent toolkit that allows you to call Java code through javascript by generating javascript files for your Java code. It also integrates well with the Spring framework.
Inside M$ (MSN) their actually using http://www.telerik.com/ Rad Controls. They are pretty kewl, and they do offer the source to them, but its ASP.NET specific.
The complete stuff has two partsu rce=NLC-SR2006-08-01?source=NLC-SR2006-08-01
http://www.infoworld.com/reports/31SRajax.html?so
The missing part is titled "Proprietary AJAX toolkits: The other side of the coin", where he writes
Integrated data formats unify the proprietary toolkits. Backbase stores all of its layout and event passing information in its own XML format; JackBe uses JavaScript to store data. The open source toolkits have some amount of unification, but they are often more open and cacophonous. True cohesion isn't common except perhaps in the case of Google; its format is fairly inscrutible because it was translated from Java.
among other calamities, i mean, confused thoughts. In what sense Backbase, JackBe and Tibco are integrated if each one of them has it's own propietary UI definition language?
In the other hand, I can tell you that JackBe is not the way to go, at least you are giving up using other libraries, e.g. Protoype, which breaks the JBTable. And believe me, JackBe widgets are not worth the bucks.
There are also toolkits and JavaScript apps that combine W3C standards with AJAX, letting you write a lot of the dynamic page stuff in a declarative fashion, using just markup (XHTML+XForms; I was an editor of the XForms 1.0 recommendation, but new revisions have come out; see http://www.w3.org/TR/xforms).
The FormFaces OSS product is an entire XForms implementation done in JavaScript, running in the browser. You write your page in HTML with XForms markup, and FormFaces does the "HiJax" thing of re-writing it for you. You never need to use XmlHttpRequest, and you can interact with regular servers, RESTful services, etc., all via XML.
Another product that does this, in a slightly different way, is AjaxForms. I just found out about it, but it looks pretty good. AjaxForms uses some server-side components to do the translation from strict XHTML+XForms markup into Ajax (HTML4+JavaScript), but they claim it can work in PHP and Tomcat servers. Again, FOSS, and available at http://ajaxforms.sourceforge.net/ [sourceforge.net]
I recently implemented dynamic forms for weblogs and wikis, and did it using Chiba, another FOSS product, that like AjaxForms does its conversion on the server, using Tomcat as a container.
The Orbeon folks have a nice blog that shows how to use XForms (their implementation, the Mozilla extension, or any of the other above toolkits) to accomplish typical dynamic page tasks such as listing countries and ISO codes, or resizing flickr (also via formsplayer.
Using AJAX in almost all cases is just a few lines of code, most of it identical from prject to project.... populating list boxes, content, etc. Its pretty simplistic... why do we need "tool-kits" for this?
I mean, if you can't take 30 minutes to an hour (tops) to read a short book on AJAX concepts/examples then you really shouldn't be developing ANY web apps. Its not like this stuff is rocket science, or even a new idea/concept. How many years has this functionality been in IE? 5 or 6 years?
The larger issue at hand is this. At what point is programming going to stop being dumbed down at the cost of performace and good clean code? Is it ever going to stop?
I've been developing an ajax app from scratch, but have been using features of the dojo toolkit. Dojo is great so far and I can't wait to see what they add in the future.
Feel free to check it out by following the link in my footer, I've never tested my site under heavy strain and I guess todays as good a day as any. It was designed to have less strain on the server then a traditional web application.
Come on slashdotters, try and bring down my site. The link is friendly, there are no popups, ad's or anything else that makes the internet suck.
What about changes NOT sourced from the browser end?
All the AJAX code I have seen concentrates on events starting at the client - the browser.
This is all very nice, but not useful for any complex realtime system - any form of monitoring for example.
It IS possible to do this sort of thing (I do it by keeping a constant connection, rotated on timeouts, but it feels a bit tacky and doesn't scale well - it's just equivalent to polling, albeit faster), but I haven't seen open source (or indeed commercial) code to do it.
Does any exist? Have I been missing something?
"Cats like plain crisps"
I'd like to advertise my own, unpopular javascript library:
The ff javascript library
A ultra lightweight (below 7k normal / below 3k gzipped) javascript library offering crossbrowser support for:
while (!asleep()) sheep++
APhPLIX is a toolkit for building Ajax web applications with a traditional GUI.
It comes with a visual development studio web application for point and click application development, and it's all open source.
I think there may be some similar proprietary products, but I don't think there are any other open source projects like it.
--
zeemu