Without entering into the controversy on “native vs cross-platform”, you cannot not be interested in building mobile apps with a true native user experience, deploying them to multiple operating systems and managing them from a single code base and a single investment. I am, and I used the Titanium Mobile SDK for a few months working on a few prototype ideas and for a real project (Infostud Mobile).
Appcelerator’s Titanium actually “accelerate” the application development because allows you to create in a very flexible way, with a few lines of code and in a few hours what normally would require more attention and a few days. Regardless of the choice of developing by using native or cross-platform toolkits, you could always use Titanium to make a prototype to evaluate the user’s interaction with the UI due to its facilitation for rapid development.
Titanium mainly helps the development when the app interacts with a web service since the application itself is developed by using web technologies. This had a great impact not only on simplifying the development process, but also on saving the overhead needed to elaborate the information exchanged through the remote communication.
It’s a language many developers know and enables more developers coming from a web development background to get into mobile app development. Most importantly Titanium reflects an intrinsic characteristic of prototype-based scripting languages that is the combination of flexibility and structure.
This is not an automatic, guaranteed feature. You cannot say something like “write once, run on iOS and Android” (to paraphrase provocatively the well-know Java slogan). It’s therefore necessary to base the development of one of the two platforms and then implement the necessary measures to make the app also runs on the other one. But the advantages are obvious – you don’t have to learn two separate languages and you can reach a very high level of code reusability.
Appcelerator has built up a community of 200,000+ developers who have used its cross-platform development tool to build more than 35,000 apps; has launched Open Mobile Marketplace for buying, selling and sharing modules, templates, design elements, extensions for web services; has attracted important investments ($15 million in funding for its Series C round) and has recently acquired Cocoafish to implement cloud services and functionality in its platform. Remarkable. Appcelerator is creating a great platform for a growing community and its best days are ahead of it.
Increasing complexity. The development complexities (and costs) rise more than proportionally to application complexity increases. The more complex your applications become, the more often you’ll have to deal with, on the one hand technical issues (random crashes, weird behaviors, annoying bugs, etc.), on the other hand a greater effort (code organization, MVC separation, multi-device support, multi-platform support, code readability, etc.).
Appcelerator provides StoreKit, a module to enable In-App Purchase to Apple’s App Store, but it’s a pain. Buggy, poorly documented and it seems to work only partially. Too unstable for production use. Having to renounce the freemium pricing model (apps that are free to download, but require an in-app purchase to be expanded) is not just a minor inconvenience since 72% of total App Store revenue comes from apps featuring in-app purchases.
At first there was only Titanium Developer but since last June there is Titanium Studio, an Eclipse-based IDE built on a modified version of Aptana that allows you to manage projects, test your mobile apps in the simulator or on device and automate app packaging. First of all, I sincerely hate Eclipse, yeah, Eclipse is free and the best open source IDE there is, but offers a very poor IDE experience. Most importantly Titanium Studio can go “crazy”, encounter weird glitches, stop printing console messages, but the worst thing is when the build process start to ignore changes. You have to continually clean your project every time you make changes or restart with a brand new project. A productivity tool that is uncomfortable and unstable is not a productivity tool and a development tool that is unproductive is not a development tool.
All that glitters is not gold. At beginning you’ll love the well-defined Titanium API and you will probably love it even more every time you discover a simple property to enable behaviors that would require several lines of code on Xcode. But sooner or later you will face strange bugs and limitations. For example, if you want to apply a cell background gradient to a grouped table (a very common and easy task with Objective-C) you get that the grouped table becomes plain and the gradient color makes the table slow when scrolling, and you will have to use images… So at first you will save a lot of time but as more complex the project grows you’ll lose the saved time in fixing and workarounds.
Obviously you can have the most smooth, fast and comfortable user experience possible only with apps developed with a native development environment. This is an obvious observation, but which cannot be omitted. Keep in mind that a Titanium application is the result of an automatic conversion process from web code to native code. Animations are noticeably laggy and apps are not responsive when return from the background. This is particularly evident with Android devices, less evident with iOS devices (especially those with A5 processor).
Just as in everything else, in every design approach, in every technological decision, there are advantages and disadvantages. During these months I have learned to know both and understand the contexts in which it makes sense to bet on Titanium. For simple, small projects Titanium is a good choice but if you’re looking forward to use it on robust apps choose native development environments. I also suggest Titanium as an excellent tool for rapid prototyping to turn within hours a mock-up into a prototype in order to evaluate the consumer interest or conduct usability tests.
However, the pros and cons must be evaluated on a case by case basis because their weight depends on the specific project that you are considering. Keys aspects to take into account are: benefits, costs, budget, development complexity, how necessary is the multi-platform support, how strategic is the project, how important is performance. You have to weigh each pro/con based on your specific priorities to determine what fits your needs the best. Appcelerator’s Titanium is a great option that should always be considered when you start a new project.