Tuesday 24 April 2012

Liberty Pi - Running WebSphere on the Raspberry Pi

Firstly, this is the coolest thing I've done at IBM :o)  Working with two technologies that are really interesting, innovative and just fun to play with!  So how did this all start…

A while back, I got in contact with the great folks at Raspberry Pi, Eben and Liz Upton, and told them I wanted to run a proof of concept demo which runs lightweight software on lightweight hardware.  They were keen to get involved and sent me one of their little gems to play with.  The reasons I wanted to run the new Liberty Profile on the Raspberry Pi was because I saw a lot of similarities in the goal of providing a lightweight solution, an offering which developers would love to get their hands on, and sheer innovation and determination to deliver a real top class deliverable.

A Raspberry Pi is essentially a business card/credit card sized computer. They're a charity which have wonderful intentions to encourage programming among school children with a really affordable computer.  Here's what's on it:

The new Liberty Profile, which is part of WebSphere Application Server V8.5 offering, due for release June 15th 2012, has been designed around developer needs. As a result its a lightweight offering of the full WebSphere App Server that is composable, very fast and reactive to a developers needs.  A download and install from scratch for example would take little over 3 minutes.  This Liberty Profile still contains the top class containers and services full WAS profiles have used over the years.

To show these two technologies off, I wanted to show both the Liberty Profile running on an extremely small device, as well as the Raspberry Pi running substantial software, including a Debian OS, full JVM and Application Server.

Here's the demo in action:

This is my first pass at running an environment on the Raspberry Pi, so comments and suggestions about what I could try next would be very interesting.  I've already got a bunch of ideas i'm planning on trying but would love to hear your thoughts.

In this first pass, I decided to run with the recommended Linux distribution, Debian.  The Liberty Profile allows you to use your choice of JVM, from a supported list.  However, as this was on an ARM architecture, choices were slightly limited.  This time I decided to go for the OpenJDK.  Liberty was a straight forward download and unzip from WASdev.net.

Things I noticed straight away: 
Where has all my memory gone?!?  256MB has turned into 126MB straight away!   Digging a little further shows that an amount of this is taken up by the GPU, and there seem to be workarounds to better allocate the memory for what I want.
Wow, the X Server takes up 30% of my remaining memory!  In the future I'll be switching to a more minimal runlevel to make better use of the resources the Pi comes with.

Some of my planned next steps are to play with the J9 JVM on the Pi, upgrade to the released levels of the Liberty Profile and use a more interesting application.

For more information about the Liberty Profile check out the WAS development community at WASdev.net.  For more info on the Raspberry Pi, see raspberrypi.org.