Just came back from Hong-Kong. What a city! Hong-Kong is like New York on steroids, it is the most technologically advanced city I have ever been in. Everybody is connected to some sort of high-tech miniature gadget. I felt like a cave-man with my poor old digital camera because everybody was using their cellular phones to take video and pictures (my cellular phone’s camera produces unrecognizable, low-quality pictures). People still use cellular phones for regular voice conversations, but that is just a small percentage of the usage. Cellulars are used for games, chats, IM and for playing music. I even saw one woman at the bus, monitoring her kid in the kindergarten using a live video-stream to her phone.

I know, Hong-Kong is not the only place people use handhelds. But the intensity and the variety of usages were overwhelming. Another example of high-tech miniature gadget is the “octopus card”. This is a small and smart prepaid card that you get for free and charge with money. Using this card one can pay for many things; from busses and subway all the way to pay your “7-11” bill at the counter. The octopus card is state-full so in some conditions it charges you according to the pre-knowledge it holds. For example, it remembers in which station you entered the subway and it charges you accordingly at your final destination. This card was a great friend and I did not use my credit card at all. At the last Java One conference I saw a J2ME example of a smart card. I really hope that the octopus card has java inside.

The bottom line is that it looks like the future is in the palm of our hands. Handhelds are going to take a bigger part of our life. Programmers and architects should get to know handhelds and handhelds technologies like J2ME. Although the programs in these small devices might seem simple and not challenging (how hard it is to write the code for a simple pre-paid card?) these “simple” programs are extremely useful and sometime very complex to write. Moreover, when considering any new solution one must always take into account the handheld angle.

Is J2ME the right tool for handhelds and smart cards?