1. Develop on platform 5

Except you are targeting OS 7 devices alone (and ignoring the higher percent of devices running on lower platforms), don’t go for the latest development kit. That was my first mistake. I downloaded the latest JDE (7) got running and thought that was it. Everything was perfect on the simulator. Then I pushed to my test device (running OS 5) and nothing works. If you do, be sure to download the components for lesser versions as well. My standard for the least OS to support is 5. And my one reason (for now) is simply because of the connectionFactory class. (To that in a bit).

2. The Eclipse plugin FTW

I recommend the Blackberry Eclipse plugin over the Blackberry JDE. The plugin includes more tools and the editor is way better. It features code collapsing, on the fly error notifications and a whole lot of others. Generally, the Eclipse plugin is more flexible and will save you a lot of headache in the end.

3. Sign your apps - its *now* free

You will most likely be accessing some methods in your app that requires signing. To keep you on the safe side when you push your app to real devices, sign it. Signing is a simple thing. Simply head to https://www.blackberry.com/SignedKeys/ to apply for one. 3 certs will be emailed to you. All you have to do is download and run them. You can start with any. Simply follow the provided instructions on run and that’s all.

4. Network Connection and ConnectionFactory class

If there is any part of Blackberry development that is so worrisome, it is connection. Many developers approach to this is to programmatically try and guess which connection method will work and establish a connection based on the discovery (outlined here). However, BlackBerry API 5 features a connectionFactory class that makes things way easier. It is however not enough to assume connectionFactory will try to use all available connection methods. Manually configuring preferred transport types for the class makes things work on some phones.

connFact = new ConnectionFactory();
int [] types = {TransportInfo.TRANSPORT_BIS_B, TransportInfo.TRANSPORT_TCP_WIFI,
        TransportInfo.TRANSPORT_TCP_CELLULAR, TransportInfo.TRANSPORT_MDS,
        TransportInfo.TRANSPORT_WAP2};

connFact.setPreferredTransportTypes(types);


5. Simulators can’t take the place of real devices

Don’t just test on the blackberry simulator. Test on real devices as well. In fact, push online and tell some of your BBM friends to help you download, test, send you screenshots and feedback. If you are using the Eclipse plugin (which you should), you will see a [project]/deliverables/web folder inside your workspace. Those are all the files to push online. The only other thing is you need to add the file types to your server. On apache, it as simple as uploading a .htaccess file containing the following few lines to the same directory containing the files

AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType application/vnd.rim.cod cod


On a final note, grab the Prowork Blackberry application at http://prowork.me/bb/Prowork.jad by simply visiting prowork.me or m.prowork.me on your mobile device.