Saturday, December 6, 2008

The diversity of Symbian development

When talking about mobile software development lots of people forget about the fact that it's not only the native programming language that can be used on a given platform. I've read a lot of comparisons between Symbian/C++, Win32/MFC/.NET of Windows Mobile, Objective-C on iPhone, Android, etc. lately discussing the advantages and disadvantages of these options, maturity and popularity of the underlying platforms, probability of writing successful programs, etc.


The problem with these comparisons (in which Symbian/C++ is typically at the end of the list with its peculiarities and steep learning curve) is that they discuss only half of the picture. The more advanced a mobile platform the more you can do on it - which applies to software development, too. I strongly believe that one of the strengths of software development on Symbian platform is that it's not bound to a single programming language, SDK, etc. A lot of you might not know that for Symbian-powered devices you can write software in
  • Java - Mobile Java (JME) has been available since the early days,
  • Flash Lite - Adobe's Flash has been added to S60 phones 1-2 years ago,
  • Python - Python for S60 is an open source initiative enabling rapid application development,
  • Ruby - Ruby for Symbian is one of the newest additions to S60,
  • .NET - Red Five Labs's add-on to S60 platform is tempting Windows Mobile developers to use their skills on another platform,
  • NS Basic - Powerful development environment and run-time framework for programs written in BASIC (link),
  • HTML using other web technologies like CSS, Javascript - Apple's WebKit rendering engine is becoming the de facto standard for mobile browsers making them capable of showing full web pages (i.e. not only WAP or mobile web). This enables widgets development for a range of smartphones like S60-phones, iPhone, Android, etc.
You can see from the list above that Symbian development is much more than native application programming. On the contrary, I dare to claim that native programming is becoming less and less relevant over time. Of course, each option has its strengths and weaknesses (as well as native programming) the point is diversity, the possibility to choose. This (among others) makes Symbian OS's position stronger than its competitors': if you can develop for one mobile platform it's almost sure that you can use THAT knowledge for Symbian development, too. One exception for this might be Objective-C on iPhone, but I wouldn't be surprised if that became a reality on Symbian in the near future, too.

By the way, Simon Judge made a quick comparison between different platform development options - it's worth a read. As well as Andreas Constantinou's  post at Vision Mobile - a well-written article about mobile application runtimes for better understanding this world.

Any comments are welcome,

Tote