Java has come a long way in its short life. Linux just
celebrated its 10-year anniversary; for Java that milestone is still
more than three years away. Who really understood, seven years ago,
that Java would become the standard platform for delivering content
over the Internet and for running applications on mobile phones -
even the de facto platform for future smart-card technology? And what
will the next few years bring for Java?
In the information appliance space we see a proliferation of
different devices: PDAs, smart phones, Web tablets, in-car Internet
access, games consoles, set-top boxes, home servers, wireless
enterprise devices for vertical markets, and countless embedded
devices with Internet access. Emerging wireless and display
technologies are driving the capabilities of these devices forward.
As a result, application demands on the underlying operating
system and platform are increasing dramatically. Multitasking is no
longer optional; future devices must be capable of simultaneously
handling 1-100 megabit wireless data streams, providing immediate
response to a user action while smoothly playing a background
multimedia stream. And all this using a featherlight battery pack -
no 2GHz 70 watt Pentium 4 in these devices.
With this proliferation of devices, and a bewildering number
of operating system choices, Java is emerging as the common platform
standard that developers can use to ensure portability across
different devices. Historically, however, Java hasn't been a major
player in the information appliance space. What's changed?
In theory, solving the "too big, too slow" reputation that
Java gained in its early days is easy: make it smaller and make it
faster. For small devices this is exactly what J2ME has done. J2ME
has emerged as the preferred solution to the problem of running Java
applications on devices with restricted functionality. With a limited
API, well suited for devices such as mobile phones, J2ME CLDC offers
a viable platform for devices with processor speeds around 50MHz, and
memory footprints well under 1MB.
For more powerful wireless appliances, there are many
options: accelerated PersonalJava and J2ME CDC JVM technologies for
Windows CE, Palm OS, Wind River, and others; various flavors of Java
on various flavors of Linux; and now a full J2SE-based OS from
SavaJe. The Java bandwagon in the IA space is sturdy. And it's
rolling with recent announcements by major players such as DoCoMo,
Motorola, Nokia, and Sharp, which have started shipping or have
announced wireless devices with J2ME and PersonalJava capabilities.
What of the future, and should you write to J2ME CLDC, J2ME
CDC, or J2SE? Moore's Law suggests that wireless handheld devices
will get more and more powerful. Today's iPAQ contains the computing
power of a three-year-old PC. Will everything eventually run J2SE (or
will it be Java 3 by then)?
Unlikely. Only you know whether your application needs J2ME
or J2SE. It's as much about what the target device is capable of as
it is about your application's functionality. J2ME is the right
choice for many applications running on phones, embedded devices, or
toys, where you don't want or need AWT (let alone Swing), J2SE
security, and programming APIs as diverse as Java Collections and
IEEE floating point libraries.
J2ME is a great platform for small devices, but give me a
powerful PDA, an enterprise wireless terminal, or a Web tablet, and I
want more - a lot more. In a wireless PDA I want a phone, pager, PDA,
e-mail device, an Internet-access device with high-resolution color
display, all rolled into a single package the size and weight of a
Palm m505.
I want to see applications written with the rich and flexible
UI of Swing and Java 2D. I expect to rely on full security for
wireless networking, end to end. I want seamless Internet and voice
communications over wide-area networks, personal wireless networks,
and corporate LANs. Certainly a number of J2SE subset/J2ME superset
profiles are moving along the JSR process, but I want a full version
of Java and complete applications portability, not a subset.
We shouldn't proliferate multiple flavors of J2ME. It hurts
application portability and it dilutes the powerful message of the
Java platform. Looking to the future I see a huge population of small
devices running "fit for purpose" J2ME, and more powerful wireless
devices with QVGA+ displays, 200MHz+ CPUs, and 32MB+ memory running
J2SE applications - the same application in your car, on your
desktop, or on your wireless PDA.
The exciting thing about today's information appliances is
that, for the first time, we have the opportunity to develop and
deploy powerful Java applications on a wide range of devices - from
smart card to mobile phone, from PDA to PC. Both J2ME and J2SE can be
used to build applications for these devices: match the device
capabilities and your application API requirements to determine which
to use.
So I, for one, am looking forward to Java's tenth anniversary
- and Java 3 Standard Edition Plus on my mobile phone/PDA/Web tablet
voice-activated gizmo.
Author Bio
George Grey is CEO of SavaJe Technologies Inc., producer of SavaJe
XE, an operating system for information appliances with J2SE support
and bundled applications. Previously he was CEO of Psion USA; before
that he founded and built Tadpole Technology,
developer of the notebook-sized SPARC computer.
george.grey@savaje.com