Mobile application development can be an intimidating thought for many programmers. Most companies wish to develop mobile applications to get their businesses noticed, but many of them may not have personnel with fluency in Objective C or Java. Further, each mobile platform requires its own skillset for successful application development with unique languages, tools, and behaviors. This translates into 3 times the development time of a single application as well as 3 separate projects to maintain. Thus native application development may seem like an imposing and potentially expensive concept. Fortunately several companies have stepped in to ease this burden. There are two major approaches to cross platform development. The first approach is to take what is essentially a web application, and wrap it as a native app (which is the style used by PhoneGap). This approach might appeal most to web developers who are looking to expand into mobile, and provide an application that better approximates a mobile feel than a website. The second approach is to use a cross platform tool that uses a common language to generate native applications (which is Xamarin’s method). Xamarin (and more specifically Xamarin.Forms) allows developers to code once in C# and Xaml to simultaneously develop for iOS, Android, and Windows Phone. As a result, Xamarin is often favored by .NET developers who are looking to expand into mobile development. ComponentOne has tools that could be used with either platform (Wijmo 5 in the case of PhoneGap or Xuni for Xamarin.Forms) so it will be a partially a matter of personal taste which platform will ultimately be better for a company. Both have some strong positives and potential negatives.
We already have some blogs written on the topics of Xamarin.Forms and Mono so I will summarize things here. Xamarin provides a platform to leverage its open source implementation of .NET (Mono) that allows developers to write once in C# and create applications in iOS, Android, and Windows Phone simultaneously using Xamarin.Forms. Xamarin development can be done in either Visual Studio or their own IDE called Xamarin Studio. The platform provides a high level of performance, a large amount of code reuse, and the advantages of using C# and the .NET platform.
Developers can code in C# and XAML
Develop for iOS, Android, and Windows Phone simultaneously
Supports iOS, Android, Windows Phone, Blackberry, Symbian, Bada, WebOS
Requires a Xamarin License
Open source and Free
Applications are native
Applications are not fully native
Applications capture the correct look and feel for each platform
Capturing the correct look and feel for each platform often requires extra work
Large amount of shared code
Libraries, frameworks, and platform specific optimizations fragment the landscape
Ultimately every developer will have their own preference for which of these solutions will fit their development plan best. PhoneGap leverages web development skills while Xamarin focuses on .NET skills which is perhaps the most straightforward line to draw. ComponentOne provides tools for mobile application development no matter which path you decide to take.