What BREW Isn't
So, is BREW an operating system or a virtual machine (VM)? Neither. BREW is a layer of abstraction that sits on top of the embedded chip's operating system and provides access to some low-level functions, environment variables, and subroutines. It's not a VM because it doesn't act as an interpreter. A Java VM interprets the bytecode of a compiled Java program class file at runtime.
On the other hand, BREW is like embedded development in C. Unlike with J2ME, a developer can write C code that will be compiled directly for an ARM processor in a highly constrained environment. This makes the BREW-compiled code more efficient both in size and execution. Developers can write a full-featured mail client in BREW for less than 50KB. BREW also allows access to system-level functions, such as integrating applications with the TAPI interfaces. For example, consumers can make a voice call from within a BREW application. This is impossible in the J2ME environment.
BREW also isn't a browser or a browser-based service, such as i-Mode. A browser is a program that allows the user to view or download content from web sites that are written in a specific markup language. For example, i-Mode uses CHTML for delivering data and services to the devices. This implies that what you can do with i-Mode is limited to the CHTML tag set, and generally the applications require a device to be connected to the i-Mode server. With BREW, the connected state is totally dependent on the functionality of the application and has little to do with the BREW application platform. A developer can write a browser in BREW to do what i-Mode does, but that's not a function of the BREW platform.