views:

186

answers:

4

Recently I have to develop on mobile phones using Java and I am planning to do the development on the following brands:

Nokia

Samsung

SonyEricsson

Motorola

LG

I've browsed the "developer site" of each company and looks like they all have provided their own SDKs for J2ME development.

I am really new to this field and I have a few questions:

  1. Since they all support Java platform, why do we need additional Java SDKs?

  2. What can I benefit from the SDKs?

  3. What determines whether I should use the SDKs or not?

Thank you and looking forward to your reply~

A: 

I would do most of my development with the regular old Sun..err...Oracle Java WTK, and then if you need to do some testing, get the emulators/SDK's from those companies. Other than that I'd mostly avoid them though.

David N. Welton
A: 

Benefit from vendor-specific SDKs is only if you want to use vendor-specific APIs. In most cases Sun WTK would be enough.

As for testing purposes, I would not suggest to rely on emulators. You better try on-device testing. Nokia and Samsung provide remove device access for recent devices. And you can also try deviceanywhere.

Pavel Alexeev
+2  A: 

It all depends on how complex the application your want to develop will be.

Developing a basic application to run on that many different handsets is doable but complexity will increase exponentially with each advanced feature you add, especially if you want to target existing, old and upcoming devices.

What you also need to consider is that each manufacturer can support several operating systems and platforms.

Nokia has Series40 (3rd and 5th editions), Series60 (2nd, 3rd and 5th editions), Series80.

Samsung has at least 2 major versions of their own platform and the last 2 editions of Series60

SonyEricsson has 3 major versions of their JP8 platform (and JP7 too), Series60 5th edition, UIQ 2.x and UIQ 3.x

Series80, Series60, UIQ 2.x and UIQ 3.x are based on the Symbian operating system. Different versions of Symbian OS have used different JVMs and several companies have contributed JSR implementations.

Motorola has at least 2 major versions of their own platform and a couple UIQ devices

1 - Since they all support Java platform, why do we need additional Java SDKs?

The major problem of J2ME is fragmentation. For a variety of reasons (both good and bad, both technical and commercial), the Java promise of "Write Once, Run Anywhere" is largely considered utterly unfulfilled in the mobile industry.

Many functionalities need to be coded in a platform-specific way if you want the same code to work on many platforms at once.

Many J2ME platforms also add non-standard APIs, properties, configurations, "bugs"...

Most importantly, manufacturer SDKs are supposed to allow things like on-device debugging or MIDlet deployment over USB. They provide basic or extended tools that help on-device testing because that is an area where a generic WTK should typically be lacking.

2 - What can I benefit from the SDKs?

Very probably, yes. Ok, so, most of them will only run on a Windows desktop computer but the SDKs themselves should be free.

3 - What determines whether I should use the SDKs or not?

Start with the WTK. When you realize you're trying to do something that is specific to the handset manufacturer, get the corresponding SDK.

One example: The WTK PDAPDemo sample application contains a rudimentary filesystem browser. It displays widely different results on different platforms.

As suggested by Pavel Alexeev, DeviceAnywhere is a great tool, assuming you have a proper test budget. Nokia also offers something similar but that is obviously limited to Nokia handsets.

QuickRecipesOnSymbianOS
Thank you very much
Mickey Shine
A: 

Built in camera functionality typically differs between different brands of phone and the API's provided can be very helpful when trying to do anything more advanced than take a simple snapshot. SonyEricsson phones for example will allow you to display a camera feed through a VideoCamera directly to a canvas which is very fast but does not not allow you to control how frequently the feed is drawn to the screen. In order to draw graphics on top of the video feed without excessive flickering you need to add the OVERLAY flag (1<<8) to the VideoCamera's initDisplayMode() call, not all brands support the additional flag.

Colin