Yesterday I spent sime time reading and catching up with potential technologies for desktop software that links to a web 2.0 service that we are building – or for that matter any web service. Having desktop tools to complement usability of web service and/or to offer offline support for example for data input and/or manipulation is more that helpfull and beneficial, not to mention addition of applications on mobile platforms.

Two technologies that I spent some time studying were Trolltech’s Qt and Adobe’s Air – two very different kind of beasts that could be used to fulfill similar needs.

Adobe Air in combination with Adobe Flex, Flash, Actioscript, Javascript and HTML is an interesting option in cases where company has already made significant investments into web technologies and Adobe’s tools and workflow. However reading Flex 3 in Action and Adobe Air in Action I felt little uneasy as it was a constant stream of unfamiliar – though reasonable sounding – technologies. Without a prior investment to Flash and ActionScript learning and taking advantage of Flex and Air will be quite a feat eventhough Flex’s declarative programming model and ActionScript as a language seem a quite nice combination. On a positive side there is the possibility to use these acquired skills and components also on website’s online userinterfaces. A significant bonus in Adobe Air is also simple installation through webbrowser for applications as long as Adobe Air runtime environment has been already installed for the user.

Trolltech’s Qt on the other hand is already an old and well proven framework for multiple platforms, including also bindings for numerous languages – most importantly C++, Java and Python. Previously Qt was only usable for established commercial projects due to it’s high licencing costs or to open source projects that could use the library free with GPL licence. Due to Nokia’s announcements of changing Qt licence to LGPL there has been a huge interest lately for Qt and that is also the main reason for my interest to look at the framework. Based on examples delivered with the distribution QtJambi – Java bindings for Qt – seemed reasonably easy to use and well featured with components and features enough to build almost anything. Ability to use same code and libraries as in service code in backend, having very well tested and well known process and model for development — and most importantly well tested UI components is a huge plus. There is also no doubt that native components of QtJambi are blazingly fast and even have direct access to target machine’s graphics hardware.

Packaging and distributing applications made with QtJambi however is little bit more complicated compared to Adobe Air. You have to package the software for each platform and create installers with separate tools, most likely an commercial installer creator that hopefully also includes an ability to include also JRE into the installation. Open source IzPack ( http://izpack.org/ ) seems otherwise good, but does not include the possibility to install java runtime if that does already exist in the target system. With a quick google search I did find some installers that do that also, and from a small selection of potential and expensive tools I found one that seems not too expensive and also seems to have required features ( http://www.advancedinstaller.com/feats-list.html ).

So without writing any code, what is the verdict and with which technology will I do my first tests?

Should I say both?

Adobe Air is clear winner when the application will be a simple addition to a web 2.0 style service, providing possibly drag and drop features and access to local filesystem. Use existing javascript or actionscript skills – and don’t worry so much about producing top notch desktop software as it is just an extension to a website. It is a new technology that is poised to have it’s own share of funky bugs, features and idiocies – but there is a good chance that ease of use and already existing features make you more productive than you spend time debugging weird problems and learning Adobe Air in the first place. In similar fashion same skills with javascipt could be used then again in mobile development for example with Nokia WRT ( http://www.forum.nokia.com/Resources_and_Information/Explore/Web_Technologies/Web_Runtime/ ) or iPhone. Naturally you can’t use or access all the features of platforms that you are working on, but atleast you are quick to market with something.

Qt on the other hand is the real thing – library used in Google Earth and in numerous other ’true’ applications. And as Qt has also WebKit integrated into it, there is a good chance to be able to use both the cool and wicked javascript / ajax skills as well as mad java or c++ programming with great access to resources on target system. As I read about the examples of WebKit integration from trolltech blogs ( http://labs.trolltech.com/blogs/category/labs/internet/webkit/ ) I almost wet my pants, it was so cool! Rendering webpages to thumbnails, running javascript code on the page to extract data from DOM and doing the shenaningans! You dream it and you can build it – or atleast most of it.

From business perspective Adobe Air can be a really good choise as in the best case you might get a some web developer to do the application for a beer and a burger – though I doubt it. But for those of use who have invested greatly in Adobe technologies and feel at home with Flex and Javascript Adobe Air should be a breeze to work with. But if – for any reason – you are aiming to do anything more complicated and want to have a foundation that you can count on, I would really suggest to give QT a try. I know I will.

Yksi vastaus artikkeliin: Qt versus Adobe Air

In the lab, one of the projects was using Flex as a way of getting advanced function into browsers, as opposed to falling into the standard Eclipse frameworks. Being at the leading edge can be frustrating, to say the least. I was following Tom at http://twitter.com/tvf , but I haven’t seen much about Flex for some weeks, now.