I have been reading lately more and more about apple and the Apple iPhone, and more specifically around the developer experience. More and more I am formulating some thoughts on my perception of writing a application on the device and what seems to me to be great limitations.
- Lack of community interaction on development. Legal NDA’s imposed by Apple make collaboration difficult , though not impossible with subcontract workaround.
- Costly distribution model. With Distribution handled by Apple other sales and marketing efforts are hindered, such as introducing a BP community into the mix
- Application verification process, and the type of applications that can be developed.
With the Apple having ultimate control on the types of applications that can be created and the capability to easily remove from both the Store and users iPhone’s applications installed I am bothered because ultimately apple now controls the level of external innovation that can occur. It also makes you wonder if a great Idea comes before apple, if they will take the high ground and let the developer distribute it, or indeed make a clone under the guise that it was something they were already working on.
Now I have developed for both Windows Mobile devices and also RIM BlackBerry devices. Each have their strengths and weaknesses but from a developer standpoint these platforms are more open.
RIM provides the JDE free of charge to developers, Documents can be downloaded from their web site and Forums are available for developers to collaborate and discuss development Issues. I have been to one of their developers symposiums in Waterloo and for the 2 days that the event went on, the discussions were quite open and frank. If you do not like developing in the JDE (feels dated to me) you can even use eclipse. There are also multiple ways to develop for the device including a plug-in into VS. For the most part you are pretty free to develop without intervention from RIM. When you do decide to deploy your application to a BlackBerry you will need to get a Signing key which allows access to protected device functionality.
My wife recently started here career as a Real estate agent and I have to get her a device.When I pick hers up I have decide to upgrade mine as well to a BlackBerry bold. The BlackBerry I have now is a 8700 that I got when I was at the RIM conference some years ago. I am looking forward to trying some development on the BlackBerry Bold and working with some of the newer API’s. I really wish that there was a native database engine on the BlackBerry, that would have cut down development costs and shortened time to market. A large amount of effort really was/is around data access and when I last looked generally fairly primitive ways of storing/retrieving data were available on the BlackBerry device. I could attribute most of the difficulty in developing with the platform for the DB and distribution needs.
Microsoft provides a butt-load of information on developing for their mobile platform. There are forums on the compact framework and large community efforts around development on the devices. Visual Studio is the development environment here, though you could actually use the command line. The toolset in my opinion are the most mature and can get a developer up and running in the shortest amount of time. What I really like about the process is the single install to get everything working. I also like the desktop parity where I can re-use much business code. Now that Microsoft has also released a desktop version of the SQL CE database engine it is possible to also re-use data access code between the mobile and smart client application. In my experience Windows Mobile and CF provide the best developer experience and because of the pliability of the platform it is actually easier to try new ideas with less developer costs.
Now each of the platforms (iPhone, BlackBerry, and Windows Mobile) a different development language is used. On BB and WM it is possible to develop in Java but that limits the potential of the WM solution going back to J2ME limitations. When I first got started developing mobile solutions I looked at a client application implemented in Java on a Windows Mobile device and honestly the performance was absolute crap. For me it did not matter if it was in the runtime, or the processor on the device or memory or any of the other variables, it just sucked. Scrolling down in a window would display so many paint defects that It soured my tastes of java on a device.
Later on when I got into BlackBerry development I saw an implementation of Java that was much faster but was also very limited on what you were allowed to do.
Apple pushes the developer to use Objective-C. I have to admit that I have little knowledge of this language. I have largely worked in C#, VB.net, Java but have not had the time to get into developing on the Mac. The other issue I see with Apple is to develop for the iPhone you have to do so on Apple hardware. By all estimates hardware costs can be 2x that of PC hardware. I do own a MAC and will try the platform to formulate more first hand experience as soon as I get some quality free time.
Now I have looked at Amazon for books on developing for the iPhone and it does look as if there are books available or will be available shortly. This is good news and I will pick up some up to bootstrap the process.