Symbian Break in Binary Compatibility

Symbian has recently announced v9 of the Symbian OS. This creates a break in binary compatibility which means older programs won’t run on new Symbian v9 devices (due in the second half of 2005). At the same time Symbian has tightened up application security. What does this mean for developers?

Version 9 of the Symbian OS brings with it the capability to be run on the latest TI and Intel hardware architectures. It’s anticipated that this will allow it to run on lower end phones. In time, we should see a much larger installed base than the 14.38 Million devices that were sold in 2004. For comparison, IDC estimate there were 194.3 million phones shipped in 2004 which meant that Symbian had about 7% of the market. Symbian has plans to ship 70 million handsets in 2008.

I don’t see the binary break in compatibility being a big issue in the longer term. Microsoft did something similar with the Windows CE Pocket PC OS when it moved from MIPS and SH3 to ARM. In the short term there will be a shortage of applications and consumer uncertainty as to what programs will run on which phones. However, within a year or two this will be largely forgotten. For developers, this will be the end of the line for their applications if they choose not to recompile under the new compiler/tools. For those who continue, there will be new opportunities and the added complications of supplying multiple builds of a product to provide backward compatibility.

In terms of development, the biggest changes involve security. As is the case now with J2ME, each C++ application will have its own private file store. There will be restricted access to things such as SMS, MMS, Telephony, Bluetooth, PIM data and the location API. In some cases, prompts to the user and in others Symbian Signing will allow access to the restricted features. Developers will have to obtain a ‘developer certificate’ via Verisign/Symbian to allow unrestricted development on production phones. In addition to this, I expect most non-trivial applications will require Symbian Signed. This may have the effect of marginalising Symbian C++ development. However, as the competition (read Microsoft) is also introducing stricter phone application security, both platforms will become equally more difficult to develop on from a security and signing viewpoint.

Another change is that a Symbian program will now be an exe rather than dll. This means it’s now possible to have static data (if you really must as it’s not good programming practice) and C++ exception handling.

It’s important to remember that building/deploying/security of mobile JAVA (J2ME) remains largely unchanged with v9 of the Symbian OS. In fact, as J2ME becomes more powerful using it instead of C++ will become more compelling.