HomeDigital EditionSys-Con RadioSearch Java Cd
Advanced Java AWT Book Reviews/Excerpts Client Server Corba Editorials Embedded Java Enterprise Java IDE's Industry Watch Integration Interviews Java Applet Java & Databases Java & Web Services Java Fundamentals Java Native Interface Java Servlets Java Beans J2ME Libraries .NET Object Orientation Observations/IMHO Product Reviews Scalability & Performance Security Server Side Source Code Straight Talking Swing Threads Using Java with others Wireless XML

This is the first in a series of reviews of devices that are capable of running Java 2 Micro Edition - be it PersonalJava, MIDP, or any other new profile that comes along. In this and future issues of JDJ, we'll try to provide a rundown of the various kinds of handheld, embedded, and mobile devices, and how well they run your favorite language. First up is Compaq's iPAQ.

The iPAQ, a pocket PC from Compaq, (see Figure 1), comes in two flavors. There's the gray-scale H3135, which is 5.1"x3.2"x0.6" and weighs in at 6.3 ounces, and the color H3635, which is the same size but 0.3 ounces lighter (according to the specs, at least). Both use the same processor, a 206MHz Intel StrongARM 32-bit chip;however, the H3635 has an extra 16Mb of memory.

Figure 1
Figure  1:

The other important specs are a color LCD touch screen that supports 4,086 colors with a resolution of 240x320 pixels for the H3635; and a 15 gray-scale, semitransmissive STN LCD touch screen for the H3135. A CompactFlash Expansion slot is included in both, and extra RAM/modem options are available separately.

The iPAQ is one of the better looking PDAs. Considerable thought has gone into the design of the silvery case and it just looks good in the hand - and feels comfortable as well. A litmus test of its appearance is undoubtedly: Would you feel safe using the product in public? (That is, is someone likely to mug you and run off with it?) The iPAQ definitely rates as a device that little old ladies are likely to knock you senseless with their handbags just to get their hands on.

But enough about the boring hardware stuff. What we really want to know is the caffeine factor!

To use Java on any device when it hasn't been preinstalled will always be a hassle - usually it means a hefty download and then a problematic installation. Sun has a runtime environment for Java, available for the StrongARM processor (WinCE); however, it's currently in beta, so performance is less than stellar (based on my prior experience). Your average user probably isn't going to bother, which is disappointing, especially if you're developing applications and want to target the largest audience possible. It's more disappointing when you want to target the fastest processor currently available and aren't likely to get the performance your application requires.

However, Compaq has recently announced a $19.99 deal for users to purchase the JeodeRuntime for the iPAQ (see the Jeode review in this issue of JDJ), so for the purposes of this review we'll be using the JeodeRuntime. And with ActiveSync, the installation just means downloading the runtime to the device.

When evaluating a Java-ready device, if it has a screen, only one thing really matters - graphics performance. Everything else is secondary. After all, you're not likely to be writing servlets for your handheld (although considering the perversity of some people in the development community, maybe you are, so scratch that as an argument). As the iPAQ doesn't come with a modem built in, network connectivity performance is of secondary importance. As the test model I was supplied with didn't come with the modem option, it's a nonstarter.

The tests we use are fairly simple; however, they do give us an idea of what we can expect from the iPAQ with more serious Java applications. In all cases, the tests are run (where graphical) using the full screen size available.

iPAQ Test 1
The first test is an AWT application (or applet; it can run as either) with a few of the basic AWT components on a single screen (see Figure 2). What we want to know is how responsive are the components. When you click a button, is it slower to rebound than a snail on depressants? When you type (or write) a message into a text field, are you likely to sprout cobwebs under your arms before you see the text appear?

Figure 2
Figure  2:

As expected, the news for the iPAQ is good - there's no noticeable sluggishness on any of the components with Jeode (the same is true for Sun's PersonalJava runtime). When entering text with the handwriting tool, it appears in the text boxes instantaneously; there are no perceptible problems with button, checkbox, or list drawing.

