A few weeks ago a colleague from work and I were talking about developing applications for the Android and the Apple phones. He is currently working on a version of a medical images web viewer. The application is intended to run on a tablet (not a phone). The application needs to make use of graphic libraries to perform as fast as possible image manipulations (e.g., resize, crop, invert, and apply several filters among other operations). In that context Xamarin was brought up.
Xamarin is a Microsoft-owned San Francisco, California-based software company founded in May 2011 by the engineers that created Mono, Mono for Android and MonoTouch, which are cross-platform implementations of the Common Language Infrastructure (CLI) and Common Language Specifications (often called Microsoft .NET).
Mono is a free and open source project led by Xamarin, a subsidiary of Microsoft (formerly by Novell and originally by Ximian) to create an ECMA standard-compliant, .NET Framework-compatible set of tools including, among others, a C# compiler and a Common Language Runtime. The initial release of Mono dates back to June 30, 2004.
Mono can be run on many software systems including Android, most Linux distributions, BSD, Mac OS, Windows, Solaris, and even some game consoles such as PlayStation 3, Wii, and Xbox 360.
The Mono project has been controversial within the open-source community, as it implements portions of .NET Framework that may be covered by Microsoft patents. Although standardized portions of .NET Framework are covered under Microsoft’s “Open Specification Promise” a covenant stating that Microsoft will not assert its patents against implementations of its specifications under certain conditions, other portions are not, which led to concerns that the Mono project could become the target of patent infringement lawsuits. Following Microsoft’s open sourcing of several core .NET technologies since 2014 and its acquisition of Xamarin in the beginning of 2016, an updated patent promise has been issued for the Mono project.
I tried Mono a few years ago. At the time it was able to support console applications written in C#. I believe that with time it supported a windows implementation to build simple UIs.
With a C#-shared codebase, developers can use Xamarin tools to write native Android, iOS, and Windows apps with native user interfaces and share code across multiple platforms.
Xamarin supports Android, iOS, and Mac projects in Visual Studio written in C#. I have experimented with it using Visual Studio Community 2015.
Developers familiar with Visual Studio can leverage existing skills and increase productivity by developing for Xamarin with Visual Studio. Visual Studio support also means that applications sharing code between iOS, Android, Mac, and Windows can be developed in the same IDE.
After verifying on my Windows 10 machine the operation of Hyper-V required for the Visual Studio based Emulator for Android I visited the following URL: https://developer.xamarin.com/guides/android/getting_started/hello,android/hello,android_quickstart/
The page “Hello, Android: Quickstart” takes you step by step creating a simple Android application written in C#. After the application is completed there are some configuration steps required. After that was done, I ran the application on the Android simulator which is integrated with Visual Studio.
The only issue I encountered in the entire process was that some of the Xamarin libraries used by Visual Studio were outdated. It took some time to get all libraries up to date.
Following is a screen capture from my computer of the Android emulator running the application developed in Visual Studio:
If the opportunity arises, in time I would like to work with Visual Studio and Xamarin developing a production application.
If you have comments or questions regarding this of any other post in this blog, please do not hesitate and send me a message via email. Will replay as soon as possible and will not make a reference to your name unless you explicitly allow me to.
John
john.canessa@gmail.com
Follow me on Twitter: @john_canessa