An Introduction to App Development

Starting mobile app development can be somewhat daunting at first. If one keeps a few things in mind however, it can be an exciting field. First and foremost, one needs to decide on which platform to target. Many people are surprised to discover that this, and related matters will be the most difficult part of the development process. The creation of a development plan is often a more daunting task than writing the actual code.

The two most popular platforms at the moment are iOS and Android. The user numbers for both tend to shift around quite a bit over time, but in general the numbers tend to be somewhat even. Obviously, a developer will want to target both platforms. This is made quite a bit more difficult by the fact that each uses a different programming language. Android uses a subset of the Java programming language, and iOS uses Objective C. While there are similarities between the two, for the most part this means that one can’t simply share a codebase between an Android and iOS based app.

That said, there is one shared point between the two platforms. HTML5 based applications are usually thought of as something which only exists within a browser. It’s actually possible to take HTML5 based apps, basically embed them within a browser’s functionality and then distribute them as one would any other app. It’s even possible to include hooks to native operating system functions in order to provide a more native experience to the application. However, while this is possible on a technical level there is a significant downside. At the moment, Apple disallows something known as JIT compilation within their embedded browser. The end effect is that an otherwise native and deployed HTML5 based app on iOS will function significantly slower than it would if loaded directly into a browser. For some apps this won’t be much of a concern. Basic calculations and anything which mainly works with text shouldn’t suffer any real world detriments from the lack of JIT compilation. Anything which uses a larger amount of calculations will probably suffer significant slowdown though. If this isn’t an issue, the HTML5 model of development may well be the easiest path to creating a fully platform independent and yet native application for a wide variety of mobile devices.

If one needs full speed for both platforms, things can be more difficult. In these cases it will be necessary to either drop support for one platform or to simply work with two mostly separate codebases. If one does decide to keep a separate branch for each platform, it’s imperative that he or she also adhere to a strict and clearly written design spec. It essentially means writing a clone of one’s own program, so it will be vital to ensure that one has a set procedure of requirements for it.