Monday January 23, 2006 I just listened to episode 12 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, and JavaScript. It's the JavaScript which makes AJAX hard. JavaScript itself is easy - the 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 Mozilla 1.4 behaved differently in the kind of JavaScript code I was 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 JavaScript debugger, that doesn't help you when the bug only shows up 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 JavaScript that is hard.
So why am I using past tense - "AJAX was hard" as opposed to "AJAX is hard" ? The reason for that is that a number of great cross-browser JavaScript libraries 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.
(2006-01-23 12:43:00.0) Permalink Comments [3]Andrei Badea, Petr Hrebejk, and Trung Duc Tran have set up their own web site, http://www.nbextras.org, which has one primary feature:
The thinking behind this is that NetBeans itself tries to provide a very coherent and clean user interface, with all the different parts working seamlessly together. However, there's a growing number of useful plugins that may not yet be ready for inclusion into the standard distribution. This site tries to make it easy to share these. And of course the site also provides a blog interface so it's easy to track new additions, and discuss plugins you're using with others. I've seen lots of useful plugins, and use several myself (such as
this,
this,
this, and others)
that I build from source in the NetBeans source tree's contrib CVS module. Here's to hoping these will all be provided in binary form on the nbextras site soon. (Yeah I know, it's a volunteer effort, perhaps I should upload them myself!)
Go check it out, and contribute in any way you can - with your own plugin modules, or with useful feedback on what's there.
(2006-01-23 09:57:50.0) PermalinkIt's been nearly two weeks since my last entry. I do apologize; I try to write something at least weekly, but the last month has been very crazy in my personal life. My son had surgery last week (which thankfully went well), and I've had some other very stressful things going on as well, but it's mostly resolved now and I can get back to thinking about work and coding!
(2006-01-23 09:41:34.0) Permalink