Suggestions for developer migration from Windows Mobile
6 Nov 2020
Disclaimer: The views and opinions expressed in this article are those of the authors and do not necessarily reflect the official policy or position of Juniper Systems as an organization.
Over the last three to four decades, software developers for our rugged handheld computer products have had to migrate their app software from custom Polycode (for the Omnidata Polycorders with PolyOp OS), then to DOS, then Windows CE, then Windows Mobile, and now to Windows 10 and Android. Some developers have tried or are trying to use "platform-agnostic" tools such as general Java or HTML5 with CSS, but have found that access to native functions on each platform is limited.
With the latest migration from Windows Embedded Handheld 6.5 (formerly Windows Mobile) to Windows 10 and Android, one of our lead application software engineers has provided the following comments.
"Our Geode Connect application is written using Xamarin to run cross platform (such as on Windows and even iOS). If your app is only going to target a single platform (say Android) then it is probably best to use the native tooling (ie Java/Kotlin with Android Studio) to avoid some of the overhead that comes with development in Xamarin. However, if you want to share code between Android, Windows, and/or iOS then Xamarin is a great option, especially if C# is the programming language with which you are most familiar.
We've used Xamarin for a couple of projects here at Juniper. Xamarin was used to share a large amount of code between our iOS and Windows Geode Connect applications."
Use Xamarin if:
- You prefer developing in C#.
- You want to share large amounts of code between more than 1 platform (Android/iOS/Windows).
- You have a good understanding of Model-View-ViewModel or Model-View-Presenter design patterns/architecture.
- You want close to native performance.
Use React Native if:
- You are more familiar with web application development.
- You prefer javascript (or even TypeScript).
- You want to share large amounts of code between Android/iOS/Web.
- You want close to native performance.
In our experience React Native works better than Cordova (formerly PhoneGap).
Write native for the device (ie Java/Kotlin for Android, Swift/ObjC for iOS, C#/C++ for Windows) if…
- You only need to target one OS platform or have the time/resources available to create a targeted app for each device.
- You want the best (native) performance.
- You don’t need to share code across multiple platforms.
- You want to use the latest and greatest features/libraries on each platform