Write Once, Run Everywhere - Are we there yet?

For a number of years the software development industry has struggled to find a solution to a rather old idea: write once, run everywhere. First, there was Java, which for a little while seemed to be the answer, however for numerous reasons it didn’t live up to the dream. For a while it looked like everyone gave up, and the chase was off, however Microsoft released the .NET Framework and the game was on, once again. Soon after, a group of developers sponsored by Novell started project Mono with the idea of porting the Microsoft .NET Framework to Linux (and implicitly other platforms such as OSX). This was the foundation of Xamarin’s products (Xamarin iOS, Xamarin for Android, Xamarin for Mac) was built on. Fast forward to May 2014 and Xamarin just released Xamarin.Forms, a new technology for building cross-platform native mobile application using C# and .NET Framework. With Xamarin.Forms a developer can create mobile native applications for iOS, Android and Windows Phone (please note that you have to hold the appropriate developer licenses in order to create applications for all three platforms). Let’s take a closer look at how Xamarin.Forms delivers on the write once, run everywhere promise.

Before Xamarin.Forms, developers were writing application using shared business logic in the form of Portable Class Libraries (PCLs) and designing the user interface (UI) specific to each platform using either Xamarin.iOS (Xcode or Xamarin Studio’s built-in iOS designer) or Xamarin.Android tooling. Xamarin.Forms goes one step further enabling developers to share UI code. Also, the developer uses Xamarin.Forms controls to create the UI and the resulting applications render the UI using elements native to each platform. Further, the developer can further customize the UI using platform-specific Renderers to create rich user experiences tailored to each platform.

As far as writing the shared UI code, the developer has two choices: create the user interface programmatically in code; or using XAML which found its greatest utility in defining user interfaces within the Windows Presentation Foundation (WPF), Silverlight and Windows Runtime. Each approach has pros and cons and ultimately it comes down to what you’re comfortable with. It’s worth mentioning though, that currently the major drawback to using XAML in Xamarin.Forms solutions is the lack of tooling, notably a designer similar to Visual Studio’s WPF designer or Blend. Also, Xamarin.Forms solutions that include XAML must use a shared PCL project type rather than the Shared Project type. Despite this Xamarin.Forms is rapidly becoming a favourite choice among developers building mobile cross-platform applications. Given the great deal of support that the Xamarin team gets from Microsoft, I have no doubt the Xamarin platform is already well positioned to take the lead in this space.

While we’re talking about solutions to “write once, run everywhere” idea, it’s worth mentioning the availability, in the form of a developer preview, of Microsoft’s ASP.NET vNext which exhibits the ability to run virtually on any platform: Windows, Linux, Mac. What that means is that soon we’ll be able to run web applications build on .NET stack on any platform. More on that on a future article.

We hope you have found this week’s edition of "To The Point" by Claudiu Tomescu to be helpful and informative. Look out for our next week instalment as we continue to explore unique topics from business to the latest technology.

We want to hear your point! If you have any ideas, suggestions or any questions about our weekly blog, please contact us at: info@pointalliance.com.

Warm regards,

Point Alliance Team