When developing applications for mobile devices you often find the need to use a rapid application development (RAD) platform to achieve your goals and meet the time to market requirements for mobility projects. I have been developing mobile applications for several years now and I have seen many development platforms/frameworks. There are many reasons why you often need to take use of a platform/framework; wide device support, rich and flexible UI, secure and reliable communication, back-end integration and so on. If you were to take care of all these challenges by your selves the application development project would be expensive and time consuming. This post is written with large commercial enterprise applications in mind.
You should be very careful when selecting a platform for your project, by selecting the wrong platform your in for failure. The most important you need to do is to define your needs and make sure that the platform your are choosing fulfills those (or at least the most of them). Many companies/developers have different views on how to develop mobile applications, make sure that your chose a platform developed by a company that shares your view on this.
No matter what OS, programming language or technology you are using I think that flexibility is the key word. Do your self a favour, chose a flexible platform. By flexible I mean that even tough you are using a third party platform you must be able to chose when to use the platform functionalities and when to do custom coding. The platform should be easy to build functionality on top of (extending) and you should be able to switch between the platform API and the Standard API (Java ME, Compact Framework etc.).
I have been on both sides, I have been developing a RAD platform and I have been using third party platforms. I worked for over three years in the core development team at mBricks AS. mBricks is a RAD platform for developing Java ME applications (also supports Blackberry and Android). In my opinion mBricks is a great platform because of the flexibility it offers. If I were to develop a Java ME application there would be no doubt in my mind what platform to chose