Citat:
A Closer Look at bada
Last updated Jan 1, 2010.
On December 8th 2009, Samsung announced a new mobile OS called bada that supports C++. Here I will outline the design and architecture of bada, and discuss its chances of conquering a respectable share of the saturated mobile OS market.
A Four Layered Architecture
Bada ("ocean" in Korean) is a new smartphone platform that allows developers to develop C++ applications. Bada is not an operating system in the strict sense, but a four-layered architecture, or platform that consists of four layers.
All mobile operating systems use a layered architecture because such a design is more portable and secure, and it also enables vendors to extend their platform easily.
At the lowest layer of the bada platform lies the kernel -- a Linux kernel or a real-time kernel, depending on the hardware.
The device layer is built on top of the kernel. It implements the core functions of system management, security management, graphics and windowing system. The device layer also includes the data protocols and telephony, as well as audio-visual and multimedia management.
The service layer comes next. It implements service-centric functions provided by application engines and web-service components connected to the bada server.
Finally, the framework layer exports the C++ API. It's similar to MFC in Windows -- a framework that provides high-level APIs for accessing lower layers of the operating system and its hardware. Application developers will focus on the framework layer, whereas hardware vendors and mobile carriers will focus on the three lower layers.
A C++ Mobile OS
Bada uses C++ as the development language for its applications. Bada isn't the first mobile OS that supports C++. Symbian has been doing that for a long time, as so has has Windows mobile. However, bada is strictly a C++ platform. It also comes with a rich set of C++ APIs for face recognition, credit card payments and several other utilities that will give it a competitive edge (you can see a demo bada application here). Bada uses a subset of C++ which excludes exception handling (exception handling appears to be the first feature that vendors tend to drop) and it's not clear which portion of the Standard Library it will support (bada developers will certainly not not miss std::wclog and std::binder1st I'll wager!)
Does bada Stand A Chance? Is it worth investing in bada?
Before answering this question, you need to ask yourself why C++ hasn't been a popular development language in the mobile market thus far. The frequently cited excuse is: "C++ is too complex" but that's nonsense. If C++ is good enough for developing server applications, operating systems and just about any database engine, among the rest, how can it be unsuitable for mobile apps? Just because it doesn't have a GC? The size and complexity of C++ are a non-issue because every mobile platform uses a distilled subset of the core language, often omitting STL, exception handling and several other features that get in the way (namespaces, anyone?) . It's worth reminding C++ critiques that even Java uses the same strategy: roughly speaking, J2SE, J2EE and J2ME are three different languages where one is superset of the other.
I suspect that the main cause for the under-representation of C++'s in the mobile market is the lack of funding. Java has succeeded in the mobile arena because Sun has poured billions of dollars on promoting Java technology very aggressively during the past 16 years. Java is certainly not an ideal language or platform for mobile apps (if anything, a scripting language would be a much better choice), but when a giant company promotes its technology with unlimited funding for such a long time, the big bucks talk. In 2010 things are starting to change, though. Sun is now history, and for the first time in more than 10 years, C++ is enjoying the funding and backing of Samsung, a global giant. From what I can tell, bada has the right tools in its arsenal: cool C++ APIs, a sleek IDE, and Samsung's endorsement -- all that's needed to ensure that bada users have access to the latest market trends (touchscreens, application stores). There's no reason why bada shouldn't reach a remarkable market share in the next 2-5 years, provided of course that Samsung retains steady and generous funding for this ambitious project. Put more bluntly, for the first time in years, C++ has a chance to prove what I've always believed and known: it's much better than Java even as mobile app development language.