Print

Java, C, J2ME, and BREW

Embedded Devices

When working on embedded devices, I occasionally do some C programming. Writing a driver allowing downloading images from a digital camera into an 8-bit Microcontroller required even some assembler coding. Anyway, besides those adventurous expeditions I'm pretty much a hardcore Java coder - if you hadn't heard.

Mobile Devices

Sun Micro's Java Micro Edition (J2ME, Java subset for small consumer and embedded devices with limited capabilities) and Qualcomm's Binary Runtime Environment for Wireless (BREW, runtime environment running at the firmware level (CDMA chipset) and available only to CDMA-based wireless devices sporting Qualcomm processors) are the two technologies at hand when developing an application targeting a mobile device. J2ME and BREW compete on the execution platform (phone, PDA, etc.) but also through different distribution and billing systems as well as through their respective developer communities.

But there is a lot going on currently in the mobile devices space:

As a Java developer, I find that J2ME is the right choice for a range of small devices including mobile phones but I guess BREW has its own advantages when targeting wireless phones. Like afore mentioned, sometimes one has to leave the platform of choice, i.e. to fulfill performance requirements. BREW is tightly integrated with the chipset, which results in performance advantages and access to low-level functionality. But even with the news from esmertec, BREW somehow still has this kind of anti-GSM, anti-Java aura. Even if some operators choose to deploy esmertec's JVM for BREW, which would enable Java developers to take advantage of the BREW distribution system (to easily monetize and distribute their Java applications) will it really make a difference?

Sun, which recently acquired Pixo, has rallied the Java community to standardizing on J2ME. Qualcomm provides the BREW C/C++ SDK easily integrates with Microsoft's Visual C++ development environment, a tool that most Java developers have kissed good-bye a long time ago.

Common Ground

We have seen that with BREW acting as a layer below a JVM, it is possible to download and run Java applications on BREW-enabled devices. However, adding another layer on to embedded devices with limited capabilities should require extra processing requirements. Does this all matter? You tell me!