Xuni has had a very exciting first year as we’ve seen the number of controls grow in number and maturity as well as the number of supported platforms drastically expand from just one to five (including the individual Xamarin platforms and the native iOS and Android platforms). With so many options available it is worth taking some time to break down the many versions of Xuni, citing what features distinguish each version, and who they might appeal to. Let's look at each platform that you can develop with using Xuni one by one. The five platforms are basically represented by the purple boxes in the diagram above.
The Xamarin platform includes Xamarin.Forms, Xamarin.iOS, and Xamarin.Android. Xamarin.Forms is an all encompassing mechanism for using C# and XAML to write mobile apps for many platforms, while Xamarin.iOS and Xamarin.Android allow you to use C# with finer platform touches.
The Xamarin.Forms API allows users to write code in one shared project that will map to multiple platforms when you compile the application. The actual application design is centered on the notion of pages which represent individual screens within the deployed application. Pages use XAML to define the UI (though it can be done in C# code behind if preferred), and allow for a MVVM approach to application development where all of the UI is defined in XAML (your view) and everything data related (which is your view model) in code (C#). The original version of Xuni exclusively supported this platform as it tends to have the broadest appeal to .NET developers. It largely fulfills the promise of enabling a C# developer to directly transfer their present skills into mobile development, and write apps for iOS, Android, and Windows Phone at once. The xaml language used for designing UI masks many of the subtle platform differences, and allows you to make nice looking and very functional UI’s with very little effort without requiring a developer to know the differences between layouts and views on each platform. Reasons to use: familiar C# and Xaml languages, develop for 3 platforms at once (iOS, Android, and Windows Phone), use Visual Studio or Xamarin Studio as your IDE, develop UI’s quickly without worrying about platform differences
Xamarin.iOS and Xamarin.Android
The main distinction here is that these allow a higher level of customization. In a sense they’re almost a step in between Xamarin.Forms and native development. You still get to use C#, but your project construction starts to look much closer to the native platforms where items like ViewControllers, Activities, Storyboards, and the native API’s become much more visible, and are something the developer is directly interacting with. These Xamarin Platform project types give a higher level of control over the individual UI’s of each platform, and while the backend C# is likely the same, the front end UI code starts to look different. Xamarin also provides a visual designer that is incorporated into Visual Studio or Xamarin Studio, and it mimics the functionality of the visual designers available in the native platform IDE’s. While a developer will still likely write some code for their UI’s, the visual designers allow you a nice graphic mechanism for laying out your UI. Reasons to use: familiar C# language, create applications with a more specific look and feel for that platform, develop using Visual Studio or Xamarin Studio, use Xamarin’s visual designer, you want to invest time more specifically for one platform.
Pure Native Platforms (iOS and Android)
The pure native platforms require that you use the language and tools specific to each platform, but tend to have the best look and feel. The native platforms potentially offer the best experience, but often require the most specific skills. Xamarin goes to great length to ensure that you only need to know C# and some XAML for markup, but iOS and Android both utilize separate languages, use their own IDE’s, and require that your project is specifically targeting their market. There is a large upside to native development though: it generally has the highest ceiling for performance, it will generally have the most correct look and feel (though the Xamarin platforms are extremely close), and allows you to directly use the tools that are made available from the platform vendor. Some developers may also prefer using XCode, Android Studio, or Eclipse for development which is something only native development can offer. The price of entry is usually very low in terms of developer licensing (or even free), but the cost of knowledge can be very high. Developing for iOS requires that users learn to program in Objective C and / or Swift which often requires some time as the learning curve and be steep (especially with Objective C). Android development only requires experience with Java which is much more common, though there is still a learning curve around mastering the API’s and learning how to effectively use the two available IDE’s. Ultimately the users who are most interested in native development have already made some investment in learning these specific skills or are planning to bring someone into a project with those skills in place. Native development does offer some appeal for everyone, but will require time and effort to develop the skills necessary for it. Reasons to use: highest ceiling for performance, potentially best look and feel, use tools, samples, and documentation directly from Apple or Google, no .NET background, you're most interested in one platform and you want to know everything about it.
You might be wondering - what about Windows Phone? While Xuni does support Windows Phone output (and soon UWP) via Xamarin.Forms, we don't provide the Windows controls to developers for separate use outside of Xamarin.Forms. The main reason for this is because we provide the same controls for Windows Runtime (WinRT) and UWP as part of ComponentOne Studio, which is a product that's been around for much longer. If you are developing specifically for Windows you will find more controls and features in ComponentOne Studio.
It’s very exciting to have so many options available for Xuni, and if you’re interested in mobile development we’re likely to have a control set that fits. Xamarin is likely to appeal to the average .NET developer, while the native controls are for those who wish to involve themselves most deeply with a single platform. In the future we’ll continue to explore enhancing existing controls, adding new controls, and making Xuni available on new mobile platforms.