I have had some very bitter experience with J2ME. I am supposed to develop an academic project in two months that uses Bluetooth. Since, I have a Bluetooth-enabled Nokia 7650, I unfortunately added in my project proposal that I shall give a live demonstration of the application as well. Recently got to know that it can't be done on Nokia 7650 using J2ME. But can be done using Symbian C++. When I purchased a book on Symbian C++ and started going through it, I realized that it has a very steep learning curve for a former Java programmer like me. So, I am back to J2ME and all set to loose some marks beacuse I would not be able to do the live demo I had written about. My question is - is J2ME lagging behind in the Wireless development scene? Why was Bluetooth APIs (JSR-82) implemented in MIDP 2.0 when it can be done using Symbian C++ since maybe a year back? Some other rancher in one of his posts also mentioned something like making a call using MIDP which he could not do but he could do it using Symbian C++. /Sara
I think the most important issue here is that J2ME is cross-platform. If it were to support specific APIs, then it would lose this ability. If MIDP required the ability to call Bluetooth APIs then developers wouldn't be able to use J2ME on devices that don't support Bluetooth. With so many wireless technologies, I'm sure it takes some time to create a wrapper library that can abstract the common features of each.
J2ME is a level higher than the native platform. So, its API is always a subset of the underlying C++ API. It is the same for desktop Java. However, J2ME is maturing fast: look at the number of JSR available in this space! The Bluetooth API for J2ME has been around for a while. But companies do not adapt it in their bluetooth phone because they do not see real world developer needs for that. So, if you need it, make sure your voice get heard by the device vendors!