I’ve spent the last 10 years doing web development and little else. This year, I’ve vowed to get more experience outside of web development. After hearing some of the cool stuff happening in the mobile space, I decided I’d like to do some mobile programming. There are tons of cool applications for this that I felt I could use in everyday life, somewhat unlike web development. For example, why not use the positioning capabilities that most new cellphones have to make some cool integration with Google Maps on my cellphone? Why not use the same software to let friends know where I am so we can find each other easier when we are meeting somewhere? Or, perhaps I can use the Bluetooth capabilities to integrate with a home automation system.
With all these possibilities and more, I’d wondered why there weren’t more tools along those lines instead of the mass of silly games, wallpapers, ringtones, and other stupid things. Well, after trying out J2ME programming, I now know why.
I started out looking for a phone with decent Java capability. Mostly, I was interested in JSR 179 (location services) and JSR 82 (Bluetooth) APIs. I found the Nokia N75, which according to the website does support those APIs and more. I stopped at the Cingular store on the way home and picked one up after work. I got home and downloaded NetBeans & the NetBeans Mobility pack for J2ME. I found that using the location API was very easy (a simple output of coordinates took only a few lines of code) and had a small J2ME app running on the emulator in no time.
I transferred it to my phone and immediately got a LocationException. Several hours of searching led me to developer documentation from Cingular. As it turns out, most of the APIs are disabled or severely restricted. For example, Bluetooth (JSR 82) is only allowed if you have a Cingular Premium cert, which is confusing to even understand how to get in the first place, but it appears you have to be an enterprise partner already and pay $1,000 to have Cingular test your app. Location services (JSR 179) are disabled altogether. PIM, SMS, and internet connectivity services are also heavily restricted, with most things requiring at least a 3rd party cert ($500 or so per year) to use.
Cingular claims this is for safety and privacy reasons, which I can understand to an extent. However, why can’t I, as a seasoned developer, manage those settings on my own phone? Why can’t I choose to allow programs that I’ve written have access to Bluetooth services or location services? In the end, these onerous requirements make it virtually impossible for hobbyists and enthusiasts take advantage of all the JSRs that the phone itself fully supports. It is extremely frustrating that the technology needed for us to do some cool things with mobile devices is there, but we can’t use it simply because Cingular has chosen to make such functionality unavailable. Unfortunately, some research shows that most US carriers have restrictions similar to Cingular’s.
Ultimately, this is less about the safety and privacy of Cingular’s customers and more about the safety of Cingular’s revenue. By limiting who can access the features of the phone, they can make sure they get their cut. This, unfortunately, leads to the dearth of really useful mobile applications we see now. If you want to spend $5 on a dumb little game or $2 for a ring tone, though, you are set.
7 Responses
Tiffani
May 27th, 2007 at 8:35 am
1Yeah, it really is a crock. I’m tired of the lame applications that are out there, too, but like you highlighted, the carriers make it as hard as they can to develop much else. It can be done, but it’s going to cost money.
You’re off to a decent start messing around with emulators, but that’s going to be a frustrating can of worms to open when you start (if you continue on the mobile development path) officially moving your mobile apps from the emulator to a real device. I say that because the functionality on the emulator often *does not* reflect the way it works on a real phone. Device fragmentation is something carriers, mobile manufacturers, and in a way, mobile software developers, are going to have to get together to fix. I always complain about JSRs (which I guess I mistook as standards) and how the implementations differ from one device to the next (even within the same manufacturer I’ve seen different implementations of the same JSR) and how they don’t make things any better.
Mobile development is promising, but it’s got a while to go. I’m still chugging along with an app I’m building, but it’s not easy. Perhaps, it will get better when companies get smarter.
home automation » Blog Archive » The hidden problem with J2ME
May 27th, 2007 at 2:54 pm
2[…] …more […]
Jeremy O'Donoghue
May 29th, 2007 at 12:21 am
3If you’re going to do this sort of thing you really need to get an ‘unlocked’ phone. This is unsubsidized by the operator and doesn’t have functionality disabled.
You’ll pay more, of course (your N75 would probably cost ~$500). In the UK, Expansys (www.expansys.com) is a good source of such devices. Many devices sold in Europe are compatible with US GSM networks (look for 1900 MHz and 850 MHz band support), so this may be an acceptable route for you.
You still have the certification costs if you want to sell your application on, of course. I agree it sucks, but it won’t change while operators subsidize phones (and consumers accept reduced functionality in return for the lowered price).
suresk
May 29th, 2007 at 12:26 am
4Yes, getting an unlocked/debranded phone works in some cases. To my knowledge, though, the N75 in particular is only sold to Cingular and therefore is going to be tricky to get unlocked.
I may look into other phones that offer good J2ME support and can be unlocked easily, even though it only solves part of the problem.
Thanks.
pipedings
May 29th, 2007 at 7:29 am
5What might work is
- set the Phone’s Product ID to an unbranded one
see
http://www.averageadmins.com/blog/2006/11/12/force-flashing-the-nokia-e61/
and then install a clean Nokia Firmware with the Nokia software updater
anil philip
May 29th, 2007 at 8:26 am
6Thank you for your post. I have an application that I want to port to j2me. Reading your post made me rethink. Perhaps I should just focus on PDAs?
Michael Voong – Java Verification? Not For Me!
January 14th, 2008 at 4:47 pm
7[…] Apparently, the Java ME code verification system is a joke. One developer has said that if you want to use anything other than the buttons and screen, you need your code signed. All of this was supposed to make code signing in Java ME centralised, being based upon impartial third parties like Verisign, Thawte, and others, but now some carriers (particularly in the US) have implemented their own certification processes, which defeats the point of having a centralised verification service like the Java Verified Program. Cingular’s lock-down in the US is a prime example of this evil - developers can only use the Bluetooth API (JSR-82) if you’re an enterprise partner with $1000 to spare for Cingular to test your application. JSR-179 (location services) is banned altogether. “PIM, SMS, and internet connectivity services are also heavily restricted, with most things requiring at least a 3rd party cert ($500 or so per year) to use.” […]
RSS feed for comments on this post · TrackBack URI
Leave a reply
Categories
Archives
Links
Meta
Recent Entries
Recent Comments
Most Commented
SpencerUresk is proudly powered by WordPress - BloggingPro theme by: DesignDisease