February 26th, 2010
As an application developer, you can easily understand the difference between the capabilities of a mobile device as opposed to those of a desktop or server. If you’re a Java developer creating mobile applications, you may have experienced some of the limitations of either the handset itself, the mobile operator’s network, or the Java ME framework on the device. The Mobile Information Device Profile (MIDP) 2.0 implementation is the most widely deployed Java ME framework, with over 2 billion mobile phones worldwide that are Java technology-enabled.
Continue reading the article at java.sun.com
Posted in Java ME, articles | 1 Comment »
January 5th, 2010
Ok,
So, unless you’ve lost internet access for the last 6 months (wow, that’s a scary thought) you’ve probably heard that Apple is going to release a tablet computer this year. Now, I don’t plan to spend alot of time on contributing to Apple’s free-PR-scheme, but I do have to say something about it, because of all the hype.
So, I understand the purpose of the iPhone - it’s a big ‘ole iPod screen, with good web browsing, and downloadable apps. Yeah, it what the Apple Newton should have been. There are billions of mobile phones on the planet, so making the iPhone suited a need that already existed.
My concern however is that…
…I don’t need a tablet…
I use computers ALOT, and every computing scenario for me is already covered by:
- servers
- desktops
- laptops
- mobile phones
Watch-based computers never really took off because nobody really needed them. So, whenever Apple presents its new tablet this year, I want to see Steve Jobs convince me that I need a tablet, because right now, I don’t.
Posted in Bluetooth | 1 Comment »
December 23rd, 2009
Ok,
So did you hear the news about Bluetooth 4.0? Now, you many be wondering, “Why are they announcing all these new features in Bluetooth 4.0, when there’s hardly any 3.0 devices available?”. True, I agree with you there — I wish that there would be more Bluetooth 3.0 devices available so that my camera can download pictures to my PC, which I think will be one of the major use cases for Bluetooth 3.0. Now, before I explain Bluetooth 4.0, I want you all to do a little experiment for me. Do all remember the versions of 802.11? Let’s take a look at them in chronological order:
- 802.11 - 1 Mb/s
- 802.11b - 11 Mb/s
- 802.11a - ~22 Mb/s
- 802.11g - 54 Mb/s
- 802.11n - ~100 Mb/s
Conceptually, from a generic-stupid-consumer’s-point-of-view, it’s easy to see that newer versions are FASTER than the older versions, even if the naming scheme seems out of place (in other words, 802.11a came after 802.11b). That’s easy stuff, right?
Well, Bluetooth 4.0 in my opinion will confuse the average-everyday-consumer because the new spec has nothing to do with increased data rates — it’s actually all about power consumption — which equates to lower data rates. So, Bluetooth 4.0 devices will run on a coin-cell battery for YEARS (which is cool), but it will communicate at a maximum of data rate of 1 Mb/s, which may be a problem to average consumers. Additionally, Bluetooth 3.0, 2.1, 2.0, 1.1 and 1.0 are all compatible technologies, so this means that a Bluetooth 1.0 device can communicate with a Bluetooth 3.0 device. Nice huh? Well Bluetooth 4.0 won’t be able to communicate with older Bluetooth devices (which is terrible), unless one of them includes the architectures for Bluetooth 4.0 and Bluetooth 3.0 (which increases the price).
So, the technology is great, but they’re going to have a hard time explaining 4.0 to the consumer.
Posted in Bluetooth 4.0 | 1 Comment »
December 8th, 2009
Here’s a quick question for you. I’m writing an upcoming article on Java Card 3 technology, and I’m curious to know if there are any questions about the platfrom that you’d like to see addressed in the article.

