How to make an app: what dev tools do professional app makers use?

How to make an app: what dev tools do professional app makers use?


Smartphone makers may be rushing out upgrades to their mobile operating systems as quickly as they can write them but developers face different challenges both in keeping up with the changes and maintaining the appropriate tools necessary to keep them up to speed. And while each smartphone vendor offers its own toolsets and assistance for developers comparisons show there are still major differences between the quality and effectiveness of the developer tools currently available.

This fact quickly became evident to Rich Larcombe a web and mobile application developer with Melbourne-based PepperStack. A longtime user of Microsoft’s popular Visual Studio.NET integrated development environment (IDE) Larcombe has become intimately acquainted with the variations between smartphones. He has progressively worked on Android iPhone and most recently BlackBerry versions of the company’s flagship NeatStreets application.

PepperStack’s Rich Larcombe.

Designed to let citizens note and report local issues of concern – for example damaged footpaths graffiti or vandalism – NeatStreets has highlighted many differences between the platforms’ development tools. Android’s software development kit (SDK) is effective enough he says but has an extremely slow smartphone software emulator on which developers can test their apps during development. Apple’s iOS SDK is far more feature-rich with a robust iPhone emulator and rich tools for building apps’ graphical user interfaces (GUIs).

And BlackBerry? “BlackBerry’s tools are a lot worse” says Larcombe. “You haven’t even got a GUI tool and have to build apps by code. BlackBerry has a very nice simulator but they haven’t actually got anything beyond that. And the simulators are Windows-based; since every developer who builds for iPhones has to have a Mac it’s difficult to be a BlackBerry and iPhone developer because you have to have two systems for building on.”

Total Eclipse of the apps
Although it’s likely to be market opportunities rather than development tools that will ultimately drive developers’ initial choice of platforms many developers are finding that the ease of use of development tools is a major factor in their ability to easily port applications between operating systems – a key consideration as developers look for new channels by which to expand their market footprint. If moving an app to a new platform is relatively easy it may be more appealing to do so – especially for novice developers who are cutting their teeth on the whole idea of mobile development.

Apple’s XCode IDE is the only choice for developers building for iOS and Windows’ Visual Studio is the only option for building for Windows Phone 7. However the Java-based structure of the other dominant platforms – Research In Motion’s BlackBerry OS Google’s Android and the soon-to-be-defunct Nokia’s Symbian^3 – has made them somewhat easier to move between at least as far as tools are concerned.

Eclipse.

When building in the Java world many developers are choosing Eclipse a free and open-source IDE that has gained significant momentum for its easy access cross-platform ports and third-party support that has seen the development of more than 1000 Eclipse plug-ins that give developers additional tools for collaborative development GUI building and more.

Eclipse’s open framework has inspired a wealth of additional development tools that address some of the specific needs of smartphone developers. For example the iSpectrum add-on targets development and debugging of iPhone applications within Eclipse: write your app in Java using calls to iPhone APIs and iSpectrum says it will translate the app to iPhone-mandatory Objective C that can be fed to the iOS SDK. And Motorola’s Eclipse-based MOTODEV Studio for Android bundles a range of development tools including handset emulation that includes optimised features for simulating apps on smartphones like Motorola’s Android-based Droid Cliq and Devour handsets. Bundled features include an application validator code snippets application creation wizards database management and other tools.

Even with a commitment to Eclipse and the extensibility of tools like RIM’s BlackBerry Java Plug-In for Eclipse Larcombe says the PepperStack team has had to work to plug many of the holes in RIM’s native BlackBerry tool set – including addressing issues such as the challenges posed by major differences between BlackBerry OS 4.0 5.0 and the new 6.0 about which Larcombe is quite bullish. But it’s a labour-intensive process: it has for example been necessary to rework the app for BlackBerrys that have the traditional keyboard-and-small-screen design and newer touchscreen models.

“We build the file and send it through to the simulator and it’s good but it’s detached from the Eclipse IDE” Larcombe explains. “You can do more with the emulator than you can with the emulators for the iPhone and Android but you don’t have the overview aspect and have to drive everything from your code. You almost have to write different versions of your code for different BlackBerry phones. It’s all a bit less user-friendly for beginners; the harder it is to build apps the less likely users are to accept it.”

Easier development
For seasoned developers the shift between IDEs and development languages may just be shrugged off as an occupational hazard. But in terms of the market skills base it presents a very real challenge: university students typically come out with Java and/or iPhone skills but with a strong interest in Android’s openness it’s likely they will end up writing for either Apple’s or Google’s platforms. This leaves rivals at a disadvantage that’s hardly aided by obscure or badly-realised development tools.

Google for one has actively recognised the importance of building a base of developers and has recently taken the significant step of releasing App Inventor (see our story here) a substantially different type of IDE that’s designed to let non-programmers build Android applications.


App Inventor.

App Inventor is based on the Open Blocks Java library which allows the creation of programming languages that use ‘building blocks’ that are stacked to model the flow of an application. Open Blocks is closely tied to MIT and Scratch an interactive building-blocks language that has been successfully used to teach programming concepts to school children.

