Linked by David Adams on Mon 26th Jul 2010 01:13 UTC, submitted by Al Sacco
PDAs, Cellphones, Wireless CIO.com highlights a number of new multimedia features in RIM's new BlackBerry OS, which used to mostly business-focused.
Thread beginning with comment 434597
To read all comments associated with this story, please click here.
Why Are Their So Few Good BB Apps?
by Gunderwo on Tue 27th Jul 2010 17:22 UTC
Gunderwo
Member since:
2006-01-03

Disclaimer: I have not yet reviewed the BB OS6 as I now develop on Android but I am very familiar with the BB API from 4.0 up to 5.0.

Unlike most of the people who have commented I've done a lot of actual BB development as well as a lot of other mobile development and the issue isn't C/C++ vs Java. The problem with the BB is the API and the absolutely atrocious documentation and development tools available to BB developers.

Unlike the iPhone or Android the API to draw anything more sophisticated than extremely basic and ugly controls you have to override and implement them yourselves by drawing directly to a graphics context object. Not only that but you also need to figure out their half ass documented event API which involves creating as bunch of anonymous inner classes to handle actions, focus events and touch events. The whole API as it stands leads to a lot of untestable massive classes for most programmers because a lot of people I see writing BB apps are nothing more than hackers who wouldn't know object orientation, code separation, testability if it bit them in the ass. Not to mention the examples presented in the RIM docs are of the basic hello world complexity. Hell the docs actually discourage the use of interfaces and recommend you use as many static methods as possible.

Now on the iPhone and Android side of the fence you see complete integrated IDEs. Full debugging, unit testing using modern IDEs like Eclipse and XCode. The RIM IDE is horrendous. It makes turbo pascal 5.0 look modern. Or if you want to use their Eclipse plugin expect to have 2 minute launch times for your simulator. And good luck trying to debug with an actual device without pulling out your hair. Hell even including an external library can take a beginner hours of scanning through forums and asking a non existent IRC community for help. Lord knows RIM won't help you.

Then there's the data storage issue. iPhone and Android support SQLite (I know 5.0 does support SQLite but the last app I wrote was completed last February and to this day 90% of devices are on 4.x so using SQLite wasn't an option). So on BB you need to create your own record model and deal with persistence yourselves. Not to mention the complexity of having to work with object handle limits and then object pools to overcome those limits.

So basically to write the same app in BB as on iPhone or Android you need to spend a lot of extra time meticulously separating your code into a good structure that is almost counterintuitive to the way the API is structured. Android and iPhone impose a solid MVC type structure upon your apps. You'll also need to create your own set of custom controls that are supplied for you for free in iPhone and Android. Then you need to figure out how to deal with the event model which needs to work for touch, trackpad and track ball navigation. And finally you need to write your very own persistence layer and implement your own searching, filtering etc... all of which if you were on iPhone or Android you would get for free in a standard SQL database.

So basically the same app on BB will take 3 to 4 times the resources to build and if you don't have a competent developer with a lot of experience it will suck anyways.

So regardless of the language your using the true problems exist because RIM has done the minimum possible to support anything but the most basic of app development for several years. Maybe 6.0 will address a lot of theses issues but we will still need to wait at least another 3 years until the majority of BB devices run 6.0 so if you want to write a BB app that targets more than just a few new BBs you better stick on 4.x and all the restrictions I just mentioned.

Reply Score: 2