Mobile apps have never been hotter than they are today. When the iPhone was released in 2007, your company may have had 1 or 2 apps. These would be done as 1-off projects, all developed separately and then released to their respective app stores. Today, companies are developing 10s and even hundreds of apps and they’ve started to extend not only to customers, but to vendors and internal employees as well. Rapid development of powerful, connected, and visually stunning mobile apps has never been more necessary than it is today.
Previously, you might have had a team writing iOS apps and a separate team writing for Android. These were separate skillsets with separate knowledge bases and tools so we treated them as such. Today that is no longer the case. The concept of cross-platform mobile development is here, and like any hot new trend in the IT world, there are a multitude of approaches to it. Each one has its pros and cons. Among these is a framework from Xamarin. Previously, this library was licensed commercially at no small cost. However, with the acquisition by Microsoft and its subsequent open-sourcing, this is no longer a barrier. We here at Anexinet have evaluated them all and feel that Xamarin provides the best possible experience with the fewest concessions. I want to give an overview of the pros and cons of Xamarin and how it compares to other cross platform methodologies and hopefully you will see why we are investing heavily into Xamarin development at Anexinet.
HTML5 Hybrid Apps
One of the original approaches to cross platform mobile development came in the form of HTML based apps. A multitude of approaches exist here with Apache Cordova being one of the leaders. However, there are also commercial offerings in the form of the Sencha Touch framework and the commercial/freemium Telerik Platform. In each case, your app is really just a series of web pages running inside a container which acts as a sort of web browser. Each framework in this category have methods to access features of your phone like the camera or motion sensors, however generally these are a bit limited and when you find yourself needing something they don’t expose, you are out of luck. Also, because the look and feel of your app is controlled via CSS style sheets, HTML based mobile apps are generally not perfect matches to the look and feel of the platform they are deployed on. They tend to also be a bit outdated, or sometimes don’t react to new form factors or screen resolutions. In general, users can look at one of these and tell that something isn’t quite right. If that person is a developer, they will know it is an HTML based app.
Another issue with this approach is the performance. JavaScript engines have improved drastically over time in terms of the features they support and the performance they offer. However, no matter how fast they are, nothing will ever beat the speed and responsiveness of a natively developed and compiled application.
Finally, you have to consider the skillsets of developers that are available to you. If you already have developer resources on staff, tacking HTML/CSS/JavaScript into the mix can just slow things down. Developers who are used to native mobile development or even desktop development will take time to ramp up on HTML5 and this method of mobile development. So, if you plan on doing this yourself rather than hiring Anexinet to handle this for you, you will have to take this into account as well.
Going “Native”
It might be worth mentioning what we mean by “native” mobile apps. Each mobile platform offers a toolchain and set of APIs which offer developers the tools they need to develop for that platform. For instance, Apple offers the Xcode environment and the iOS SDK which gives the developer everything they need to create great mobile apps for iOS. Unfortunately, this means that you have to write a separate app coming from a separate code base for every platform you want to support. It also means that you need to have developers with vastly different skillsets. For iOS, we write applications in Swift or Objective-C. For Android, we are writing them in Java. Both platforms have vastly different approaches to UI design or patterns that are used in their API. If you go the full native approach, you need to have developers who can do both. And in a year, when management wants to add support for the desktop, or Windows Phone, or some other vastly different platform, you have to start from scratch.
However, native development has a lot of upsides. First is the performance. No matter how fast HTML and JavaScript get, they will never beat the speed of a natively compiled application. Second, is first class access to device features and APIs. When a new version of the mobile operating system is released, the APIs which take advantage of any new features are immediately available. Cross-platform solutions typically need to then react to these new APIs, and add features to their platform so developers experience a lag between an OS being released and being able to use those new features. Native development clearly has some nice advantages, but it requires separate applications to be written for each platform. And that requires a development team who can handle that.
Having Your Cake and Eating It Too
You might be left wondering, “How can I cut costs and minimize my investment while still getting awesome, native apps?” Well, here at Anexinet, we feel Xamarin is the solution that gives you the most value. Xamarin sits comfortably in between in between hybrid and native applications. How do they do this? They leverage the cross-platform .Net implementation known as Mono to create APIs that mimic the native SDKs provided by Apple and Google. But, underneath, the Xamarin APIs are actually implemented using the same SDKs that developers use to create great native apps. You can use Xamarin.iOS or Xamarin.Android to leverage your .Net developers to create 100% native mobile apps. And, since it is a commercial (and now free) product, you have the peace of mind knowing that they guarantee day 1 support for new features provided by those vendors. They then take things further and provide Xamarin Forms. Forms allows developers to create apps with a large amount of shared code while still creating custom native components when you need it. We’ll talk more about how this works in future posts, but for now suffice it to say that with Xamarin you really do get the best of both worlds. Native performance, appearance, and API availability with the rapid development and shared code that you normally only get when developing hybrid apps. And now that Microsoft has purchased Xamarin, the product is now free for all of us to develop with. Get out there and make some great native apps with .Net!
About Anexinet
Anexinet is a leading professional consulting and services company, providing a broad range of services and solutions around digital disruption, analytics (and big data), and hybrid and private cloud strategies. Anexinet brings insight into how technology will impact how business decisions will be made and how our clients interact with their customers in the future.
Chris Tartamella, [email protected]