iPAQ Test 2
The second test is basic graphics performance (see Figure 3). In this case, the test application uses one of the most fundamental graphics operations - drawLine() - to create random triangles on the screen. Note: The reason for using drawLine() to create the triangles, and not fillPolygon(), is that MIDP doesn't support the fillPolygon() method, and it's useful to use code in our PersonalJava test that's similar to what we might use in a MIDP test, for example. The application doesn't provide the frame rate, but rather the length of time to draw four random triangles on the screen.

Figure 3
Figure  3:

In this case, the iPAQ (unlike the screenshot shown in Figure 3) starts to struggle a bit more: the average time needed to draw the four triangles is 450-800ms. Interestingly, in this test only, Sun's PersonalJava beats Jeode hands down, taking only a few milliseconds to complete the operation.

iPAQ Test 3
The third test, if you're developing a game, is probably the most important: raw pixel throughput. In other words, if you provide an array of pixel colors, how fast can they be blitted to the screen as an image? This is useful if you want to write a game with more interesting particle effects, for example. This test application creates a random array of black and white colors, links the array to image creation, and paints the pattern to the screen as an image. Here we're interested in the maximum frame rate possible. Here the iPAQ produces an average frame rate of 10.6-10.8 frames per second - not quite as high as I hoped, but still an improvement on the Sun beta (around 1.3 fps).


With the JeodeRuntime, the iPAQ performs fairly well. It's good enough for minor animations, puzzle games, and the like, though perhaps not powerful enough for more advanced particle effects, 3D graphics, and more. Of course it would take more than a week's evaluation to really establish how the PDA fits in the gaming world, but certainly, for business applications, the power is more than adequate.

Secret Agent Factor
The iPAQ is a PDA, so secrecy isn't really an option while you're using it, and in terms of the competition, it comes in a little larger than a Palm Vx. However, it's an extremely sleek-looking piece of hardware - so a worthy addition to any budding spy's kit.

For the Gadget Geek
This device wins outright in the raw power stakes. But it's Windows CE, so it's got all those...Windows...bits and pieces. For really happy hacking, install an embedded version of Linux on it (for example, www.pocketlinux.com), and compile a version of Java for Linux. You'll probably destroy any chance you had of being truly productive with the device, but who cares! It's a PDA, it's Linux, it's Java.. oh, just forget it!

From a Java developer's point of view, the iPAQ's processor is definitely a selling point. It looks good, has specifications that generally could put some laptops to shame, and coupled with Jeode, could be used to produce some fairly good multimedia applications (perhaps not cutting-edge, though). But bear in mind, if you're developing to take advantage of this extra power, your market may be fairly limited for a while; however, more and more devices are appearing with 200+ CPU speeds, so the market may not stay small for long.


  1. Compaq handhelds: www.compaq.com/showroom/handhelds.html
  2. The Compaq/Jeode deal: www.compaq.com/products/handhelds/java.html
  3. Jeode: www.insignia.com/products/default.asp

Compaq Computer Corp.
20555 SH 249
Houston, Texas 77070
Web: www.compaq.com
Phone: 281 370-0670

Processor: 206 MHz Intel StrongARM
32-bit processor
Memory: 16MB RAM (H3135) or
32MB RAM (H3635)16MB ROM
Display:15 Grayscale STN (H3135)
or 4086 Color TFT
240x320 resolution
Size: 5.11" x 3.28" x 0.62"
Weight: 6.3oz (H3135) or 6.0oz (H3635)
Power: Lithium Polymer Rechargeable
battery or AC Adapter
Input: Touch-sensitive display, software
keyboard, handwriting recognition, voice recorder, five application buttons, five-way joystick, on-off and backlight buttons and note taker
Ports: USB, CompactFlash expansion, infrared, microphone, speaker
Operating System: Windows CE
(a version of Linux is available for the iPAQ - see www.pocketlinux.com) Java Preinstalled: No. PersonalJava Runtimes are available from Sun, Insignia (Jeode), and others Price: U.S.$399 (H3135) or U.S.$599 (H3635)
Notes: A 64MB RAM option is available;
see the Compaq Web site for more details. [email protected]

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.
  E-mail: [email protected]

Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.