ATS vs. ADK

I’ve been using both the Android Development Kit with Eclipse and Appcelerator’s Titanium Studio for building mobile apps as described in these posts:

When you start to look at what ATS is doing and some of the examples, its pretty clear that the tool really can’t build apps for ‘droid and iOS from the same code base. Its possible to re-use some bits of your code across platforms, but there’s a price for this. Is it worth it? i’ll use this post to compare the pros vs. cons using the ADK-Eclipse ecosystem to compare.

Architecture, Structure, Design
This is kind of a no-brainer. Android, with its strong Java focus, has a robust OOP based design and structure. It is arguably more difficult to learn, but over the long haul there’s a huge downstream benefit from shared code, libraries,unit testing, etc.. Android apps have a much cleaner and “mandated” structure that is supported by training from Google and the android community. ATS is a bit more “wild west” – this is part of the appeal. With ATS a JavaScript developer or really anyone with JS experience can sit down and hack out some apps – that’s pretty cool and not necessarily a bad thing. If you have very strong expertise you can probably even build libraries and modules much like with Android/Java type stuff – but IMHO if you do this then it becomes “hard” again because you have to follow the structure and libraries…which was part of the allure of ATS in the first place.

ATS does have some advantages in terms of getting started quickly. Generation of graphics for different screen sizes is a huge one. Kind of a pain with ADK (well ok you need Gimp or Photoshop)- just look at the effort to create icons and splash screens with the base ADK. Icons are handled ok – but anything else and you are on your own. I have a theory however – ATS supports splash screen generation because their apps are so huge you really need it for any app 🙂

User Experience
What is user experience? To me this is a non-quantifiable thing – but boils down to: to user like your app and think its useful, easy, and pleasant to look at. Neither tool really has a leg up here. This mostly boils down to graphics design, workflow, and layout of screens. If the app needs to use platform specific things then ADk or iOS is better. As a programmer I defer to the “artists”. 🙂

Development Skills
I think this is more of a question about the skills you have yourself or in your group. Java and JavaScript are pretty pervasive. Staffing up a group – you need to look at your total portfolio and skills to make a call. Doy you really want your JS developers building mobile apps? Maybe – maybe not. Do you mobile apps make sense as ATS apps or do you need the special features of ADK or iOS that are not readily available via ATS.

One-off vs. Broad Platform
I just find the JS perspective of ATS will lead to chaos over time without a lot of oversight. The problem is that oversight is mostly manual – that’s the point of Java/ADK – the OO structure is enforced. At the same time the freedom of ATS can help drive innovation, creativity, etc. Depending on what kind of apps you are building and their expected lifetime ATS or ADK have a role. ATS for shorter lived apps or apps that you don’t need to broadly build on as a suite of tools. ADK for apps where you expect long lifetimes and a broad set of related apps.

There are a lot of nice new features in ADK and the tools that surround it. If you looked at ADK a year ago – look again. the concepts of layouts, the visual layout editors, ease of managing localization, the ability to define and automate layouts across devices, have really improved. Taking this with the vast number of tutorials, samples, and training from both the core Android developer site and other sites leads me back to ADK as the tool for me because:

  • I’m a Java/C++ OOP guy
  • The concept of code once does not really work
  • GUI Designer in ADK is very helpful and reduces round-tripping to the emulator.
  • ADK’s configuration files for layout, the manifest, and localizations is pretty darn cool
  • ADK’s activity model for how the application flow is implemented and the lifecycle for activities is very well explained and backed up in samples supplied in the ADK. ATS has no specified structure for apps, the samples do not match the IDE wizards, and then only reference app I could find seems fairly stale. Comparing this to ADK’s excellent tutorials and references – no brainer for ADK.

Conclusions
There’s a role for both tools – but I think here at House of Beor we will probably focus on ADK for most development. ATS is definitely a compelling tool and we’ll keep an eye and even some hands on this tool. Certainly one thing has proven true over the past years – do not count out JavaScript as a tool. There is a huge, resilient, and powerful group of developers behind this language/platform so stay fresh, current, and aware of it.

Leave a Reply