Now that mobile devices have taken us by storm, most enterprise developers will, sooner or later, have to develop a mobile application of some kind. Serious consideration must be given to find the best environment for mobile development. This is challenging given that the mobile marketplace is so fragmented.
Currently, iOS, Android, and Windows Phone are the dominant operating systems in the market. Most developers want to deploy their apps on all these devices; nothing is gained by choosing only one. However, this fragmentation presents many obstacles to development: (1) Several possible platforms that can be used for development; (2) at least three IDEs for three operating systems; (3) multiple versions of Android; (4) varying access to native hardware, depending on which development environment you choose.
Doesn’t it make you long for the days when enterprise development just meant targeting Windows? This is new ground for developers, especially those of us working on the .NET platform.
Right now, as a developer, you basically have three options in front of you: Mobile Web sites, native applications, or “hybrid” applications. The pros and cons of each have to be weighed. Making the wrong choice today could mean a lot of backpedaling tomorrow.
Mobile websites powered by HTML 5 are probably the most popular option for mobile development right now. HTML 5 itself has gotten a great deal of press due to the fact that the current versions of JavaScript, HTML, and CSS have created richer Web-based applications than was achievable in the past without a plugin. Choosing this route makes sense because the Web browsers on all mobile devices are good, and relatively standards-adherent, you can be very confident that your Web-based app will render the same across multiple devices.
With mobile websites, you also work in a single, simplified structure often backed by great server-side tooling such as the ASP.NET MVC platform. What you miss, however, is extended access to native hardware. To get that, you have to choose native development.
Native development is the best way to create an app that can access and utilize native hardware. It also offers a seamless user experience. What you lose by choosing the native route is time. Deploying to each device requires your team be skilled in Objective C, Java, and C# or VB.NET. Each device requires a separate code base. That’s a great deal of development time and training spent to ensure your app reaches all devices.
Outside of mobile Web development and native development, an alternate option that has recently gained a lot of ground is the so-called “hybrid” option. Hybrid applications host a native Web browser control inside a native shell. They then display either local or remotely served Web pages.
For most developers, this solution provides the best of all worlds. It’s a good balance between the standardization of HTML 5 on the client side, the access to hardware of a native app, and the control, power, and code reuse provided by a server platform. I recently conducted a webinar on how to develop a hybrid app from scratch using an ASP.NET MVC template. Please check it out. And keep an eye on our website for updates on the bridging wrapper we’re developing for our ASP.NET MVC controls.