HTML and CSS Reference
Although we've touched on some of the factors that impact developers, we should focus more on those that can
impact development. So, let's dig a bit deeper into some of the things that really impact developing apps when
thinking “web v native.”
Language and Platform
HTML5 is becoming the cross-platform development technology of choice. Although not strictly a language,
And if you use one of these, you are highly likely to use all the others, too.
As already mentioned, web apps are available on any device with a web browser that supports the technologies
of that, the percentage of “dumbphones” on the market is dwindling rapidly (and besides, a dumbphone doesn't tend
to offer particularly interesting native apps, either, so they're sort of a moot point).
When developing a web app for mobile or tablet, instead of just desktop, the only added burden is consideration
for the new screen sizes presented by mobile devices. Most common technologies for web design, such as HTML5 and
CSS3, are supported by most mobile devices, meaning that it's likely going to be more difficult to get all the features of
your app running on old versions of Internet Explorer than it will be to get it running on mobile browsers.
A very strong principle in software development is represented by the acronym DRY , which is short for Don't
Repeat Yourself. Consolidating all supported platforms into one central codebase by focusing on building a single
responsive web application is a huge step toward a DRY app.
There are platforms such as PhoneGap 11 and Trigger.io 12 that aim to make a web app into various
platform-specific apps. The very existence of tools such as these is a testament to both the market for native
applications and to the difficulty of learning how to code for different platforms. Microsoft has even created an
application architecture called WinRT, 13 which allows apps to be developed in HTML5, enabling the possibility of
using the same codebase for both native Windows 8 apps and a web app.
If you decide to focus on building native apps, chances are you'll be focusing on Objective-C for iOS devices, Java
for Android, as well as a WinRT supported language for Windows devices. Learning a new programming language is
a great thing, but it does add days, or even weeks, to a development schedule for a developer who doesn't know the
language of choice for a given platform.
If your native app is developed for a platform that is superseded or replaced by another platform, you have no
choice but to rebuild the app for the new system. For example, any apps developed for Symbian are quickly becoming
irrelevant, and any Windows Phone 7 apps can't be upgraded to Windows Phone 8; they have to be rebuilt.
This introduces risk because a native app is heavily affected by the platform for which it is built. If by some freak
occurrence, Apple were to suddenly shut down the App Store, developers would be left with no recourse or quick fix;
they would simply have to start over and build their app for another platform, or call it quits and do something else
Maintaining one native app is probably about the same as maintaining one web app (or even a little easier, depending
on the platform). The maintenance issue comes in when faced with multiplatform apps: one app becomes four if it
needs to work on iOS, Android, BlackBerry, and Windows Phone. Suddenly, most maintenance is multiplied by four,
and that doesn't even consider the strong possibility of a web-based companion tool or web app version of the app.