3 ms·
Android noob here. I've been teaching myself Android programming for the past couple of months and I've found it overall a messy and unpleasant experience for t
by grendozy 10y ago
Android noob here. I've been teaching myself Android programming for the past couple of months and I've found it overall a messy and unpleasant experience for the reasons many of you have already mentioned. So much, in fact, that I'm looking for alternatives.
So what's the best option?
Kivy? Python is slow, adoption seems non-existent, not suitable for every kind of app
Cordova? Web apps are slow, JavaScript sucks big time
Qt? Google discourages use of the NDK for developing apps, can't figure out anything from their crappy website
Xamarin? C# doesn't look like a significant step up from Java, from Microsoft
Delphi? Proprietary, Windows-only and costly
Clojure/Kotlin/Scala? It seems you need to be a master Android developer to use them, still doesn't get you out of the horrible Android architecture.
- virmundi 10y agoAndroid is a messy process. Since you've effectively implied that you're excluding all of the options, you only have message Android. Web apps don't suck that much as long as each screen does one thing well. Xamarin is for getting a slightly more elegant language (since Java 1.8 isn't supported) into the mix while providing a reasonable cross-system platform. Clojure/Kotlin/Scala do require you to master Android first because they are built on top of it. Each provides is own abstraction, even if it's just a language. In the end it's about trade offs and acceptance. Raw Android is like working in a better assembly. It's got decade's old abstractions. It's powerful, but annoying. For everything else, there's the complexity of working with the various abstractions over a system that does not want to be abstracted.
- m_fayer 10y agoI spend a lot of time in Xamarin so I'm biased in that direction, here's why I think it might bring more of an advantage than you think. C# is IMO a significant step up from whatever Java is running in Android. It's a much richer language as far as syntactic sugar (see properties, type inference), and fundamentals - optional dynamic typing, better generics than Java, and gotcha-free lambdas. The biggest advantage though is async/await, which puts c# miles ahead of Java when it comes to concurrency, something that's oh-so-important in mobile land. And of course Xamarin opens up F#, which is a whole different story. Also, C# opens up some frameworks that will give you significantly more modern techniques than what can be easily done in vanilla native Android dev. Take a look at ReactiveUI and MvvmCross, and a recent favorite - https://github.com/RolandPheasant/DynamicData https://github.com/RolandPheasant/DynamicData Now that it's free and doesn't require Windows, I definitely think anyone trying to build significant native Android apps should at least take a look.