BlackBerry Programming Is Different
You may wonder why I’ve chosen to create a separate blog, BlackBerry Developers At Work!, to discuss development issues for Research In Motion’s BlackBerry platform. The BlackBerry platform is a Java ME platform, after all, and RIM is on the JCP’s ME executive committee and on several expert groups for important Java ME standards, such as MIDP 3.0. So why treat BlackBerry programming separately from Java ME programming?
The truth is that BlackBerry programming is different in many ways from “regular” Java ME programming. Here are some of the differences:
- Enterprise mindset. Although it’s true that RIM is pushing its way into the conumer market with the recent introduction of the BlackBerry Pearl 8100 smartphone, the BlackBerry platform is still primarily thought of as an enterprise-focused mobility solution. A BlackBerry can be tightly integrated with an enterprise-level messaging system using RIM’s BlackBerry Enterprise Server in a way most J2ME devices cannot.
- Different APIs. Although the BlackBerry supports a number of different JSRs, each device also comes with an extensive set of RIM-specific APIs that are often more powerful and more comprehensive than what you’ll find in those JSRs, including a user interface model entirely separate from MIDP’s. While it’s true that MIDlets will run BlackBerry devices, it’s more common to write a BlackBerry-specific version of an application that uses the RIM-specific APIs than to depend entirely on what’s available in the Java ME standards.
- Consistent and documented deployment model. Unlike Java ME, where application deployment methods vary greatly from device to device, application deployment is handled consistently across all devices and carriers. Want to use certain APIs to access system or user information? No problem, fill out a form and pay a small fee to get your signing key, then program away. Want OTA deployment? No problem. Want to control what applications can do? No problem.
- Different development tools. This surprises Java ME developers, but you can’t just take a Java class file and install it on a BlackBerry. The BlackBerry’s VM is not actually a Java VM, it’s a Java-like VM with its own bytecodes that was developed specifically for the BlackBerry architecture. So Java class files need to be transformed into COD files before they can run. So yes, you can use Ant, Eclipse and/or NetBeans for code development, but you’ll still end up using RIM’s tools (at a minimum, their compiler and their signature tool) to build your application.
Don’t think, though, that all is perfect in the BlackBerry world. The documentation is often maddeningly incomplete, obscure, or sometimes just wrong. The dependency on RIM for the development tools is frustrating (why can’t we have a signature tool that lets you specify the password for the certificate repository on the command line so that we can do automated builds?). The BlackBerry developer community is smaller than the Java ME community at large, making it hard to get in-depth help without joining RIM’s partner program. Every serious BlackBerry developer will have a similar list of “gotchas”.
So this is why I feel it’s important to keep the Java ME and BlackBerry discussions separate, hence the need for two different blogs. If you’re interested in BlackBerry programming, you should subscribe to both blogs, but if you’re a general Java ME enthusiast this blog is enough to read.
Anyhow, onwards and upwards!
Technorati Tags: Java ME, J2ME, BlackBerry, Research In Motion, BES, MIDP

























Good post.
Another interesting point: If your BlackBerry goes through a BES, the BES will automatically convert JAD/JAR combos into CODs for you when you access them from your BlackBerry’s browser.
Yes, and in fact if your carrier has the BIS-B service enabled this will also happen automatically without a BES.
[…] (via Eric Giguere, J2ME expert and author) […]