Thanks,
Bruce
Posted in JavaCard 3 | 2 Comments »
November 29th, 2009
Ok, do you remember my original post about the the lack of Java on major smartphone platforms? Well, here’s an updated list of the major smartphones today:
- iPhone 3GS
- Motorola Droid
- Palm Pre
- Nokia N97
- Nokia 5300/5800
- Blackberry Storm 2
- HTC Hero
- Nokia N900
Now Alex pointed to the updated spec docs for the N97, which *now* show that the device runs Java ME CLDC. Please note that those spec docs for that device have historically shown that the N97 was supposed to run a JDK 1.4 JVM, but Nokia decided to update the docs. Thanks for informing me about that Alex.
Additionally, Chris pointed out the Java ME CDC is still alive on the Sprint Titan platform. Thanks Chris!
However, I still make the case that Java ME CDC (the most powerful and capable mobile Java platform) is NOT on any of the devices that are listed above. Sun will have to do something quickly in order to make Java relevant on mobile devices again. Did you know that by the end of 2010, Flash applications will be on all of the devices listed above?
Here’s what Sun needs to do for MIDP 3.0 to launch it as the best mobile application framework.
1. Enable MIDP3.0 application code to natively compile to iPhone 3GS runtimes
2. Enable MIDP3.o application code to natively compile to Android 2.0 runtimes
3. Enable MIDP3.0 application code to natively compile to Palm Pre runtimes
This will enable the millions of Java developers to create mobile phone applications for the RELEVANT mobile platforms. I’m sorry to say that Java ME CDC is obsolete for mobile smartphones, and if Sun doesn’t do something quickly, MIDP 3.0 will be obsolete within 6 months (even before the spec is finalized).
Posted in Java ME | 8 Comments »
November 29th, 2009
Hmm…
It appears that it’s been a LONG time since I wrote a post. Sorry for the extended vacation, I’ve been busy working on a lot of stuff. Ok, let’s get back into the swing of things!
Posted in Uncategorized | 1 Comment »
October 4th, 2009
Bluetooth 2.1 technology allows two devices near each other to communicate at a maximum speed of 3 Mb per second. In the grand scheme of wireless communication, Bluetooth is roughly two times faster than the data throughput of a 3G wireless phone but still 10 to 20 times slower than today’s Wi-Fi speeds.
More than one billion Bluetooth-enabled devices are currently on the market, and Bluetooth does a good job of transferring files that are smaller than 10 MB in size. However, due to the inherent nature of most wireless communication protocols, Bluetooth devices need to discover other Bluetooth devices, even if both devices are right next to each other. Finding a remote Bluetooth device is great, but what services does that remote Bluetooth device offer? If the remote device is a printer, does it offer the commonly used Basic Printing Profile (BPP) or the more advanced printing service known as the Hard Copy Cable Replacement Profile (HCRP)?
To find the available services on a remote Bluetooth device, you also need to search for a service. Bluetooth device-discovery and service-searching capabilities are great when you are trying to find any remote Bluetooth device in the vicinity that can suit your needs.
But device discovery and service searching are extremely time-consuming and frustrating to use when you’re trying to communicate with a device that’s right in front of you. This article shows you how to get Bluetooth applications to completely bypass the device-discovery and service-searching processes simply by using Near-Field Communication (NFC) technology and JSR 257: Contactless Communication API.
You can also find this article in the list of all articles on this site.
Posted in Java ME, articles, NFC, Bluetooth | 1 Comment »
September 6th, 2009
Every developer in their software development lifetime will eventually have to create user interfaces. For some developers, this stuff is easy. However, for folks like me, creating a good user interface is HARD. Of course, I know a slick user interface when I see one, it’s just very difficult for me to create one from scratch. Therefore, any frameworks that help in the process of creating a quick and pretty (not quick and dirty) UI is something that I always want to be aware of.
So if you’re a Java ME developer, and if you have created user interfaces, then you’re aware that there aren’t many UI frameworks available. One of the most recently announced UI toolkits is LWUIT (pronounced “lew-it”) and here’s a rundown of it’s features:
- LWUIT Designer - Allows creating themes and resources for LWUIT
- Swing Like MVC (Model View Controller)
- Layouts
- PLAF (Pluggable Look And Feel) & Themes
- Fonts
- Touch Screen
- Animations & Transitions
- Rich widgets
- 3D Integration
- Painters
- Modal Dialogs
- External Tools
- I18N/L10N
- SVG Integration
Well, the wonderful folks at Packt Publishing have graciously allowed me offered to offer to my readers Chapter 10 of the book, “LWUIT 1.1 for Java ME Developers”.

If you’d like to know more information about this book, and to see a full description, then browse over to the Packt website for more information. When my copy arrives this week, I hope to give you all a good review of the book later this month. However, I think that you’ll enjoy the free chapter of the book, especially since it’s 26-pages-of-meaty-Java-ME-UI-goodness.
Posted in Java ME, articles | 1 Comment »
August 9th, 2009
Hi all,
Please allow me make a short comment/rant on the importance of DUN for mobile and wireless developers. Last week, I talked about what DUN is, and how it fits with the other Bluetooth Profiles. However, I failed to explain the importance of this profile. Let me put it succinctly:
If you want to your laptop to access the internet, the you need THIS profile enabled on your mobile phone and your laptop.
Yes, I do realize that DUN *could* be used by desktop computers to access the internet as well, but desktop computers are stationary devices, and WiFi is better suited for that task since power consumption is not a issue.
Yes, I also realize that PDAs *could* use DUN to connect to the internet, but nobody makes PDAs anymore. In fact, now that Microsoft has renamed Windows Mobile to Windows Phone, then that’s a good indicator that the PDA market is dead.
Please note however, that if you have a data plan on your mobile phone, your network carrier does NOT want you to connect your laptop to the internet over DUN. This concept is called “tethering”, and the carriers have decided to make DUN a complicated and pricey issue. Therefore, if you want to use DUN, you will most likely need to:
- contact your network carrier
- tell them that you want to tether over Bluetooth
- wait for them to scream and faint
- They will then tell you how much EXTRA you need to pay in order to tether (whether you use Bluetooth or not)
- They will also tell you the username and passcode to enter in order to access the network over DUN
That doesn’t sound fair, does it? If you had a normal smartphone application on your phone, it doesn’t need to know a passcode to access the network. However, it you want to tether your laptop, then you do need to enter a passcode on your laptop in order to access the internet.
I’m very tempted to write a hack that allow users to bypass all that nonsense. I’ll be sure to let you know if I make up my mind.
Posted in profile tutorial, Bluetooth for Java 2nd Edition | 2 Comments »
August 2nd, 2009
Alright, let’s continue to learn about the various intricacies of the Bluetooth specification by looking at another of one of the more common Bluetooth profiles: DUN.

