Android development vs. Blackberry Development

11 Apr

I was contemplating quite a lot about the title for this post. Originally I wanted to give it the title of “Why developing for Blackberry sucks” but then I thought it might be too harsh and does not really reflect the content of the post which is about comparing the experience of developing for Android and experience of developing for Blackberry and settled for the current title. There were other titles revolving in my head, but all of them were just variations of  the original “why developing for Blackberry sucks”

I have been developing for Android for some time and lately I have been working on developing for Blackberry and I must say development for Android wins hands down in all aspects. Many times, especially frustrated with Blackberry buggy IDE or other cumbersome experience I wanted to write this post, but I had to find the time for it.

So what is so bad about Blackberry development? It starts at the very basics – development environment. Google has developed a very nice plugin for Eclipse which works very well and even has the basics of support for visual editing of user iterface screens. RIM – the company behind Blackberry for a long time had their own development environment – JDE. Written using basic SWING components, there’s no need to mention how bare boned and outdated it looked. They have recently introduced Eclipse plugin as well, but it is pretty buggy and half baked. It is hundreds times better than the first version of the plugin, but it is still from being stable and feature rich.

Then we have the emulators – gosh, why do I have to restart the emulator everytime I want to test a new build? It can take up to a few minutes to restart the emulators for the more advanced models. To feel the pain, just imagine the nightmare of programming the UI for Blackberry in that setup. And no, there is no visual helper that can show the layout quickly, not to mention visual builder.

The compiler, or more exactly the packager – “rapc” has many times weird problems and behaves like a whiny child with lots of attitude problems. Same goes for the MDS server emulator.

Compared to Android, this can be nightmare. Yes I’ve had some issues and observed buggy behavior with aapt while developing for Android, but it was quite easy to resolve. For the UI part of the development, Android beats Blackberry as well. Constructing layout using XML is much easier than writing actual Java code. (Apple had actually went one step furthergiving the developers visual tools.)

Localization is much easier in Android as well. Besides conceptually being easy, the support of the Eclipse plugin for localization is half baked and buggy and what’s most important, it is not that easy to find documentation on how to implement localization for Blackberry in Eclipse.

The last but not the least (and in fact probably most important) is the vibrant, enthusiastic and active community of the Android platform. It is so much easier to find answers to any problems you have while developing for Android. I was a little considered about Android being all open source in a sense that there is no central authority with central responsibility for certain things, and Blackberry has all this and it turns out that what many enthusiasts can do, easily outweighs any size company organized or not.

