Linux on the iPaq 3765

Java on the iPaq under Linux

Obtaining a JRE

The fine folks at Blackdown have compiled a version of Java 1.3.1 for ARM processors. I have created a script that compresses the JRE to fit on an unmodified iPaq.

Shrinking the JRE

In a standard JRE there are a lot of files that are unnecessary. In the root of the JRE install, the only things we need are the bin and the lib directories.

In bin, we don't need these files:

  • tnameserv
  • policyserv
  • keyserv
  • rmid
  • rmiregistry
  • armv4l/green_threads
  • armv4l/native_threads/tnameserv
  • armv4l/native_threads/policyserv
  • armv4l/native_threads/keyserv
  • armv4l/native_threads/rmid
  • armv4l/native_threads/rmiregistry

In lib, we don't need these files:


We also need to shrink rt.jar.

Removed from our JAR file:

  • java/rmi
  • java/applet
  • org (CORBA)
  • com/sun/corba
  • com/sun/rmi
  • sun/rmi
  • sun/applet
  • javax/accessibility
  • javax/sound
  • javax/rmi


If you develop with a 1.4 JDK but deploy to the 1.3 JRE, you may run into these problems:
  • Calendar.getTimeInMillis() is public in 1.4, but wasn't in 1.3. This will cause an IllegalAccessError when you run your code on the iPaq even though it runs fine under the 1.4 JRE on your development system.

Last modified on 21 Dec 2005 by AO

Copyright © 2020 Andrew Oliver