On mobile application development…

A couple of years ago I decided to evaluate the requirements for developing a mobile client-side application. So, armed with a good idea for a cool application, the support of my company and knowledge of Java, server side programming and C, I started putting the thing together. This resulted in GuitarTuner – an application on your phone that uses the microphone to listen to you plucking a guitar string, and displaying the pitch in real time (it was success in many ways, we even won an award for the most innovative mobile application here in Finland). And it was the first mobile guitar tuner, to my knowledge.

Due to the requirements of the application we had to go the Symbian way (client-side Java on a phone does not let you access the microphone). And we had absolutely no prior Symbian experience. The learning-curve was so steep that we promptly made the decision that client-side application development isn’t the space we want to be in – its anything but scalable as a business model – even though there is a huge potential for it in mobile marketing.

Fast-forwarding to today, it seems that development for mobile devices is just as hard as a couple of years ago. Sure, there a lot more tools and choices for the developers, but the mind-set required for developing mobile applications is still miles and miles away from more traditional desktop or web development (which of course translates into more costs). There are also a lot more phones on market, making testing and device optimization a daunting task (GuitarTuner, for example, works only with early Series 60 phones, not newer ones – it should be compatible, but for some reason doesn’t work. go figure).

I have been thinking about this for a while. What I would very much like to see is a framework in the following lines:

  • Primarily Java (MIDP) based, as it is supported on most devices
  • Based on a scripted language (preferably JavaScript – there are a lot of web developers that could easily make the jump)
  • A simple DOM for building user interfaces and accessing device functions
  • Localization at language level (e.g. all strings externalized, etc.)
  • A nice IDE (e.g. based on Eclipse), with a emulator like functionality for a myriad of devices
  • XML and web services support

The above list is a wish-list, not something that is easily accomplished. It is theoretically possible to create a JavaScript compiler that produces MIDP compatible (remember, no floating point..) byte code, which would work with handcrafted run-time libraries to produce the desired result. Also, the IDE side functionality is important, making localization easy, and most importantly providing a close-to-real-time preview of the results. With features for XML and web services, many of the cool web 2.0 services and functionalities we’ve come to rely on the desktop would be usable by mobile developers. But all of this ain’t easy, the handsets are still quite limited in processing power and memory (this is changing real fast, though).

I’m sure of one thing; were there a framework like the one I’ve described above, we’d see a lot more of mobile applications and innovation. The development costs today are to simply too high for many purposes (and I do think that creating a mobile application should not be much harder than creating a web site).

Post a comment and let me know what you think.

/A


About this entry