If we go back to the year of 2007, when Steve Jobs presented the first iPhone, we could not guess the “big bang” of mobile devices, neither in quantity and in quality. Before that year, most of the people use their phones to play snake, make calls and send text messages. Obviously there were smartphones before the iPhone, like the PDAs from HP, but they were not affordable for most people. Those smartphones were much too complex, too expensive, too big, too heavy, in short: they were too much of everything.
After that year a new era of communication arrived, new smartphones made their appearance, like Android or Bada. They are simple, affordable, with easy and fast interfaces, touch screens, camera and GPS.
The last few lines were written from a user perspective. But what about a developer perspective?
Well, we have App stores for all the operative systems. Every day thousands of applications are being downloaded, a huge amount of internet traffic is being generated through mobile devices and it’s increasing every day. In consequence a lot of money is going back and forth: this is the so called “El Dorado”. But not everything is hunky-dory: each device has it’s own capabilities, screen size and programming language. That’s why Mobile Frameworks have made their appearance.
Putting it simply, mobile frameworks are designed to support the development of applications for different devices or operative systems with the same lines of code.
Nowadays we have frameworks specialized in all sorts of things:
- 3D games – Unity3D, Marmalade
- 2D games – Cocos2D, Corona SDK
- Access device capabilities like GPS or accelerometer – PhoneGap
- Native applications development with Native User Interface – Sencha and Appcelerator, AppFurnace, MoSync, monoTouch
- Web Applications – jQuery Mobile, Jo, LungoJS, XUI, EmbedJS
And we have more dozens of frameworks besides these ones. We are reaching the saturation point where there is almost a framework for each specific thing that we need.
Well we solved our problem with another problem: Which framework should we choose?
Sorry, I have no right answer for this nor an exact algorithm for choosing frameworks for development, although some key features should be taken into consideration when we need to choose between frameworks, like: user experience, the budget available, the needs for device capabilities and target devices. Then look for the available frameworks and see if there is one that fulfills your needs and get to work.
My personal opinion is that most of the times, we should go native, but I know that we need a huge budget for that and a team with a wide and deep knowledge in different operative systems and programming languages – most of the time it’s simply not feasible. Don’t get me wrong, the idea for this post isn’t to set up the endless discussion about Native development versus Web development, that topic is maybe for another post.
And you, have you worked with any framework? What is your feeling about those frameworks?
Don’t forget: The world is going mobile