Roll Your Own Series 60 Phone Applicationsby John Littler
Recently I obtained the new Nokia N-Gage QD for testing. Because its screen size is larger than that of an average phone, I found myself using a cell phone for email and the Web for the first time. What else could I do with it? I went looking for Series 60 apps and found a small number of commercial apps, including an upgraded email client and an FTP client--pretty handy for dashing out a news item and posting it from somewhere with cell phone coverage but not much Internet. After that, I found a whole bunch more apps and wondered what writing my own would involve.
A Little About Symbian OS
Symbian is a derivative of the Psion operating system, EPOC. It is a 32-bit multitasking OS, mostly written in C++. Symbian must cope with the added complication, over and above the Psion days, of phone calls and messages coming in while another application might be in use. As it says in the docs, "By complying with the platform architecture and software design guidelines, application designers can routinely manage such occurrences in the daily lives of smartphone users."
Symbian Series 60 Phones
The Series 60 platform is a so-called smartphone platform. It features the ability to address larger color screens as well as new features such as MMS messages and Bluetooth.
Series 60 licensees include LG Electronics, Lenovo, Nokia, Panasonic, Samsung, Sendo, and Siemens. Here we'll be looking at Nokia; its models that use Series 60 are 3650/3600, 3660/3620, 6260, 6600, 6620, 6630, 7610, 7650, N-Gage, and N-Gage QD.
Series 40 phones are your typical, everyday phones, able to make calls, deal with SMS, store contacts, and maybe do a few other things.
Being cool little gadgets, smartphones in general and Series 60 phones in particular are interesting for one big reason: you can add all sorts of apps without necessarily having to use a telco. You can write your own applications without having to fork out money for an SDK (Software Development Kit) and a developer's license. I'll explain more of that in a minute.
You're also not at the mercy of telcos for music downloads. Take the case of the N-Gage QD. The original N-Gage was touted as an MP3 player, and it was equipped for it. The QD is not, but by downloading the Helix DNA player you can play MP3s--and transfer them from your computer by way of Bluetooth to store them on the MMC card.
Not so long ago there was a fair bit of discussion about telcos not liking smartphones because they could bypass their revenue streams. At the time, it looked like the telcos wouldn't include those phones in their usual bundles, threatening their rates of adoption. That hasn't happened, partly because the use of GPRS will rise with these phones and partly because plenty of people will use them in an unimaginative way.
Existing Smartphone Apps
Before you go rolling your own apps, it's a good idea to see what is already out there. There isn't all that much available in the way of free, open source apps so far. Rafe's Blog has a sampling at Series 60 Freeware. Available apps include a task switcher, various games (including Doom), an eBook reader, a filesystem browser, and a port of SSH (Secure Shell). As the author points out, there are other unpublicized apps scattered about the Web. Of course, the cost of nonfree Series 60 programs is fairly low anyway.
SymbianWare is one source for nonfree and some free apps. It includes all sorts of phone utilities, some games, and, somewhat bizarrely, the book Lady Chatterley's Lover.
My-Symbian.com has a bigger supply, arranged by category. There are more than 900 programs there, half of which relate to games and entertainment.
Scratch That Itch: Development
While the N-Gage is a Series 60 phone, the games SDK is a whole different ball game. To obtain the games SDK, you'll have to jump through quite a few business hoops, including having Nokia OK your project. That means that you need to have a team with a track record for producing games, a project that they like, and some money. For insights from a Nokia rep on some of the ins and outs of this, check out an interview at Mstation.org.
I haven't seen the N-Gage games SDK, but at a trade show I heard that it makes a lot of things less time consuming, particularly aspects of networking and graphics. I guess the idea is that you pay your 8,000 euros to show your commitment and then recoup the investment in productivity gains.
However, as the normal C++ SDK offers you access to the whole machine, you should in theory be able to do anything you want. There are several possibilities for programming languages.
OPL is a Basic-like language, originally usable only on the 92x0 phones but now available for Series 60 and GPLd. One of the fun things about it is that on 92x0 you can actually develop on the phone itself. For Series 60 phones you need to deposit the developer's pack into the relevant SDK from Nokia (more on that later).
Perl and Python
Perl and Python are both in the wings for development use. How soon they will be available is anyone's guess, but Python is under active development at Nokia, and my bet is that it in particular isn't very far away.
No, really! I hear its performance is somewhere between C++ and Java MIDP. To write VB apps for your phone, you need the AppForge Mobile VB, which runs under Microsoft's Visual Studio/Visual Basic IDE v6.
Java and C++
The two main languages for development are Java and C++. Which of those you use will depend on a variety of circumstances including what the app will do and your experience and preferences. Jonathon Allin, Symbian's Java technology manager, said in an interview with Developer.com that where performance is paramount, C++ will be used for quite some time to come.
One pleasant thing about Java is that the tools you need are available for Linux and Windows, whereas the C++ SDK is available only for Windows. There are ways around that, though.
Naturally enough, a full JVM won't fit all that well on a cell phone. Instead, the answer is J2ME (Java 2 Platform, Micro Edition) which provides the much smaller KVM. When programming for these devices, you'll deal with MIDP, which is an extension of CLDC. You might not have heard of any of those, but you can read up on the Web and in print. As it happens, O'Reilly's Learning Wireless Java by Quasay H. Mahmoud is a nice, succinct programming guide with a useful overview chapter. The book is missing some things, though, as it's based on version 1.3 of the J2ME (which is now at version 2.2).
If you go this way, you can use Sun's generic J2ME toolkit or, since we're looking at Nokia here, the Nokia Developer's Suite for J2ME, version 2.1. This new version includes a GUI builder, which has the ability to accommodate tiled layouts for games as well as application deployment over Bluetooth.
On the Web it's easy to find comments by Java developers to the effect that the KVM is so limited, in terms of what they know, that they'd rather not use it. For beginning developers who'd like a crack at these devices while developing on Linux, Java is certainly an easier alternative than C++, but you lose in power what you gain in ease. Specifically, MIDP cannot exchange data with other applications, can't deal with cameras, and doesn't know about TCP/IP. If you're thinking about something like a simple, nonnetworked game, Java might be appropriate.
Having introduced forum.nokia.com in an URL, it's worth more discussion. This site is the official center for Nokia development on the Web and has a wealth of documents and downloads, including a big variety of SDKs. In order to download an SDK, you need to register and join. This is a straightforward process and looks to me as if it's automatic--that is, no one checks on your previous development experience or whatever.
While that article concentrates on Series 60 phones, there are also sections for the 40, 80, and 90. Series 40 represents not-so-smart phones, while 90 is a rich media platform (the featured phone is the 7700) and 80 is the Communicator.
If you already have C++ skills, that's probably the most appealing way to start out programming for these devices. If you don't have those skills and think that a phone platform might be a good and easier place to learn, you might be right about good, but not easier. It's a qualified good as well, because you would be learning aspects of C++ in a very particular environment, which sounds a lot like bad once you think about it. Nevertheless, if your aim is just to work on the platform, then why not? Two big differences between Symbian C++ and C++ in other environments is that the former strictly controls memory management and string handling is different. You'll also deal with the Symbian API instead of the normal base classes.
Pages: 1, 2