Universal Windows App development. A retrospective.

So, I recently wrote about my first Windows 10 Universal application. And, not all of my thoughts and conclusions were positive. But, that was largely as viewed by a person who works primarily on LoB applications with a background in the full .Net stack for Windows applications.

As I thought on it more, I came to appreciate that this makes me somewhat of a niche developer who has enjoyed some niceties that aren't present on other platform or aren't requirements for other types of applications. While my thoughts were largely positive, I felt the need to reflect on this experience when considering the alternatives.

For LoB applications, the largest competitors are probably at the moment the expected ones; Android and iOS. In those scenarios, all of my server side efforts would have remained identical. I definitely wouldn't have had access to NHibernate/Hibernate or Fluent on any of those. Similarly, there don't appear to be facilities to do direct access to SQL on either iOS of Android either. In this respect Windows 10 is on equal footing. I won't bother saying that .Net has an edge. If the language does what you need and you know how to do it, it is better than learning another.

The efforts spent on JSON deserialization could have been avoided entirely in UWP through the use of JSON.net. Android, being a rip-off of full blown Java has reflection support so I could have implemented my JSON deserializer. Didn't see anything for iOS, though, strictly speaking, deserializing back into a class isn't necessary. Nonetheless, I would peg this as a victory for Android and Windows 10. I'm sure a quick search would reveal a library to use in place of JSON.net on Android.

If we're not talking a LoB app, then we probably don't need a full blown DBMS and something like SQLite or even a simple home grown file based DB would be fine in most cases. And, lets face it. Non-LoB apps dominate all app stores and on platforms like iOS and Android which make up the majority of modern computing devices app store apps are the most common. So, most of my efforts wouldn't even be worth worrying about for the average app.

Lastly comes the client and the app itself. I already said, I don't want this article to be a pissing war about programming languages or platforms. And, in this arena Windows 10 UWP apps win hands down without the need to go there. For Apple, you would need to write separate code for OS X and iOS to target phone, tablet and PC. Same for Android (if you consider Chrome OS to be a PC OS). Going beyond those platform would require yet more separate APIs (WatchOS, TvOS, Android Wear) to get your apps and running elsewhere which brings Apple up to 4 and Google up to 3. For Microsoft, I wager Band explicitly requires a separate UI, so 2. And only if you care to target wrist based wearables. No matter how you slice it, from a UI perspective, developing for Windows 10 gives the potential for the most versatility.

So, in the long run, Windows 10 UWP apps should require the least investment and the most flexibility for both LoB and regular apps (though admittedly, for non-LoB apps, the value is only there if you want to target multiple device categories).

Also, to recap my anti-flame war on programming languages; if you're already an iOS or Android developer, you will undoubtedly find sticking with what you know to be easiest.

The other point I would make is cost of entry. Apple won't even let you develop for their platform without a paid license. Both Android and Windows let you develop for free. Might still be a cost associated with actually publishing to the store for Windows though (I have a dev account and it is permanent so I'm out of the loop). Also, each store monetizes app sales differently. If you're in for profit that is another side you'll need to research.

From the PoV of a developer though, I feel like Windows has the best platform, both from my subjective view point and from some important objective stances.

Comments

Popular Posts