Ad

Showing posts with label Mobile. Show all posts
Showing posts with label Mobile. Show all posts

Monday, September 23, 2013

The Case of Xamarin – For Cross-Platform Mobile development

The Case of Xamarin – For cross-platform Mobile development

As an enterprise mobile developer, at some point, you would be faced with the decision to choose a cross platform development tool. Remain native and manage its challenges (which are elaborated a bit later) or go hybrid with tools like PhoneGap(Based on open-source Apache Cordova) or go with HTML5 and its related libraries?

As you might have guessed, there is certainly no right or wrong answer. The answer depends on what is the problem you are facing or trying to solve when you started looking at a cross-platform development tool.

Most-often, HTML5 based development or hybrid development tools seem to be advocated as the panacea for all problems faced by native development. So, what are the typical problems that continue to haunt if we were to take the native development route for Enterprise Apps? I specifically say “Enterprise” apps and not gaming apps (since gaming apps most often need not have custom UI per platform)

The problems could be of:
·      Managing a large number of code bases – for Android, iOS, Windows, for smartphones, tablets, mini tablets, TVs, including some variations if you are targeting different countries.
·      Adding new features to the many code bases that exist
·      Fixing bugs in each and every code base
·      Testing all the code bases for each feature enhancement or bug fix
·      Ensuring features are in parity in the large number of code bases
·      Giving a standard experience on each of them
In short, the problems are all related to the growing number of code bases each time we target a new device form-factor or platform or country.

HTML5 or hybrid apps could bring down the number of code bases. Infact, they have matured over the years to be able to give most of the features that native apps support.  They are positioned as “write-once-run-anywhere” solutions.

However, one fundamental question you have to ask yourself is whether you are looking for an app with the exact same User-Interface (UI) on Android, iOS, Windows etc.? If you are looking for platform-specific UI paradigms, you will have to do a lot of branching in the code – which very soon can become a nightmare. Your entire view layer code would be filled with branches on platform specific UI!! That certainly was not the intention when you chose a cross-platform tool!!

This may not be too different for the hybrid route too. You also have to deal with the lowest common denominator of the UI features supported by the cross platform tools.  So, if you intend to give native UI feel and features without being stuck with the least common denominator of features for your app and without having to do platform specific coding through “if…else” branches in your code, you must take a look at Xamarin.

Xamarin is the cross-platform tool that has addressed this very problem in a very elegant way!! It makes an assumption or advocates that you develop all the backend pieces of common, non-UI code in a separate layer and you write your platform specific UI in a separate layer.  Considering such a design, Xamarin  gives a complete set of platform specific features to you through the platform specific SDKs. You have the Xamarin.Android and Xamarin.iOS, which give you a 100% support to every feature on their specific platforms. But you also have Xamarin itself with out platform dependencies that can be used to build all the non-UI logic and reuse it across platforms – giving you the advantages of cross platform development but also giving you’re the advantage of native development of UI !! Howzat?!! And since this is developed using C#, you are almost ready to deploy the same code with UI development specific to Windows on Windows mobile as well!! 

Based on my experience in mobile app development, typically about 60% to 705 of the code is non-UI in enterprise apps and that is what lends itself to reuse.

Sure, it is now giving a “write-once-run-anywhere” assurance. It requires you to develop UI specific to platforms. Infact, what can be touted as its biggest limitation – having to develop UI separately for each platform is what I term as THE biggest advantage in enterprise apps that want platform-specific UI but cross-platform development!

Sure, any solution is suitable only considering the problem you are trying to solve. So, take an informed decision J

Check it out at Xamarin.com.


Monday, February 18, 2008

Android - Technically, What Is It?

Android - Technically what is it?
    (an overivew of what is Android and its uniqueness is discussed in another post below)

    1. It is an operating system for mobile
    2. Interestingly, it is not yet another OS, but component based
      OS
    3. It has an integrated Java Virtual Machine
    4. System interfaces are exposed only through Java libraries
    5. It is based on the Linux Kernel
    6. An Android SDK is provided to let developers build applications on top of the OS but not extend the OS itself
    7. The SDK includes

      • Android packages
      • sample files
      • Documentation
      • A Simulator
The offical site of Android broadly classfies the technical parts of the OS as
consisting of
  1. Linux Kernel
  2. Android Runtime
  3. Libraries
  4. Application Framework
over which the core applications run as well as the applications developed by anyone using this framework

Tuesday, February 12, 2008

The Uniqueness of Android – The Mobile Platform from Google

There is a huge furore and expectation in the mobile industry, after the announcement of “Android”, the mobile platform (consisting of an operating system, middleware and key applications), by Google last November. Its ripple effect in the developer community and the services industry is also pretty palpable.

In Google’s typical way, the 10 million dollar awards towards the best android applications had added the required momentum to bring the large developer community into its fold, and at the same time, harvest collective intelligence.

What is so unique about Android?
We have had many mobile OS like the Symbian, Windows Mobile OS, Mac OS X and Linux based Palm Nova, ALP etc, already flooding the market and fragmenting it.
So, why is another OS required?
If we are talking about something very radical, iPhone did it all. It took the market by storm with its mind-boggling features.
With all these in the market, isn’t android late? Still, why the interest?

Market Buy-in


Google has first of all roped in most of the players in the mobile market be it mobile operators, handset manufacturers, mobile application providers or software companies and even some commercialization companies.

The only significant players who are missing from the list for obvious reasons are:
1. Microsoft
2. Apple
3. Nokia
4. Palm
Two Major National US carriers missing are AT&T and Verizon.

Google is planning to keep it open source, the most happening way to get the acceptance in the market

Technically,
1. It is the only OS so far that allows integration / use of the basic phone features with any externally developed mobile application,
2. It is designed to simplify the reuse of components. Any application can publish its capabilities and any other application can use it. Taking the cue from the enterprise world on service oriented architecture, android has built it into its fundamental architecture
3. It is built on the open Linux Kernel
4. It will be open source
5. Mashup-ready: Embed browser and map views directly in your applications

To the End User:
1. Choice will be unlimited. The end user is not tied to using the basic features of the phone as provided by the handset manufacturer. He could use his own choice from any third party provider as the default feature of the phone
2. The ability to seamlessly integrate core and new applications will produce a new generation of unheard-of applications that are going to change the way the mobile would be used. Like for example, the ability to alert friends who are in the vicinity about your presence or the ability to be notified of all the shops that have a product you are looking for, as you enter a mall.
3. The open platform should provide more cheaper and innovative mobile devices and services
4. Application life cycle and automatic process management frees the end user from worrying about what applications are active
5. Location based services and notifications
6. Standard 2d and 3d graphics with optional acceleration
7. High quality audio/video support including H.264 (AVC).
8. Low power operation