Since the release of the iPhone in 2008, the mobile software industry has exploded with growth and opportunities for developers and entrepreneurs to build  an application and be able to make money from their creations. Fast forward to 2012, and it is now easier than ever to start creating these apps and to get into the App Markets. Recently, new development tools which allow you to write code for your app once and build out to many different devices have been released into the market.

For many, this has meant a sharp decrease in development costs for individuals and businesses looking to get into the market. However, these tools come with serious drawbacks and should not be used when looking to develop mobile applications

Limited Capabilities

For the most part, these tools work in one of two ways. The first method is simply allowing the developer to write the code in a language like HTML, JavaScript and CSS and build that into apps for iPhone, Android, BlackBerry and more. The major disadvantage to this is the fact that this “app” is simply “wrapped” in a browser control in the final build of your application. This simply means that it works within a browser and thus does not take full advantage of the speed and power that the mobile device has to offer. This is how the popular PhoneGap tool works.

The other method is similar in that it allows a developer to write code in a common web language that they already know, i.e; JavaScript. However, it differs by actually taking the JavaScript code and constructing native Objective C or Java based from it. This is certainly a step up from PhoneGap, but again has some disadvantages. First, you can’t take advantage of multi-threading in your application. Essentially, this would mean that your application can perform tasks in the background while it performs other tasks. An example would be a loading screen. You would have the user seeing a loading screen while another thread would load of the data that they would eventually use. Secondly, and related to the first point, you can run into some serious memory leaks if you’re not careful as to how your application allocates memory. An example of this method would be Titanium by Appcelerator.

Sharp Decrease in Speed

For applications developed in tools that work like PhoneGap, your application will run more slowly since it’s actually utilizing the phone’s browser to function within. This can be a dealbreaker in the App Stores since there are so many available to choose from and users’ patience for a slowly running or buggy apps is practically non-existent.

Random Crashes and Bugs

Actually, that’s a little misleading. From the user’s perspective, your app may appear to be crashing randomly. However, what’s actually happening is that the phone’s operating system is pulling the plug on your app. The reason for this is that your mobile app is consuming too much memory, and the operating system won’t allow that. This is something you must be acutely aware of when developing or having your applications developed with third party tools.

As mentioned in my first point, tools like Appcelerator’s Titanium use JavaScript to allow you write your applications. But as previously mentioned, JavaScript doesn’t support true multi-threading and you can’t explicitly manage memory. So what ends up happening is that when you navigate to a different screen in your application and it creates all of those objects in memory, they’re probably not running in the same thread as the other parts of your app. So these will just sit around in your phone’s memory and not be released accordingly.

To be fair, there are ways around this. However, these can be complex and are for the most part “hacks”.

Ultimately, the best tool for the job depends on the type of mobile application that you need to be developed. And, in some situations, the cost of developing an app is lower when using these tools. I however believe that you can still develop natively for each device and still keep costs low. It is therefore hard for me to recommend developing with these tools, or if you are an entrepreneur looking to get your app built by a developer, I recommend specifically asking the developer to build your app natively. You will pay a more upfront, but this will save you dividends down the road.