Xamarin ports Android to C# to prove OS is not Java dependent
Code could be used to build Android phones that don't rely on Java
By Mikael Ricknäs | Published: 16:25, 03 May 2012
Android has been ported to C# by Xamarin in an effort to improve its own development tools and show that the OS doesn't have to be dependent on Java.
Development tools vendor Xamarin was started in May last year to take care of the Mono project, an open source implementation of the .NET framework, after Attachmate decided to drop it following its deal with Novell, where Mono had its home previously.
Today, Xamarin offers cross-platform development tools for iOS and Android.
Related Articles on Techworld
When working on how to improve the performance of its tool for Android, the company hit a wall because of performance issues with Dalvik, which is Android's virtual machine.
One idea the Xamarin team had was to translate Android's source code to C#. A few months later skunkworks project XobotOS was born.
The result of the project's efforts is that most of Android's layouts and controls have been ported to C#, and the code is available on GitHub.
"Turning XobotOS into something that can run on phones can be done. Someone like Google or Amazon could do it and get 10 years of performance optimisation," said Miguel de Icaza, CTO at Xamarin.
As big proponent of C#, de Icaza thinks Google was a little premature when it decided to go with Java for Android. Google is now embroiled in a court battle with Java owner Oracle over whether it violated patents and copyrights in its use of Java.
"I think that C# gets overlooked because it came from Microsoft originally. But today it is an ISO standard," said de Icaza. He contrasts that history with Java's, which Sun submitted for standardisation but then withdrew.
Microsoft has also included C# in its Community Promise, which states that the company "irrevocably promises not to assert any" claims against it.
In the end, Xamarin wants to concentrate on improving its development tools, and so XobotOS will not be a focus going forward, the company said.
However, a few technologies that have come out of the effort will be included in future versions of its products.
For example, today, Mono for Android accesses the underlying graphics libraries via Java, but with the code Xamarin built for XobotOS it can skip that step and get straight to the native rendering code in Android's graphics engine.
"Graphics applications will run faster with Mono and C# than they do with Dalvik and Java," said de Icaza.
Xamarin now has the tools necessary to replace some chunks of Java code with C# code where performance is critical and when C# can offer an improvement, as well.
The translation was made easier using a tool called Sharpen, which was originally created by db4object. Xamarin improved the tool, making it more scalable and updating it to work with modern Java idioms, while doing the actual translation work, according to de Icaza.
"Sharpen has a lot of benefits, not only for us but for other people, so we open sourced all of our code. We are hoping it will be useful for other people that are looking at doing Java to C# translations for whatever needs they might have," said de Icaza.
Along with XobotOS, the new version of Sharpen was also published on GitHub.