AJAX Reality Check

Recent announcements like that the iPhone will allow 3rd party developers develop “applications” for it using “modern web 2.0 technologies” and Adobe’s Apolle, err, AIR that brings these “modern web 2.0 technologies” to the desktop, made me wonder. Does anybody realize where we came from and that these “web 2.0 technologies” aren’t great at all, but just the best we could do — in the browser?

Let’s go back a few years. Developing web application was ok. You had HTML, CSS and if you were very fancy, a bit of Javascript. You had some form that the user could fill in and every link you clicked and button you pushed brought back a new page. It was slow and it was a bad user experience. But still, it was all running through a web browser. Everybody has a web browser and it worked no matter what operating system you were running on. It was the best we had.

Then some companies, most notably Google, came out with Gmail. They used this Javascript thing called XmlHttpRequest, which could do HTTP requests in the background. Using this approach Google with lots of rocket science managed to create something that was getting pretty close to a user experience similar to a regular desktop mailing application. This technique was later dubbed AJAX (Asynchronous Javascript And XML, or something). Creating such application was difficult at first, but hey, people chose to build their applications in the browser so you have to do as well as you can. Now a few years later there’s loads of javascript libraries to make building AJAX applications a bit easier. But still you need a lot of knowledge of HTML, CSS, Javascript and maybe Flash and SVG and other oddballs like Comet. And what does it give you? An experience more and more approaching a desktop app experience.

More and more approaching, but never exceeding or even matching.

Let’s just face it, the enormous amounts of time that it takes now to build an interface close to a desktop-like experience could have been done in a fraction of the time using an actual, proper client application framework like Java, .NET, GTK+, Cocoa or Visual Basic. And then you could also use cool features like 3D rendering and it would all be a whole lot faster too.

But people seem to have forgotten that things like client-side Java, .NET, Cocoa, GTK+ and Visual Basic even exist and how you could often drag and drop your interfaces. The horrible AJAX development experience has become the new cool, hip, modern web 2.0 technology. An experience that “we” apparently want everywhere now. Adobe is happy to bring it to the desktop. Thanks Adobe!

And now Steve Jobs wants to bring it to the phone. Thanks Steve! “Yeah, we have this new amazing modern way of developing applications for your phone, it’s called a website!” Awesome. “It integrates great with all the iPhone features. For example you can create a “call:0123223222” link to call somebody!” Great. Except you always need an internet connection to use it, it’s slow, you can’t create an icon for it in the menu. And… oh yeah… it’s a frickin’ website! Apparently this was done for “security reasons”. What about Java, Steve? Every frickin’ phone supports Java. It all runs in a sandbox, it’s all secure. It even runs without an internet connection and it’s responsive (yes, that has become a feature in the web 2.0 day and age). Why no Java on the iPhone, explain it to me.

Listen, I’m all for web applications in general. And I really believed in this AJAX thing, but maybe we really have to think again about this. I really wonder why Java Applets never worked. They were perfect in concept. But I guess they came too early and were too slow back then. Maybe we really need an Adobe Flex or a Microsoft Silverlight to really bring richness to the browser. AJAX will only bring us so far and admit it: Javascript, CSS and HTML suck. You don’t want to create user interface in that. At least, I don’t.