BREW: Binary Runtime Environment for Wireless
BREW was released by QUALCOMM in January 2001, it enables a single application to function on many different mobile handsets, even if the operating systems differs. BREW applications are developed in C/C++. BREW has an application delivery and billing system called BREW Distribution System ( BDS ).
KTF, Korea's second largest mobile phone carrier, offered BREW services for the first time worldwide in November 2001. KDDI, Japan's second largest carrier, started its BREW service called EZ Appli(BREW) in February 2003, and BREW is used worldwide by 60+ device manufacturers and 60+ carriers in 25+ countries. ( as of March 2009 )
Application developers are now able to develop highly compatible e-mailers, browsers and phone books for BREW enabled handsets worldwide. BREW permits mobile handset makers to concentrate solely on hardware functions, allowing them to outsource application development. An added benefit for the carrier is the collection of fees when applications are purchased from the BDS.
Initially, BREW was middleware working on an RTOS (Real-Time Operating System), called REX (Real-Time Executive). It was intended as an internal library for developing software for Qualcomm's handset hardware components.
When first released, the CDMA 2000 was the only chip platform to have adopted BREW. But now, BREW enabled chips are available on W-CDMA/GSM/GPRS/EDGE/HSPDA platforms.
The introduction of BREW to the World
What is BDS?
BDS distributes BREW applications and bills wireless subscribers. It also has a system for distribution and billing through a BREW API unit known as "Extension". If some bugs are discovered in the application, it can be updated through the wireless network. There is no need to recall any of the mobile handsets.
Objective of BREW
Embedded software developers face two big challenges during application development for mobile handsets.
One is the need to develop many versions of the same application for different mobile operating systems. The other is the huge size of the software needed to run all the added functionalities of increasingly sophisticated hardware. BREW answers both these challenges with a new type of platform.
With the release of BREW 4.0, expected in 2007, all of mobile handsets applications (web browsers, media players, etc) will be made with BREW. BREW will establish itself as a standard in the world of mobile OS.
Strengths of BREW
Compact
Because the BREW environment layer takes such little memory space, even low-end handsets are compatible with BREW.
Extendable
BREW is in essence a collection of APIs, and new APIs can be added through extensions. Third parties may provide these extensions.
Global
BREW's API specification is set to a global standard. Thus, applications developed with BREW will works on most BREW enabled handsets worldwide.
Flexible
BREW applications can take full advantage of handset functions, through assembler intelligence programming functions of hardware control.
Open
QUALCOMM offers a SDK with source code to migrate BREW onto devices such as PDA, car navigations, etc.
Networking
With the availability of TCP/IP, "Push" information delivery and "PtoP" applications, such as instant messenger, can be developed.
Problems and Solutions with BREW
Compression
A BREW application is not ZIP compressed like Java.
Solution: SophiaCompress(BREW)
Profiler
There is no BREW profiler that automatically collects data on speed and memory of an application at its run time.
Solution: Bleuet de BREW
Static and Global Variables
In BREW programming, global variables and static variables can not be used.
Solution: svHacker
SDK Switcher
When there are multiple versions of BREW SDK in one PC, environment path for SDK and extensions such as .mif, .bri, .qsc will be associated with newly installed version of SDK.
Solution: BREW SDK Swithcer
Camera Emulator
BREW Emulator does not have camera emulation function, so programmers who develop application which uses camera interface have to do debugging on the actual mobile phone.
Solution: Camulator
Floating Point Operation and Mathematical Function
The biggest restrictions on BREW are that global and static variables cannot be used. And also there are almost no mathematical functions availabale for BREW.
Solution: Mathematical Function in BREW
C++, GUI and XML
C++ class libraries, GUI framework and XML middleware are not included in BREW SDK.
Solution: SophiaFramework