JDK6 for embedded ARM

Xerxes Rånby xerxes at zafena.se
Mon Apr 27 06:51:09 PDT 2009

Greetings Rogerio

Rogerio Pimentel wrote:*
> Hi !
>     Has anybody compiled JDK6 for any embedded device? 
OpenJDK6 have been known to compile and run on embedded ARM systems 
since the summer 2008.

Binarys are currently shipping with the Debian/Linux ARM "armel" 
distribution, the Ubuntu "armel" ARM distribution and various embedded 
Linux distributions based on the openembedded infrastructure.

Most development are currently performed at the Icedtea repository, 
patches are maing their way into OpenJDK through the Icedtea project:


OpenJDK6 for ARM can be built using the Icedtea build infrastructue in 
three different ways:

1. Hotspot+zero, (interpreter only) currently the most compatible way of 
running JDK6 on ARM, zero have quite quick upstart times yet dont have 
great top speed since it are only running in interpreted mode.

2. Hotspot+zero+shark (mixed mode JIT and interpreter) Shark are still 
under heavy developement and are not stable enough for real use , Shark 
on ARM can at the moment run "Hello World" and some other trivial java 
programs that finishes quickly.

3. Cacao (JIT only) instead of using hotspot it are possible to use the 
Cacao research vm, cacao are quite fast yet it lacks debugging support 
like JVMTI and have some upstart overhead since all methods must be 
jited before they are run.

I have written a FAQ how to cross compile OpenJDK for many embedded 
ARM/Linux distributions using Icedtea, Jalimo, OpenEmbedded and BitBake.
Binarys generated this way are known to work on Nokia internet tablets, 
Neo freerunner phones, The BUG and many embedded ARM developement boards.

> Is JDK6 a good choice to use in embedded systems?
It all depends on your expectations.

Embedded systems have recently got access to quite a lot of storage by 
using sd card memorys and processing power have increased a lot thus 
running a JavaSE like environment on embedded hardware are now more 
possible than ever.

Being able to use software deployment strategies like java webstart on 
networked embedded hardware are a reality using JDK6.

Being able to run the same applications as used on desktops on embedded 
hardware are possible! yay!

Currently the main bottlenecks running JDK6 on embedded ARM hardware 
becomes obvious when running GUI intense swing applications. 
Unfortunally most embedded chip makers don't provide accelerated 
embedded graphics chips drivers as free software and thus most graphics 
functionality don't get the acceleration as they should thus keeps 
slowing down the cpu.

Running embedded java servers on screenless devices like plugcomputers: 
go for it!

Running tailored client java applications with slightly reduced 
swing/awt gui's are all ok as well.

Running heavy swing applications currently don't work that well.
> Regards,
> Rogerio
Cheers, and have a great day!

More information about the jdk6-dev mailing list