I had a busy time during past months. Immigrating from Tehran to Toronto which was containing multiple relocating to different places was just a part of the story. Meantime I made a three months contract to join a small startup which was experiencing the latest phases of the project and was facing changing requirements on the fly. Hopefully they all finished now and I’ve got an opportunity to work on an idea of mine that is a part of my Master of Software Engineering thesis. Regrading preparing a mobile application for feeding a sentiment analysis service (hadoop/mahout), I just started to learn Android platform and it’s development best practices.
Getting familiar with the concepts and technologies which defined by Google, is just exciting. You see there is a mind behind them all. I don’t know if Micro Architecture affected by the Android’s App Component idea or it just happened by the market pressure. I just see Micro Architecture can be implemented by Android developers transparently.
It is very cool to start development with a solid practical approach of making departed reusable things as a whole unified single app. A wise demonstration of reusing software components.
This is something normal if a mechanical engineer fits a Toyota dynamo into a Chevrolet engine. May be a little machinery or welding be needed. This is not something new. While in the software world re-useability is still not much easy as we software engineers claim. Incompatible protocols or complex signatures raise the issue dramatically. I am just looking into a certain car (app) hood and assumed REST/SOAP are some kind of outside app connections (not interconnection) . Android provided a wise solution to reduce this issue. While we’ve seen the same idea in reusing underlying services in the APIs by re-registering and reusing them (RPC, CORBA), but Google provided it much easier to use.
Providing an abstraction by well-defined naming inside/outside methods is the key. You won’t need to make a search using reflection or something to find the proper existed component which you don’t know it’s address in detail. A very high-level naming makes you able to find those things.
I also have the chance of developing Objective C long time a go. I confess that my mind is already biased by Java. By the way as an experienced Java developer, it is easier for me to develop an Android app instead of an iOS one. While Apple’s monopole made it easier by defining a very limited number of possible hardware/platforms, this is still looks more interesting to develop for those target hardware/platform which you’ve never tried so far. While I am an Apple fan, I believe I would have a more growing market in Android open-source territory. I remember XCode was a little messy and confusing to me. I was looking for something like InttelijIDEA. The AppCode came finely. I don’t know how many iOS developers discovered it. There are two different view points to the appliction development. So I am not sure XCode accustomed developers be enough motivated to give the AppCode a try.
It could be a big deal to migrate from a convenient intelligent IDE such as IntelllijIDEA to something as classic/mature and fanatic as XCode. I think Java developers almost would have a good experience when they start using Android Studio.
I am checking if the Android Development became as much easy as playing with LEGO is. Will write about it more.