Samsung has been showing its first Bada phone, able to download applications from Samsung's version of iTunes and nowhere else. But will Bada really challenge Apple and the iPhone?
That's clearly what Samsung has in mind - Bada is a closed platform owned and controlled by Samsung, and Bada applications have to be approved by the company and are all sold through the "Samsung Apps" store. Bada is supposed to enable smart-phone functionality at feature-phone prices, and the comes with a comprehensive development platform even if it's somewhat lacking in imagination.
The ability to download new Bada apps is central to the Wave
The Wave is Samsung's first Bada-compatible handset - we don't know what the retail price will be but the specifications suggest that the feature phone price is still some way off unless Samsung decides to sell the Wave as a loss leader. The first Bada handset has a 3.3-inch-AMOLED screen with capacitive touch sensitivity, 2GB of RAM, 8GB storage and a 1GHz (snapdragon) processor - that's roughly what Microsoft is asking for its Windows Phone 7 Series handsets, so not really low-end territory.
But the Wave is intended to be the first of many Bada handsets, and Samsung is quick to point out that Bada will feature in "a significant" proportion of the 100 million touchscreen phones Samsung intends to shift in 2010 (having sold 40 million in 2009), so there should be a few customers prepared to buy Bada applications for the next couple of years at least.
Not that all Wave applications will have to be Bada - the handset also supports Java (MIDP 2.0), and there's some support for OMTP widgets though the extent isn't clear yet.
But we're interested in Bada development, which is done using C++ with the Bada SDK and associated Eclipse-based IDE, both of which can be downloaded from the Bada Developers' site.
Bada's approach to C++ is suitably modern: no multiple inheritance, except of interfaces, and no object properties - everything's fully encapsulated. The latter requirement might make porting applications onerous, but only if you've let your developers (or yourself) slip from best OO practice.
One thing at a time, unless you're Samsung
The Bada platform doesn't do multitasking, at least not between downloaded applications. Local applications (preinstalled) can multitask with one Bada application at a time, which means the developer has to deal with the whole background/foreground thing without the advantage of proper multitasking.
When an app pops to the front, or drops to the back, there's an event notification, but there's no mechanism for the application itself to request foreground status - you'll have to wait for the user to select your app through the task manager or by launching the app again.
Applications can be closed by the user hitting the End key, when another Bada application is launched, or if the underlying system thinks it's short of resources. But there's a decent notification system along with mechanisms for application-state storage and retrieval.
Once an application is running it can access the usual range of libraries: containers, panels, menus, etc. and including OpenGL ES for 3D graphics. Functions for embedding Adobe Flash content in an application are also available, but most interesting is the range of "Social" APIs.