I have been playing with Symbian OS S60 recently. It has been a while since I did. And this exercise has reminded me that the Symbian OS is pretty neat and well thought. Symbian OS is a C++ / Object Oriented OS from the “ground up”. Its programming model is obviously OO using C++, and is MVC-oriented, with good memory management practices.
Symbian OS has its idiosyncrasies such as the use of descriptors for strings and buffers, programming structure (MVC, Cleanup Stack, Two-phase construction, Leaves, Active Objects) and naming conventions that new developers will find “different”. From the UI perspective, depending on the vendor Nokia vs. Sony Ericsson who both use Symbian OS, there is the Series 60 (or Series 80), or UIQ UI APIs respectively, and both UI APIs follow similar OO programming model.

The current version of S60 SDK is Second Edition, Feature Pack 3, with the Third Edition
coming soon. You can find the S60 SDK here. And the S60 CodeWarrior IDE here.

You can read more about UIQ here. And about S60 here.

Now, I have to say that as the Java ME platform continues to mature, the decision to go and develop in native C++ vs. Java becomes more difficult — just check out S60 a Java ME platform on Steroids. While the Symbian OS (S60, etc & UIQ) platform/native API is (currently) ahead in functionality to the Java ME platform/API, for example in the UI API itself, communication, storage, browser and other APIs, again, the decision of Java vs. Symbian will become harder and harder over time, especially when considering portability across handsets. In any case if you are targeting Symbian OS handsets, it is good that you learn and understand the native platform as it will allow you to create feature-rich Symbian OS-specific applications.

ceo