Profile Name: Dial-up Networking Profile
Abbreviation: DUN
UUID: 0×1103
Description: The Dial-up Networking Profile (DUN) is a profile that largely depends on the functionality of the Serial Port Profile (SPP) in order to operate, as you can see from the image above. This profile is modeled after the connection mechanism that was widely used in the 1990’s for home computers to get access to the internet: the dial-up modem. Please note that even though dial-up modems are not available today, this profile is still widely used by laptops and other mobile devices to access the internet through a Bluetooth-enabled mobile phone.
Common Implementations: laptop computers, desktop computers, mobile phones
Posted in profile tutorial, Bluetooth 3.0, Bluetooth for Java 2nd Edition, Bluetooth | 1 Comment »
July 27th, 2009
Ok, most of you know that I’m a proponent for Java ME. I love writing applications for mobile devices, and I’ve been doing it for a LONG time (over 10 years). I like this stuff so much, I even wrote a book about it. Java ME is so popular, it on over a billion mobile phones (remember, there’s a difference between mobile phones and smart phones). One of the major benefits for Java and Java ME is platform independence, but I’m starting to see an alarming trend in the industry. So, as an experiment, I want to you think of the major *touchscreen* smartphones. Here’s the ones that come to mind for me:
- iPhone 3G
- Palm Pre
- Nokia N97
- Nokia 5800
- Blackberry Storm
- Samsung Instinct
- G1 (Google Android)
- HTC Touch Diamond
Alright, now your list may have +/- a few phones, but your list should be quite similar to mine. Now, back in the day, we were told that Java ME CLDC was the JVM platform for the mass market mobile phones, and Java ME CDC was the JVM platform for high-end smartphones with extra processing power. Now today, touchscreen smartphones are truly high-end, so which of the phones in my list (or your list) come enabled out-of-the-box with Java ME CDC?
Maybe two of them — maybe.
If the device is a Samsung Instinct or HTC Touch Diamond, and if it came from Sprint, then there’s a high probability that it includes Java ME CDC (via Sprint Titan). I’m not too familiar with Sprint’s success with the Titan platform, so I could be wrong. Even Nokia (which has been a huge supporter of Java ME) put Java SE 1.4 on their new flagship device, the N97.
Folks, if you ask me, this is not a good sign. What is the platform independent language for touchscreen smart phones? Did you know that Flash runs on more than 1/2 of those devices. Hmmm…
Posted in Java ME, Sprint Titan | 4 Comments »
July 20th, 2009
Ok, so the Sun SPOT is a really cool device. I thought that I’ve blogged about it before, but no, apparently I haven’t. So anyway, it’s a really cool mobile device platform that allows Java ME developers to create applications that run on embedded systems.

This device has an accelerometer, temperature sensor, a bunch of other cool stuff like a 802.15.4 radio. However, it doesn’t have Bluetooth (and that’s a shame). However, Dave Simmons wrote a nice blog posting on how to get your hands dirty and *MAKE* it Bluetooth-enabled. Be warned, however, that if you don’t feel comfortable with a soldering iron, then stay away. :-)
Posted in Bluetooth | 1 Comment »
July 12th, 2009
Ok folks,
I’ve been commissioned by Sun to write the first article on MIDP 3.0 technology. Cool, huh? So, if you missed the MIDP 3.0 sessions this year at JavaOne, or if you have a burning question about the next Java platform that will be on billions of mobile devices in the coming years, then this is your grand opportunity for you to ensure that the article will answer your question. So, if you have a question about MIDP 3.0, then post it below!
Posted in articles | 1 Comment »
June 29th, 2009
Alright,
This happens every year. For whatever reason, you need to get started with a Java ME project. Usually it’s one of the following reasons:
- Your boss has a great idea, and he wants to see a mobile app
- You’re a graduate student, and you think it’s really cool to write mobile apps
- You’re trying to participate in a contest
- You have a client who needs a mobile app
Either way, for whatever reason, you need to get started *now* on creating that application. Now, if you’ve never created a mobile Java application before, then I feel sorry for you because there’s alot of information available to confuse a newbie. However, there’s hope!
I just wrote an article for Sun describing alot of the free Java ME tools that are available for Java ME developers. The article is entitled, “Java ME Tools: The State of the Union, Q2 2009” and it will be updated regularly to help developers on how to get started with the best tools available.
By the way, if you like the article (or not) then feel free to rate the article, or provide comments. At the time of this writing, there’s currently a lively discussion going on regarding Mac and Linux support.
Posted in articles | 3 Comments »
June 14th, 2009
Well,
Thanks to everyone who took the time to read my two-part series on how to use a Bluetooth-enabled GPS receiver. Since that time, alot of you tried the examples with the MPowerplayer, and you found out that they changed how it handles JSR-82 API implementations. So, I wrote a quick follow-up article that answers all of your questions that were posted on the java.sun.com site. As always, you can find a link to all Java Bluetooth articles on the main site.
Posted in articles, Bluetooth | 1 Comment »