State of Java ME development
OK, I'm frustrated, really frustrated. I'm just going to let it all out, right here, right now. I'm not pulling any punches.
After JavaOne, I was excited about Java ME development. The new phones looked great, and the Java ME functionality using CLDC 1.1 and MIDP 2.0 looked like a great starting point for me to begin writing something fun. I particularly liked the JSR 209 spec that adds Swing UI features to CDC implementations...but that's another story that I'll tell later.
Last week, I decided to change my cell phone service. I chose Cingular and ordered the sleek Motorola Razr V3. I picked Cingular for the GSM network and the Motorola Razr V3 because it supposedly supports a CLDC 1.1/MIDP 2.0 implementation. OK, it looks nice too.
The phone arrived yesterday, and as I thumbed through the Java Settings, I noticed that this particluar phone has CLDC 1.0 on it...the version information on the phone says so. The Motorola site says the phone has CLDC 1.1. The Motorola "MotoDev" site has documentation referring to CLDC 1.1 on this phone. So, knowing that I want to experiment with the improved Calendar, Date, and Timezone classes in CLDC 1.1, I began researching how to update the phone.
Update the phone? I thought it would be an easy task. Just call Cingular customer support and explain the problem. Right...no way. The customer support staff don't know anything about Java, and they can't guarantee that a new model will have the newer CLDC version either. Oh wait..."you bought your phone through the business department's 'premiere' service accounts," the alleged support agent says. "I'll have to transfer you there for further help." Click click...pause...pause...and then "If you'd like to make a call, please hang up and try your call again..." They hung up on me!
I redial, and the agent quickly notices that I should be handled by the Web Orders department...she's going to transfer me again. I'm nervous, having been dumped earlier. After a couple minutes, the Web Orders department answers. After I describe my situation, she said "I'm sorry, usually customer service handles these calls. Let me transfer you to them." Uh, excuse me, I said...I just got transferred to you from there. "OK," she says, "but they are the only people that can help you." OK, fine. Go ahead, transfer me. Click...click, click...pause...and then again "If you'd like to make a call, please hang up and try your call again." What the hell? No way, they did it to me again.
I'm just about tired of this by now, but I decide to try one last time. This time I get transferred smoothly to the Web Orders dept. But this time, there's little conversation. "You'll have to contact Motorola to get the Java update," the support staff says. "But I bought the phone from Cingular," I said. "Don't you support the phone." "Yes, we do," the Cingular person says, "but you'll have to get the Java update from Motorola." I hung up and called Motorola customer support.
Those Cingular folks are really dumb, I thought. These MotoDev guys at Motorola will be better. They are developer support after all...they'll help for sure.
"Oh, hi. I need to find out how to update my Motorola Razr V3 Java software to CLDC 1.1. The phone is supposed to have this newer version, but the installed software is 1.0," I explain. "How can I update this phone?"
OK, I'm going straight to the punchline now...after being transferred around Motorola twice and hung up on twice, I was told by Motorola that I would have to get a Java update from Cingular. I'm sitting here now, having wasted a full day on the phone. I'm tired, I'm frustrated, and I don't have a cell phone with the Java ME implementation I want. No one can help me...and I don't even have the Mobility Pack installed for NetBeans 5.0 yet. Hopefully, that will be an easier experience.
Is this common? Please, someone tell me that my experience is just a bunch of bad karma coming back on me...this doesn't happen to everyone, right? How can anyone do any Java ME development in this environment. Yes, I see the Wireless Toolkit this, and the Mobility Pack that, and the CLDC 1.1 implmentation there, and so and so emulator is available...but what about the actual devices with real implementations? Do they exist? Where? And can anyone actually help you get the right device and software combination? This is too hard.
At the JavaOne conference, I overheard a big shot executive describe the numbers. Over 200 million cellular phones annually, etc. "If you could just get 5 cents from 1/10 of those cell phone users...you could easily make millions. Why would anyone not write apps for cell phones?" he asked.
Hey, big shot Motorola guys! Hey, big shot Cingular, Sprint, Verizon, and anyone else! Look over here! Yeah, down here! How am I going to make any money from it? I want to write a Java ME app...and I can't even pay you to give me the right equipment and software!