To give you a quick overview on my background with this: I write a lot of (unpublished) AIR apps for both my work and home projects because I am one of its ideal customers:
- I use Macs, PCs, and sometimes Linux, all in the same day, almost every day
- I need to write cross platform desktop applications, but I only
know web development related programming languages
- I need my applications to have full filesystem access as well as
web access so I can automate repetitive work
When I first heard of Titanium, my initial thought was: "Pfft, I can already do that with AIR and have been since I started using the beta a year or so ago." AIR serves my needs well and so I let Titanium slip from my mind.
However, Jeff's presentation at JSConf2009 very quickly awakened my curiosity about Titanium. His first demonstration was a modified version of pro-web-dev and blogger Jonathan Snook's demo on imitating Tweetie in Titanium. Titanium, being built on a recent version of Webkit, was able to make use of CSS3 transitions that very closely copied Core Animation techniques from OS X. The end result was simply astonishing. The Titanium mimic of Tweetie was so close visually to the original that, with a little work, it could be a 99% clone.
The Titanium Developer Application is also a great community tool because it includes: a tab with links for popular apps built in Titanium, a tab with a built-in connection to the #titanium_app IRC chat room, and a tab for Twitter and FriendFeed posts that mention Titanium. Keep in mind that the Titanium Developer Application was itself written in Titanium, so all of these things should be possible in your own Titanium apps.
Titanium comes with the expected file system access, drag and drop, web connection, and SQLite db access APIs, but throws a trump card on the table with its ability to open processes and applications from the users computer. Jeff quickly went over the ability to use the process API to do something as simple as read the contents of a directory via the command line. I have desperately wanted this ability in AIR because using function recursion to iterate over an entire folder full of files with the File API is MANY, MANY times slower than what the native file system can do via command line.
While system process access may seem like a security risk, keep in mind that anything with the ability to write text files to the file system could potentially make a nasty text-based runtime file named "RUN_ME_FOR_FREE_INTERNETS" and screw the system up as well. The key thing here is that you must exercise caution with any app you download, and the presence of system process access to Titanium is no greater a security risk than downloading any random application written in other languages.
As of this writing, Titanium is only in Preview Release 3 and still has ground to cover before it's a complete platform. I think more options need to be added to the existing APIs, like the ability to pass parameters to opening applications, and perhaps some additional APIs to match the filesystem set already within AIR. The documentation could also benefit from some visual improvement. I would love to see a revised version of the docs presented just like jQuery's API browser and be another tab in the Titanium Developer Application. That would be beyond amazing. It would also be nice to have the ability in Titanium (or AIR) to package a standalone app into a "no need to install" executable file, similar to what Shu-Player does for AIR. Aside from those minor quips, Titanium is off to a smashing start and I must thank Jeff for doing a bang-up job with his presentation. I might not have taken a second look at Titanium until much later and may have missed out on a great platform for many months.
I can't possibly go over all of the awesome things Jeff talked about, but if you want to learn more about Titanium app, take a look at the slides from his JSConf2009 presentation, check out the Tweetie Imitation Demo, or go to the Titanium website, grab the Titanium Developer Application, and try something in the sandbox yourself.
Lastly, the point of this article is not to talk negatively about AIR, but rather to show the strong points of Titanium in comparison, as Jeff presented it. I still think AIR is a great platform and has lots of advantages in its corner as well.
Editors note: this post was delay by my very silly travel schedule. It's still a great read though!