New developers will likely find this approach less of a logical leap than moving into the full-blown feature set of a rich IDE. Furthermore by building in blocks that access specific phone features Google has been able to add a layer of abstraction that masks the complexity of its operating system (see our first attempt documented overleaf). Whether this spurs a new generation of Android developers is yet to be seen but the potential is there – and could theoretically provide some incentive for Apple Microsoft and other vendors to take a similar approach.

There may also be some reprieve as app dreamers seek out alternative development methods; Adobe has famously explored this with its Packager for iPhone which packages Flash applications in an iOS-friendly wrapper that can be rolled out for iPhone iPod touch and iPad users. Adobe and Apple have locked horns over Packager numerous times in the past year but Apple’s recent reversal of its opposition opens up a new type of cross-platform development tool for keen mobile developers. Importantly Adobe’s AIR runtime environment also runs on Android RIM’s BlackBerry Tablet OS and iOS – providing additional options for developers who want to build once and run their app on many platforms.

Another option for developers is to build in HTML 5 which is increasingly becoming the standard for interactive web apps that run on a variety of devices. However HTML 5 can’t replicate all of a device’s functionality and may expose more of a developer’s code than they prefer so many developers looking for cross-platform solutions are turning to third-party tools that ease the creation of multi-platform smartphone apps.

Tammy Butow who along with friends Jessica Ukotic and Amanda Koo is building musical band-related apps via their MobileMosh.com venture got the idea of building for mobile devices after writing eight web apps for NSW’s recent AppMyState and Apps4NSW competitions and noticing that mobile apps were extremely popular. The team turned to the cross-platform Appcelerator Titanium tool to help them easily build apps for iPhone and Android platforms – and under Appcelerator’s roadmap eventually to BlackBerry OS – without having to maintain two different skill sets.

Android’s SDK.

“We wanted to make it for both devices and make it as quickly as possible; rapid prototyping is important if you’re doing your app as a side project as we are” she says. “We looked at Objective C and bought a book and did a bunch of tutorials. But there’s hardly any information out there about how to do that and only a few people doing how-to videos. Even though we ended up making a few things we realised it was going to be easier to use Titanium so we could get the look and feel to match our designer’s requirements.”

Appcelerator allows the creation of apps in JavaScript an approach that was easy given Butow’s past experience doing web development; over 300 Appcelerator APIs (documented in the companion Kitchen Sink add-on) are mapped to the appropriate Java or Objective C functions in the background.

More than just a pretty face
While the approach may have sped delivery of MobileMosh onto customers’ smartphones it didn’t obviate the need to consider design elements such as the positioning of buttons or the behaviour of screen elements; these elements still need to be addressed through experimentation testing and revision.

Indeed a broad range of developers identified the discrepancies in user-interface design as one of the biggest ongoing problems with today’s smartphone tools. Many developers still hold Apple’s Interface Builder a component of Xcode as the one to beat with Android’s XML-based user interface screens lauded by some for their flexibility and criticised by others for its inadequacy when compared to Apple’s tools. Others like the way Microsoft has integrated its Visual Studio IDE with its Expression Blend design app which allows designers to create the user interface to which developers link application logic within a heavily integrated platform.

Other platforms offer even less functionality with some of the gap closed by third-party tools such as Squish an automated Java GUI testing tool designed to ease the creation and testing of GUIs for environments including Nokia’s Qt smartphone IDE Native Windows and Mac OS X and standards-based web/DOM/HTML/AJAX content. And the new ‘Gingerbread’ release of Android incorporates a substantially improved UI Builder tool designed to improve the capabilities available to developers and previously only available using third-party tools like DroidDraw.

Given the commercial value of slick-looking apps the importance of smoothly integrated easy-to-use interface tools cannot be overstated: although application logic might not vary dramatically between platforms the UI on top of that logic can make all the difference.

This could mean excellent things for efforts like cross-platform gaming engine Unity 3D and Epic Games’ Unreal Engine which powers the much-hyped game Infinity Blade and is accessible to smartphone developers as the Unreal Development Kit (UDK). Unity 3D already supports iPhone and Android and UDK is rumoured to be coming to Android.

Having access to such tools will open up new possibilities for the likes of Luke Kellett an Android developer and founder of Ruma Apps whose Ninja Splat game has seen tens of thousands of downloads. The game has given Kellett who is a professional .NET developer in his day job and writes his apps using Eclipse on a Ubuntu Linux desktop a taste for more complex apps.

Ruma Apps’ Ninja Splat.

“Eclipse isn’t as mature as some of the paid apps but it’s better than a straight text editor and has a lot of the things that most devs need” says Kellett who also points out the slow performance of the Android simulator but notes that it’s easy to push an app-in-progress to an Android phone for real-world testing.

“We’re looking at standard development engines that are cross-platform” he adds. “Unity 3D and Unreal are based around 3D engines and physics models which make them very good for doing all the nitty gritty stuff and really allow you to focus on the gameplay and on getting everything working. At the end of the day it’s not just about the platform; it’s about making something that people are going to use.”