WARNING: This blog entry was imported from my old blog on blogs.sun.com (which used different blogging software), so formatting and links may not be correct.
I just listened to
of the Ajaxian podcast, where they interview Thomas Fuchs of Scriptaculous. In it they talk a bit
about how after the AJAX craze started, Microsoft and others came out
and said building AJAX is for rocket scientists. Thomas rejects that and states that it's trivial - it's just a call to a server.
I'm one of the people who came out and said that AJAX is hard - in fact I said it
during the keynote demo at JavaOne where I showed Creator's AJAX
support. So, I thought I'd clarify why I said it since at the time it was clearly true.
AJAX applications typically consist of asynchronous server trips (via XMLHttp), CSS, XML,
problem is with the browsers.
Even during the interview, Thomas talks about how Internet Explorer
has issues - they have all kinds of hacks in place for IE, sending a separate CSS stylesheet
to it to deal with quirks and so on.
In my own AJAX work, I quickly discovered that while it was really easy
to get the component to work well on Firefox, getting it to work on
IE was harder. Getting it to work on both was harder still. And then
throw in the fact that Safari has its own quirks. Even Mozilla 1.1 and
writing. And when you add a workaround for one you've gotta make sure
it doesn't break the others. On top of that, even if Firefox has a decent
in IE (or Opera, or Safari, or Konqueror, ...).
You also need to be well versed in browser bugs such that you for example
know to avoid the memory leak issues you can run into with IE.
THIS is what I meant by "AJAX is hard". No, asynchronous is not hard.
XML is not hard. CSS is not hard. It's cross-browser stable, performant
So why am I using past tense - "AJAX was hard" as opposed to "AJAX is hard" ?
are emerging. These have done most of the hard work for you. I still strongly
believe that a library approach to AJAX is not enough - you really want components
that do all the AJAX plumbing for you as well. I'll have more to say about that soon.