Related posts:

  1. BlackBerry Eclipse plugin 1.1 will fix some of the annoying problems
  2. BlackBerry development with Eclipse plugin – fixing corrupted *.jdp file
  3. What makes blackberry app a super app – summary of webcast
  4. New England BlackBerry Developer Meetup group – first meetup notes
  5. How to speed up Eclipse on OS X 10.6 Snow Leopard

  • FKenFord
    I'm a professional C++ programmer and a Java hobbyist. I found developing for BlackBerry using JDE to be pretty straightforward.
    I've been trying to get into Android development and I have to say within a week I've given up on Eclipse. Maybe it's the "Java" way to go, but I find it so non-intuitive as to be frustrating at best, and exquisitely painful at worst.
    I don't seem to have a lot of trouble developing for BB, using JDE, etc. -- sure, the start times for the emulator are painful. But I gotta say that trying to do anything in Eclipse made me crazy.
    I'm back to developing Android using command line tools, which is not optimal, but which will keep me sane longer ;-)
  • While this article is a little old, most of it still applies.

    Too bad you think this way about Eclipse. Eclise is a great development tool. Like any tool, however, there's learning curve to it. I am sure you would benefit from knowing your way around Eclipse as it has plugins for all the major languages and development environments.

    JDE is on its way out by the way and while you can still use it and it is perfectly fine if that's what suits you. Just know that you are missing a lot.
  • J.Lennov
    What about localization, there are interesting service http://crowdin.net
    to a large extent makes the process of localizing the same for both platforms
  • That's quite an interesting tool!
  • Vit
    Well, I have live development experience for both BB and Android and would not say Android is easier than BB. Both have their good and bad sides. But for now I see that BB is simplier for development than Android. An example - on BB I am able to create a Screen and to fully control its lifecycle while on Android it's the OS who controls Activity lifecycle. Yes, I understand why Android acts like that - it tries to optimize RAM usage to provide better user experience, but the price for that is much more complicated work for developers. And because of that the development process takes upto several times longer (unleses you write buggy app that will work Ok in ideal emulator environment only).
  • Hi Vit, thanks for the insightful comment. First, I agree with you completely that both nave their good and bad traits. Some things can be done more efficiently and are easier to achieve on BB. This post is mostly however about buggy tools and inconvenience of the development process as the process.

    Can you also please clarify what you mean when you say that it is much more complicated to deal with life cycle control.
  • Vit
    Thanks for quick feedback, inteist.

    Ok. Imagine such a case: a user is on some sort of "new user Activity". User should input its login/pass and press "Register" button. On the button press we need to send a post request to a remote server that actually will create a new user in its DB. Based on the got responce from the server we need to inform the user about the result (success or failure (failure details)).

    On BB the algorithm is pretty simple:
    * push a non-cancellable by user progress popup screen "Processing...";
    * do the main job (send request/parse the response) under the popup;
    * close the progress popup;
    * display a cancellable by user popup with result message.

    While doing this we are on the same Screen. It can not be killed by OS. Nothing can break the workflow. That's why it's simple.

    On Android things change. Activity may be killed by OS (1) on configuration changes (that's how they call device orientation changes and hardware keyboard open/close actions) or (2) if Activity is not the one the user currenly works with (for instance, an incoming phone call puts your Activity in background, so it may be killed by OS (and life proves it really does)).

    So, backing to the example, I still can not figure out what approach/algorithm should I use to produce bugless code. Android documentation says there's AsyncTask class that is a solution and there's a usage example of it - http://code.google.com/p/shelves/source/browse/... (note that UserTask class, it was then renamed to AsyncTask). They start the task, cancel on configuration changes and restore it again on Activity restore. But wait a minute, by the second rerun of the task the remote server could already have processed the request and created a user, so on task restore the user may get error message "username is already in use"! They cancel the task, because how to show a popup/dialog if there's no underlying Activity? So, on Android's Activity we should "syncronize" our actions (such as background task threads) with Activity lifecycle bearing in mind that users at any time may cause Activity to be destroyed. That's not easy. I would even say more - it's painful.

    Probably there's some solution I'm just not aware of yet. If you could point me into the right direction I would be very happy. :)
  • Hi Vit

    Allow me to disagree with you that everything is so simple on BB. The scenario that you are describing could easily occur on BB as well I think.

    - The user starts registration (sign up) process, the request is sent to the server and user looses connectivity and never gets a response from the server. Although on the server the request was processed and user was registered.
    - Even with modal "Processing" dialog you can not prevent the user from restarting his phone via battery pull, or it can shut down since battery died, or it can shut down because the user dropped it etc, etc...

    So to summarize, I think this problem is equally relevant to BB and most likely to any other client in this scenario (think of a web browser that looses connectivity just as BB did in my example).

    So never mind on which platform you are working you will have this very problem.


    Regarding Android and its life cycle management.
    http://developer.android.com/guide/topics/funda...
    Yes it is somewhat confusing since there are 7 notification methods any activity can receive, and with great power comes greater responsibility. Most of those methods however are to allow the developer to fail gracefully due to the system reclaiming resources or user interrupting the activity as you rightfully noted. The only overhead I see with it is that you are responsible to save the state of your application if the user leaves it for some reason because the system can kill the activity and then it will have to be started from scratch. I am with you on this, but to get a better system I guess you have to sacrifice something.

    I hope I got what you were saying ;)
    The question that you raised is quite interesting and I will devote more thought to it... It would be probably interesting subject to do more research and write about.
  • Ian
    Actually, I have been trying to learn Android development, but I have had absolutely no luck. Perhaps I don't grasp the entire development paradigm, or perhaps the development environment and tools for authoring really suck big weenies.

    I have been developing for more than 2 decades, and I am experienced and fluent in more than 50 languages and platforms... but I have to admit, this sucker has me stumped. Is there a magic pill somewhere that will empower me to learn Android development? ...or perhaps someone, somewhere, has a nice drag and drop RAD environment ready to go.

    I will keep trying to muscle through it, but it just doesn't look too promising. :-(
    If any hot-shot developers care to teach this old dog new tricks, I would be eternally grateful... and I will definitely make it worth your time.
  • Hey Ian, there is no drag and drop tool for UI development for Android at the moment but I hear that such tool is being developed and we would eventually have it.

    Android ecosystem is very lively with a lot of web presence in a form of forums, tutorials, discussion boards etc...

    The best place to start would be the http://developer.android.com :) good luck!
  • @Igor - 3.5 is supported already (although 1.1 plugin is in beta).
    64bit OSes are NOT supported however. As simple thing as adding a JAR library to your project can not be done in Eclipse (I tried - spent couple days trying - no joy...)

    @android developer
    Yeah - Nexus one should be a great phone, but it will not be an iPhone killer... Android won't be an iPhone killer at least not yet...

    There is a good post I just posted today here:
    http://blog.androidz.info/2010/01/who-will-rule...
    check it out :)
  • In my opinion, the Android is in position to directly compete with the iPhone. With the nexus one coming out early 2010. And their updated app store rumors, Google is doing things right.
  • Igor G.
    I agree with the author of this article. I've been playing around with BlackBerry development for almost a week now, and am considering abandoning it in favor of Android development. Here are just few reasons:
    1) Almost no support for BB JDE plugin for Eclipse 3.5
    2) Very difficult to get JDE working in a Linux environment
    3) Don't want to run a Windows VM solely for BB development. I'd much rather stay in my native Linux OS

    ... And all of this from a guy who is merely a beginner in BB development. I can't imagine the headaches one would have to transcend to become an expert in BB development.
  • anonymous
    I feel your pain.. developing a gui that doesn't look like complete garbage and consists of anything more complicated than a list of checkboxes takes an enormous amount of time and exposes so many quirks in the way fields are rendered it is beyond painful...
blog comments powered by Disqus