Xamarin, best known for championing .NET when Microsoft's interests moved elsewhere, is being embraced by Microsoft as a way of bringing Android and iOS development into Visual Studio.
The collaboration is being announced at the Visual Studio Live 2013 launch event in New York. On the face of it there isn't much, if anything, new in the technology; more a cozying up of Microsoft to something that could do it a lot of good.
The three points of the collaboration are:
Xamarin announced the availability of support for Visual Studio 2013 and for Microsoft's .NET Portable Class Library. This is a .NET framework that allows you to create libraries that work on a wide range of .NET platforms without having to recompile. Reference assemblies needed to use PCL on other platforms were made available in October and this allows Xamarin to make use of the technology on both iOS and Android.
The availability of deals for both the Xamarin University and for its professional products is welcome, and might well pull in some additional "serious" .NET developers who might otherwise be suspicious of using a non-Microsoft .NET.
Xamarin started out by developing Mono, a .NET system for Linux and only more recently focused its efforts on cross-platform mobile development. Using Xamarin's .NET implementation you can write iOS and Android apps in C# - and, of course, you can already write Windows Phone 8 apps in C#. You can also target Mac OSX if you want to. This makes .NET and C# the only widely-supported cross platform development environment. Most of the latest C# features are supported including anonymous types, lambdas and, perhaps most importantly LINQ.
You can't reuse 100% of your code because the UI frameworks for each of these platforms are very different. However, you can access the native APIs via a set of standard class libraries. Xamarin claims that anything you can do in Objective C or Java you can do using C#.
On iOS your application is compiled to native ARM machine code. Xamarin estimates that 75% of the code can be shared - but of course it depends on the application. On Android the compiler creates Intermediate Language (IL) which is JIT is compiled by the runtime to run natively.
You can make use of either Xamarin Studio or Visual Studio and it is the Visual Studio integration that seems to be at the core of the collaboration. Being able to develop for the three major phone platforms using a familiar IDE is a big attraction for existing .NET developers.
To quote Microsoft's Corporate Vice President Somasegar:
"The broad collaboration between Microsoft and Xamarin which we announced today is targeted at supporting developers interested in extending their applications across multiple devices.With Xamarin, developers combine all of the productivity benefits of C#, Visual Studio 2013 and Windows Azure with the flexibility to quickly build for multiple device targets.”
Well you would have guessed that Azure would get a mention somewhere.
Xamarin claims to have a community of over 430,000 developers with more than 20,000 paying accounts. Given that a subscription costs from $299 for an indie license to $1899 for an enterprise license, and that's per platform per developer per year, you can see that Xamarin probably has a good level of financial security. If you want to try it out there there is a free starter version, which you can use to create real deployable apps.
It is nice to see Xamarin being accepted and promoted by Microsoft. We can only hope that this relights the fires of enthusiasm for .NET in general within Microsoft.