I can vividly remember the early days of web development and my first encounter with JavaScript. It seemed so foreign and obtuse to me, like it didn’t belong. But being the age of Dynamic HTML one had to become familiar with JavaScript to make websites more memorable and increase their traffic. Sure we all hated JavaScript but we forced ourselves to use it cause there was nothing else.
In the present day now, most people cant imagine NOT having JavaScript and it has steadily found its way into so many other aspects of computing outside the web, such as the NoSQL movement. JSON has become one of the most common data transport mechanisms in modern Ajax applications. Much this enhancement to its popularity come thanks to the variety of wrappers that have been developed over the years which have abstracted away the many headaches developers faced when working with JavaScript. Notable among these many frameworks is jQuery, which single handily changed the game and the way we view JavaScript.
Most people who know know that my thoughts on mobile are that native app development is a dead end. While you cant ignore the various idioms the various OS’ provide, the driving force in our industry has always been businesses and how much they are willing to pay to allow to develop and thus continue to refine our craft. As the popularity of the smartphone continues to skyrocket companies are, more and more, looking at mobile and the next frontier. Whereas before it seemed inconceivable for a business not to have a website (in fact some business had ONLY a website), soon it will be inconceivable for a company NOT to have a mobile presence.
There are so many similarities between the early web transition and what we are seeing now, but there are also some very distinct differences. Before the Internet companies would develop applications and deploy them on the client side only. This was a headache due to the maintenance of the application as well as the incompatibilities that cropped up when a system wasn’t setup exactly like another. The explosion of popularity that marked the birth of the modern World Wide Web ushered in an era where companies could now deploy web application to a single web server (or a farm) and allow employees to use these application without fear of incompatibilities and decreased maintenance cost.
But all was not well, this popularity caused the onset of the First Browser Wars, chiefly between Microsoft and Netscape. The war came to an end with Microsoft using its tremendous advantage in market share to defeat Netscape. Thing stayed pretty much the same on the web until 2007 when the Apple iPhone hit the scene and brought about the notion of a smartphone as a consumer device. One of the biggest changes in the smartphone paradigm was the notion of customization, mainly through “apps”. The iPhone literally caused an explosion and before anyone knew it we were ushered into the era of the smartphone and the “mobile web”.
In the early years, the iPhone was unchallenged and because of this its market shared swelled tremendously. This continued until the release of Android by Google. Google operating from a different mindset than Apple used the openness and availability of its platform to gain huge market share from other competitors eventually surpassing Apple in global market share in 2011. Along the way other companies have put out new versions of their mobile OSes in attempt to gain back lost market share, chiefly among them: Palm, Microsoft, and RIM (Blackberry).
I believe we are on the precipice of a Second Browser War, this time a battle for the mobile web. The former champion, Microsoft, has lost a tremendous amount of browser share due to a long period of stagnation. New competitors like Apple (Safari) and Google (Chrome) and a resurrected Netscape (Mozilla Firefox) have certainly caused Internet Explorer to lose significant ground. Furthermore, Microsoft can, at this point, hardly claim to even be a legitimate competitor in the battle for smartphone market share, that is largely between Apple and Google.
In addition, for the same reason companies moved their application off client machines and out onto the web, so will it be that they will forgo native app development in favor of mobile web applications for the majority of business applications. This does not mean native application development will be dead on mobile devices, but it will be relegated to games and other apps that MUST take advantage of the hardware.
One of the counter arguments that I have heard to this point is that more and more apps are relying on the camera or other common pieces of hardware on a cellular device. At this point, ONLY native apps can truly take advantage of these elements. While this is true NOW, I do not believe it will be true in the long term. HTML5 has not yet been standardized and I don’t doubt that talks are underway to establish a standard way for client side mobile web code to interact with a camera and other hardware. For example, the FCC has already made it mandatory that all smartphone support GPS, mostly for emergency purposes and just about every smartphone in existence has a camera, I think it would be foolish to assume there will NEVER be a way to interact with those elements using a language like JavaScript.
Another counter argument I have heard is mobile web breaks the usability paradigm established by the OS developers (4 buttons on Android, 3 buttons on Windows Phone 7/8). In reality, only Apple’s one button paradigm seems that it would be agnostic to a reliance on the mobile web, though this is not to say these buttons couldn’t be supported via a mobile interface, though that would complicate things for developers.
In the end, the majority of decision in computing are driven by the businesses which engage with computer professionals to have a service fulfilled. In the very near future, companies will begin loudly asking why the same application must be developed for each of the popular platforms. This need is driven by the users who want to use the applications. Businesses must fulfill these needs, but developing the same app over and over just to fulfill a different usage paradigm is stupid and costly. Business will start asking, “why cant we develop the application one time and have everyone use it?”. This will be the central question consultants must answer as the future comes. We have already started seeing this answer manifest itself in tools like PhoneGap and Titanium. HTML5 is being readied with a variety of features to support mobile application development. The question really is, are you ready to be a mobile web developer?
Next article – Introduction to jQuery Mobile.