I've started developing a side project for Android. My experience is very positive so far. (I'll do a Show/Ask HN when the app is done.)
The tools and SDK are pretty good. I mainly use the command line tools and Emacs. That setup works great.
The API and UI framework are fairly well-thought out. I like the Activity/View/Intent constructs, encouraging modularity and failure recovery.
The graphic API are well-designed, with good separation and combination of concepts and functionality. There are a lot of built-in supports for graphics, like bitmap manipulation and transparency support. Support OpenGL.
The emulator is pretty good. The CPU and memory profilers (profiler!) are excellent.
The choice of using Java is excellent. Since Android is kind of an embedded device, I want the compiler to catch most of the silly mistakes before running the app on it.
Things that could be better:
- The audio APIs are kind of weak and buggy.
- The XML layout can be a trail-and-error process. Interface Builder would be nice.
- The build-deploy-run cycle can be long. Should have a mode that doesn't require re-installing the whole package for every build.
- Giving a free Android phone to every developer would definitely help.
Everyone is comfortable with different language. I prefer statically typed languages because I have been burnt by my silly mistakes before. Compilers that help me in catching my mistakes go a long way. Note that I do use scripting languages but those tend to be short and throw-away-able codes. If the Android SDK requires a dynamic type language, I would have to write a lot of boiler plate unit tests to catch my mistakes. That's just my programming style, might not applicable to others.
Android being a semi-embedded device implies that application deployment is more difficult compared to web apps, where the developer can upgrade anytime he wants. That puts pressure on getting things right with fewer release iterations.
I don't mean to start a language war. I just want to give a data point on what works for me.
The tools and SDK are pretty good. I mainly use the command line tools and Emacs. That setup works great.
The API and UI framework are fairly well-thought out. I like the Activity/View/Intent constructs, encouraging modularity and failure recovery.
The graphic API are well-designed, with good separation and combination of concepts and functionality. There are a lot of built-in supports for graphics, like bitmap manipulation and transparency support. Support OpenGL.
The emulator is pretty good. The CPU and memory profilers (profiler!) are excellent.
The choice of using Java is excellent. Since Android is kind of an embedded device, I want the compiler to catch most of the silly mistakes before running the app on it.
Things that could be better:
- The audio APIs are kind of weak and buggy.
- The XML layout can be a trail-and-error process. Interface Builder would be nice.
- The build-deploy-run cycle can be long. Should have a mode that doesn't require re-installing the whole package for every build.
- Giving a free Android phone to every developer would definitely help.