Last month I published a blog post about the ArcGIS Runtime and Xamarin in which I stated that we had no immediate plans to support Xamarin. However, I did solicit feedback on the topic to determine how important the Xamarin platform is to current and future projects. Your response in favor of supporting Xamarin was overwhelming. So after careful consideration, I’m excited to announce commercial support for Xamarin in the latter half of 2015. We also seek to provide a beta in the first half of 2015.
Why are we waiting until late 2015 to support Xamarin?
We need time to create a consistent experience for ArcGIS Runtime .NET developers across Windows Store\Phone, iOS, and Android platforms. This is not possible with bindings created on the current ArcGIS Runtime release of these platforms.
What can you do now?
Developers can create their own Xamarin bindings on our current ArcGIS Runtime SDKs for iOS and Android. While this is technically possible, we will not directly support any development work via third-party Xamarin bindings. Of course, we will continue to support use of the underlying native API. Keep in mind, third-party bindings will need to be recreated when we release updates to the underlying ArcGIS Runtime SDK. This will be required to enable developers to take advantage of new features or pick-up bug fixes and performance enhancements. Also consider that any application code written against third-party bindings will need to be rewritten to work with our commercial product that supports Xamarin next year.
What should you do now?
If possible, I recommend waiting until we officially release an ArcGIS Runtime product that supports Xamarin. If unable to wait, please take into account the time and effort that will be necessary to migrate ArcGIS Runtime applications you create today to our commercial product available next year.
In addition to commercial support, I’m also excited to announce that Esri and Xamarin are working together to enable a great experience for .NET developers doing cross-platform development with the ArcGIS Runtime. We both look forward to supporting you now and into the future.
CTO, ArcGIS Runtime & APIs
We are excited to announce the first commercial release of the ArcGIS Runtime SDK for .NET! Download version 10.2.4 and use it today to build production-ready apps for Windows Desktop, Store, and Phone: https://developers.arcgis.com/net/
This release is culmination of work over the last two years, since the official release of the Windows 8 platform and Windows Runtime in late 2012. During that time, we focused on refining the native app developer experience for .NET. We discussed our vision for the ArcGIS Runtime SDK for .NET, built as a new, shared API across native app platforms promoted by Microsoft. We provided guidance for WPF developers seeking to transition from our popular ArcGIS Runtime SDK for WPF to our new SDK. In the end we created a modern, high-performance ArcGIS Runtime SDK for .NET with support for offline workflows, sync-enabled feature services, shapefiles, client-side labeling and much more. We look forward to seeing the great apps you’ll create with the ArcGIS Runtime SDK for .NET!
For those who participated in the ArcGIS Runtime SDK for .NET beta program, thank you for your valuable feedback. The beta program was a great success, made possible by the contribution of nearly 3000 participants. Although the beta program has completed, the beta community will remain open for a short time to host documentation pertaining to changes between 10.2.3 beta and 10.2.4, view the status of bug reports, and wrap up forum discussions.
Thank you and enjoy!
ArcGIS Runtime SDK for .NET Team
Over the last year there have been a number of requests from developers for information regarding Xamarin technology in relation to the ArcGIS Runtime.
Xamarin is attractive to many of our developers because it allows them to leverage their existing Microsoft .NET development skills when building Android, iOS, Mac, Windows and Windows Phone apps.
What is Xamarin?
Xamarin is an evolution of the Mono project, which is a cross platform open source .NET development framework.
When Microsoft created the .NET technology they did two things; they defined a specification and then implemented that specification for the Windows Operating System. The specification they defined and subsequently published was in fact composed of several specifications. Microsoft implemented these and released them to the world as the Microsoft .NET Framework. Microsoft, Intel and Hewlett Packard then worked to standardize the specifications. This was achieved in 2003.
The situation with User Interface components is more complex. Xamarin Forms, released in May 2014, is a technology similar to Microsoft’s XAML to allow developers to capture a form layout within a visual designer. Xamarin will bind these UI components of the layout to native UI widgets appropriate for the platform the UI is executing on. Since the various platforms that Xamarin supports have very different UI capabilities, only a subset of UI controls are supported by Xamarin Forms. Xamarin Forms can coexist with native UI controls which are also accessible through Xamarin, although when using the native controls the UI code is not portable between platforms.
3rd party components that extend the capabilities of the operating system, for example the ArcGIS Runtime, can expose their capabilities to Xamarin by creating Xamarin bindings. These bindings allow the Xamarin runtime to be extended so that developers can work with the capabilities of the 3rd party library using C# as if they were coding against the 3rd party library using the native language.
Using Xamarin binding technology it is possible (through the effort of generating the bindings) to access 3rd party libraries and OS APIs not exposed by default through Xamarin. While possible it does mean that any code written will not be portable to other platforms.
ArcGIS Runtime and Xamarin in Practice
In order to expose the capabilities of the ArcGIS Runtime to the Xamarin developer Xamarin bindings would need to be created. These Xamarin bindings must be created for each platform by binding onto the appropriate ArcGIS Runtime API for the respective platform. The diagram below illustrates this architecture.
While this architecture allows Xamarin developers to access the ArcGIS Runtime, it does not present the developer with a way to easily write cross platform code since the differences in the ArcGIS Runtime APIs are exposed directly to the developer. The developer must learn the specific ArcGIS Runtime API and then with that knowledge they can code against that API using C#.
We have prototyped a set of Xamarin bindings to confirm that the theory actually works. The results of these tests are that this architecture does work. However, we also learned that the creation of these bindings is a non-trivial task. In addition, since the bindings map very closely to the underlying API, as the API evolves the bindings must be maintained, which is a process that can result in a brittle API.
Current ArcGIS Runtime and Xamarin Status
At this point, we have no plans to release Xamarin bindings for our native APIs. There are a number of factors that have gone into this decision.
- Sub-standard developer experience when coding against more than one ArcGIS Runtime API due their differences
- Does not easily support cross platform code development, due to the binding requirements
- Xamarin technology evolving rapidly
ArcGIS Runtime Cross Platform Development
We do support cross platform development with the ArcGIS Runtime. Currently the JavaSE and Qt APIs support cross platform development, but only for Windows and Linux desktop systems. The Qt API is currently being extended to support QML.
The Qt QML API will support cross platform development for all the runtime platforms. Code written against the Qt QML API must still be compiled targeting the native platform, but code written for one platform just works when compiled for a second platform. There are no differences in the Qt QML API between platforms, making cross platform App development with a single code-base possible.
To achieve this there are some compromises, for example, the UI controls available must exist on all platforms, meaning specific UI components that only exist on one platform cannot be used when building cross platform code. However, for a large percentage of use cases the Qt QML API will be a good choice.
So while we do offer cross platform development options with the ArcGIS Runtime today, we would like to hear from you regarding you development needs with respect to Xamarin. If Xamarin was provided as an option, would you use it? How are you managing your cross platform development needs currently? Do you use Xamarin today, and if so, how?
Update: Due to a overwhelming feedback in favor of supporting Xamarin, our position has changed. The ArcGIS Runtime will support Xamarin in the near future. Please read Part 2 of this blog post for more information.
CTO, ArcGIS Runtime & APIs
The ArcGIS Runtime SDK for .NET 10.2.3 beta is now available on the Esri Beta Community. This is a quality release that resolves some issues encountered in the previous beta. A number of enhancements have also been included with the product:
On Friday April 18th, we updated the Operations Dashboard for ArcGIS app that is hosted within ArcGIS Online. We are busy working on updating the Portal for ArcGIS configuration utility as well so please look for this update inside of the Customer Care site later this week.
In March we rolled out quite a few updates to Esri products and the Operations Dashboard for ArcGIS was no exception. A lot of exciting new features were added and you can find a full list of updates on our doc site or a preview of them from this blog article.
Perhaps the most sought after request that we added this release is to extend the reach of Dashboard beyond Windows Desktops and laptops and add support for tablets (iPads and Android tablets) so that more people within the organization can use it. With the 10.2.2 release, we have done just that by building Dashboard into the browser so it can run across platforms.
This blog article will describe how you can author operation views that target the browser and highlight capabilities within the browser app itself. Continue reading
At the //build/ conference in San Francisco today, Microsoft announced a new development platform for Windows Phone that unifies the developer experience between Windows Store and Windows Phone. This greatly enhances the code-sharing story we presented at Esri Developer Summit … Continue reading
We are pleased to announce the 10.2.2 release of ArcGIS Runtime SDK for WPF. You can download the SDK today from ArcGIS for Developers. This release follows the 10.2 release in Q4 2013 and includes several new features plus performance and quality improvements. Here are some of the highlights (much more information can be found in the release notes):
We are excited to announce the 10.2.2 beta release of the ArcGIS Runtime SDK for .NET! This SDK enables developers to build rich, high performance GIS applications for Windows PCs, tablets, and phones. It includes three APIs that support building .NET apps for Windows Desktop, Windows Store, and Windows Phone. The APIs share a common design and structure, which encourages sharing implementation logic across Windows platforms. Continue reading