Android Dev - Back burnered

Well, the Android project at work was put on the back burner as we focus on a Windows 8 application instead. I've had a full week or so on and off to work on the Android stuff so I was just getting into the groove of it as I got this information. I anticipate that we will probably resume this project in a month or so this seemed like an appropriate time to reflect on the platform from a beginner Android developer perspective.

So, as I said before, I didn't really like the tools we were using. I see the value in them for sure. And I've come to understand that Xamarin inherits a lot of the differences Android has vs typical .Net projects. It makes some things nicer and it adds a few quirks of its own. To be honest, this wasn't what I was expecting. And I can say that in large part the bulk of my problems come from my own expectations. I expected there to be limitations, but I was anticipating that A) More of the .Net stack would be available and B) More things could be designed without consideration for Android.

We'll start with my expectations. I know a bit about the mono and moonlight projects. I've never really worked with it. But as it isn't a Microsoft funded thing it hasn't kept pace throughout the years. Also, Microsoft hasn't always subjected themselves to the same rules as everyone else, so their implementation of .Net can do things other would never be allowed to do. I was sort of expecting Mono and Mono for Android from a back end code perspective to be nearly feature compatible with .Net 4.0. From a front end perspective I was anticipating support for XAML, even if only a subset or a completely separate set of supported controls.

Those were my two biggest expectations and both weren't met to some degree. As far as back-end code compatibility... it isn't even close to parity with .Net 4. To make matters worse, there are seemingly random omissions and even random additions. Off the top of my head I can't remember specifics on missing things, but there were quite a few. On the topic of random additions, there was a class dedicated to parsing JSON objects. On the UI side I'm bit ticked about the lack of XAML. It is a design language, and it is based on XML and should be easy to translate into the format expected by an Android application. This one change alone would have made Android dev much more at home for modern .Net developers.

Things which didn't matter to me... well really everything. I'm sorry, I came from a Java background. C# and Java are so similar that if need to work with such a severely limited toolset, I might as well just be working in Java.

That being said, the upsides remain that this code should be able to run on Mono Touch as well and on WP and Windows 8. I might need to make some namespace changes and minor considerations for each, but in general I think there is definitely value here. I don't think we will use this code for WP and Windows 8 though. We're a Microsoft code shop and have much more feature rich clients and services than what I was writing for the Android device, so I imagine we'll simply generate clients for WP and Win8 and use those instead of what we have today for those platforms which detracts a bit from the cross platform compatibility.

Android dev in general is a different beast. As I expected, most of my more general concerns started fading as I started writing more. The same goes for Xamarin itself. Where Xamarin is a thorn in my side is really more pride related. I consider myself to be a very good .Net developer and a fairly good Java developer, but Xamarin doesn't hide enough of the Android particularities and so I'm back to square one even though I get to use .Net in my developing there.

It would be like using the babble fish from Hitch-hikers guide but one that only worked effectively if you stuck to words had a proper direct translation into the language(s) of those you were speaking too. Even though it allows you to speak in a language you know well, the limitations really make it feel like a whole new language. And that is the frustrating part. I have a tendency to feel that I would finish this project quicker if it was pure Android development because I wouldn't have to unlearn all of the .Net stuff I knew just to make it work.

Comments

Popular Posts