Building JamVM and GNU Classpath and Jikes (for Java support in webOS) with scratchbox2

From WebOS Internals
Revision as of 16:04, 7 January 2012 by Yannick56 (talk | contribs) (→‎Compiling: add more links for download / add escher part)
Jump to navigation Jump to search

'NOTE : 06/01/2012 : JamVM works !!!'

Requirements

First, follow the tutorial WebOS Internals PDK to set up the cross compilation environment.

Next install gcj needed for compiling Gnu Classpath

sudo apt-get install gcj

Compiling

Create your working folder :

cd /home/ubuntu
mkdir java-project
cd java-project

Go in ARM mode in your ScratchBox 2 :

sb2 -M /srv/preware/cross-compile/staging/mapping-armv7

Create the folders

mkdir -p /usr/local/bin/
mkdir -p /usr/local/include/
mkdir -p /usr/local/lib/
mkdir -p /usr/local/share/

Quit ScratchBox 2 :

exit

Install Alsa needed by Gnu Classpath (optionnal - only for GUI mode with sound)

cd /srv/preware/cross-compile/packages/media
rm -Rf /srv/preware/cross-compile/packages/media/alsa-lib/build
make -C alsa-lib ARCH=armv7 stage

Install X needed by Gnu Classpath (optionnal - only for GUI mode)

cd /srv/preware/cross-compile/packages/x
rm -Rf /srv/preware/cross-compile/packages/x/libx11/build
make -C libx11 ARCH=armv7 stage

Install Escher needed by Gnu Classpath (optionnal - only for GUI mode)

Goal : bridge between Java and X server

Escher useful information here.

Escher download page : http://sourceforge.net/projects/escher/files/escher/0.3/ and http://escher.sourceforge.net/

Ant download page : http://archive.apache.org/dist/ant/binaries/ and http://ant.apache.org/bindownload.cgi

cd /home/ubuntu/java-project
wget http://heanet.dl.sourceforge.net/project/escher/escher/0.3/escher-0.3.tar.gz
wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz
tar xzvf escher-0.3.tar.gz
tar xzvf apache-ant-1.7.1-bin.tar.gz
export ANT_HOME=/home/ubuntu/java-project/apache-ant-1.7.1
export PATH=$PATH:/home/ubuntu/java-project/apache-ant-1.7.1
cd escher-0.3
ant -f build.xml

Install GNU Classpath

Goal : implement almost all of the classes from Java J2SE 1.4 and 5.0.

GNU Classpath at Wikipedia : http://en.wikipedia.org/wiki/GNU_Classpath

GNU Classpath download page / website : http://www.gnu.org/software/classpath/downloads/downloads.html and http://www.gnu.org/software/classpath/

Note: here, Gnu Classpath is only compiled for working in console mode. No support for sound or GUI in Java programs. The extra libs needed for these supports are detailed here : http://www.gnu.org/software/classpath/docs/hacking.html#SEC5
For compiling with sound support, ALSA libs are needed. For compiling with GUI support, X libs are needed AND Escher or QT or GTK libs.
For low footprint memory, Escher is the best choice. More useful information here.

Compile :

cd java-project
wget ftp://ftp.gnu.org/gnu/classpath/classpath-0.98.tar.gz
tar xzvf classpath-0.98.tar.gz
cd classpath-0.98

Go in ARM mode in your ScratchBox 2 :

sb2 -M /srv/preware/cross-compile/staging/mapping-armv7

Without GUI and sound support :

./configure --prefix=/usr/local --disable-examples --without-x --disable-gtk-peer --disable-gconf-peer --disable-plugin --disable-alsa --disable-dssi
make
make install
cd ..

With GUI and sound support :

 LDFLAGS="-L/usr/local/lib -Wl,-rpath=/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure --prefix=/usr/local --disable-examples --with-x --disable-gtk-peer --disable-gconf-peer --disable-plugin --enable-alsa --disable-dssi
make
make install
cd ..

Install Zlib needed by JamVM

cd /srv/preware/cross-compile/packages/common
rm -Rf /srv/preware/cross-compile/packages/common/zlib/build
make -C zlib ARCH=armv7 stage

Install libffi needed by JamVM

Note : You have segmentation fault with JamVM if you not compile it with libffi. More info about this segmentation fault problem in this thread.

libffi download page / website : http://sourceware.org/libffi/

cd /home/ubuntu/java-project
wget ftp://sourceware.org/pub/libffi/libffi-3.0.10.tar.gz
tar xzvf libffi-3.0.10.tar.gz
cd libffi-3.0.10
./configure --prefix=/usr/local --with-gcc-arch=armv7
make
make install
cp include/ffi_common.h /usr/local/include
cp arm-unknown-linux-gnueabi/include/ffi.h /usr/local/include
cp src/arm/ffitarget.h /usr/local/include
cd ..

Install JamVM

Goal : can launch Java program

JamVM at Wikipedia : http://en.wikipedia.org/wiki/JamVM

JamVM download page / website : http://sourceforge.net/projects/jamvm/files/jamvm/JamVM%201.5.4/ and http://jamvm.sourceforge.net/

cd /home/ubuntu/java-project
wget http://freefr.dl.sourceforge.net/project/jamvm/jamvm/JamVM%201.5.4/jamvm-1.5.4.tar.gz
tar xzvf jamvm-1.5.4.tar.gz
cd jamvm-1.5.4
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_RUN_LIBRARY_PATH=$LD_RUN_LIBRARY_PATH:/usr/local/lib
LDFLAGS="-L/usr/local/lib -Wl,-rpath=/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure --prefix=/usr/local --with-classpath-install-dir=/usr/local --enable-ffi
make
make install
cd ..

Note 1 : do not use CFLAGS parameter to compile JamVM, there is maybe a problem (segmentation fault) with this parameter as you can find it in this post.

Install Jikes

Goal : can compile Java program

Jikes at Wikipedia : http://en.wikipedia.org/wiki/Jikes

download page / website : http://sourceforge.net/projects/jikes/files/ and http://jikes.sourceforge.net/

wget http://freefr.dl.sourceforge.net/project/jikes/Jikes/1.22/jikes-1.22.tar.bz2
bzip2 -d jikes-1.22.tar.bz2
tar xvf jikes-1.22.tar
cd jikes-1.22 
./configure --prefix=/usr/local
make
make install
cd ..

Quit Scratch Box : exit

Installing the files on your device

cd /srv/preware/cross-compile/staging/armv7/usr
sudo chown -R root:root *
sudo tar cvf local.tar *
copy the local.tar on your webos device connected as USB key on your computer

On your computer connect at your webOS device

novacom -t open tty://

Move the files in the good folders :

cd /media/internal
mkdir java-project
mv local.tar java-project
cd java-project
tar Pxvf local.tar
chmod -R 755 *
chown root:root *
cd bin
cp -p * /usr/local/bin
cp -p -r include lib man share /usr/local

Fix missing symbolic links :

cd /usr/local/lib
ln -s libjvm.so.0.0.0 libjvm.so
ln -s libjvm.so.0.0.0 libjvm.so.0
ln -s libz.so.1.2.3 libz.so
ln -s libz.so.1.2.3 libz.so.1
ln -s libffi.so.5.0.10 libffi.so.5.0
ln -s libffi.so.5.0.10 libffi.so.5
ln -s libffi.so.5.0.10 libffi.so
ln -s /usr/local/share/classpath/glibj.zip rt.jar
cd classpath
ln -s libjavaio.so.0.0.0 libjavaio.so
ln -s libjavaio.so.0.0.0 libjavaio.so.0
ln -s libjavalangmanagement.so.0.0.0 libjavalangmanagement.so
ln -s libjavalangmanagement.so.0.0.0 libjavalangmanagement.so.0
ln -s libjavalangreflect.so.0.0.0 libjavalangreflect.so
ln -s libjavalangreflect.so.0.0.0 libjavalangreflect.so.0
ln -s libjavalang.so.0.0.0 libjavalang.so
ln -s libjavalang.so.0.0.0 libjavalang.so.0
ln -s libjavanet.so.0.0.0 libjavanet.so
ln -s libjavanet.so.0.0.0 libjavanet.so.0
ln -s libjavanio.so.0.0.0 libjavanio.so
ln -s libjavanio.so.0.0.0 libjavanio.so.0
ln -s libjavautil.so.0.0.0 libjavautil.so
ln -s libjavautil.so.0.0.0 libjavautil.so.0

Basic testing for the main binaries

JamVM

# /usr/local/bin/jamvm -version
java version "1.5.0"
JamVM version 1.5.4
Copyright (C) 2003-2010 Robert Lougher <rob@jamvm.org.uk>
-
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2,
or (at your option) any later version.
-
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
-
Build information:
Execution Engine: inline-threaded interpreter with stack-caching
Compiled with: gcc 4.2.1
Boot Library Path: /usr/local/lib/classpath
Boot Class Path: /usr/local/share/jamvm/classes.zip:/usr/local/share/classpath/glibj.zip

Jikes

# /usr/local/bin/jikes -version
Jikes Compiler - Version 1.22 - 3 October 2004
Copyright (C) IBM Corporation 1997-2003, 2004.
- Licensed Materials - Program Property of IBM - All Rights Reserved.
Originally written by Philippe Charles and David Shields of IBM Research,
Jikes is now maintained and refined by the Jikes Project at:
<http://ibm.com/developerworks/opensource/jikes>
Please consult this URL for more information and for reporting problems.

Compiling and Running a HelloWorld Java Program

console text mode

Compiling

For this example, I use a novacom connexion on my Palm Pre.

cd /media/internal
vi myfirstjavaprog.java 

and add the following lines in the myfirstjavaprog.java (source) :

class myfirstjavaprog
{  
  public static void main(String args[])
  {
   System.out.println("Hello World!");
  }
}

Compile :

# /usr/local/bin/jikes -bootclasspath /usr/local/share/jamvm/classes.zip:/usr/local/share/classpath/glibj.zip myfirstjavaprog.java
ls -l 
...
-rwxrwxrwx    1 root     root           440 Jan  2 14:38 myfirstjavaprog.class
...

Running

/usr/local/bin/jamvm  myfirstjavaprog

or

/usr/local/bin/jamvm -client -classpath/usr/local/share/jamvm/classes.zip:/usr/local/share/classpath/glibj.zip myfirstjavaprog

and you can see :

Hello World!

GUI mode

Compiling

For this example, I use a novacom connexion on my Palm Pre.

cd /media/internal
vi HelloWorld.java 

and add the following lines in the HelloWorld.java (source) :

import java.awt.*;
import java.awt.event.*;
public class HelloWorld extends Frame {
   public static void main (String [] argv){
      HelloWorld h = new HelloWorld();
   }
   public HelloWorld(){
     setTitle("Hello World!");
     setSize(150, 125);
     Panel hello = new Panel();
     add("Center", hello);
     Button button = new Button("OK");
     add("South", button);
     button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            System.exit(0);
         }
       });
     setVisible(true);
     int width = hello.getWidth();
     int height = hello.getHeight();
     Graphics g = hello.getGraphics();
     g.drawString("Hello World!", width/2 - 25, height/2);
     addWindowListener(new WindowAdapter(){
          public void windowClosing(WindowEvent e){ 
              System.exit(0);
          }
     });
   }
}

Compile :

# /usr/local/bin/jikes -bootclasspath /usr/local/share/jamvm/classes.zip:/usr/local/share/classpath/glibj.zip HelloWorld.java
ls -l 
...
-rwxrwxrwx    1 root     root           440 Jan  2 14:38 HelloWorld.class
...

Running

/usr/local/bin/jamvm  HelloWorld

or

/usr/local/bin/jamvm -client -classpath/usr/local/share/jamvm/classes.zip:/usr/local/share/classpath/glibj.zip HelloWorld

and you can see a GUI window :

Hello World!

Audio mode

Playing Audio in Java

Files installed by each program

Gnu Classpath

[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/bin
total 52
-rwxr-xr-x 1 ubuntu ubuntu 2073 2012-01-01 19:23 gappletviewer
-rwxr-xr-x 1 ubuntu ubuntu 2058 2012-01-01 19:23 gjar
-rwxr-xr-x 1 ubuntu ubuntu 2070 2012-01-01 19:23 gjarsigner
-rwxr-xr-x 1 ubuntu ubuntu 2062 2012-01-01 19:23 gjavah
-rwxr-xr-x 1 ubuntu ubuntu 2113 2012-01-01 19:23 gjdoc
-rwxr-xr-x 1 ubuntu ubuntu 2066 2012-01-01 19:23 gkeytool
-rwxr-xr-x 1 ubuntu ubuntu 2084 2012-01-01 19:23 gnative2ascii
-rwxr-xr-x 1 ubuntu ubuntu 2060 2012-01-01 19:23 gorbd
-rwxr-xr-x 1 ubuntu ubuntu 2060 2012-01-01 19:23 grmic
-rwxr-xr-x 1 ubuntu ubuntu 2060 2012-01-01 19:23 grmid
-rwxr-xr-x 1 ubuntu ubuntu 2074 2012-01-01 19:23 grmiregistry
-rwxr-xr-x 1 ubuntu ubuntu 2075 2012-01-01 19:23 gserialver
-rwxr-xr-x 1 ubuntu ubuntu 2070 2012-01-01 19:23 gtnameserv
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/include
total 80
-rw-r--r-- 1 ubuntu ubuntu  3516 2012-01-01 19:23 jawt.h
-rw-r--r-- 1 ubuntu ubuntu  2349 2012-01-01 19:23 jawt_md.h
-rw-r--r-- 1 ubuntu ubuntu 66655 2012-01-01 19:23 jni.h
-rw-r--r-- 1 ubuntu ubuntu  1547 2012-01-01 19:23 jni_md.h


[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/lib
total 12
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:23 classpath
-rw-r--r-- 1 ubuntu ubuntu 1437 2012-01-01 19:23 logging.properties
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:23 security
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/lib/classpath 
total 1228
-rwxr-xr-x 1 ubuntu ubuntu    806 2012-01-01 19:23 libjavaio.la
lrwxrwxrwx 1 ubuntu ubuntu     18 2012-01-01 19:23 libjavaio.so -> libjavaio.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     18 2012-01-01 19:23 libjavaio.so.0 -> libjavaio.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu 177244 2012-01-01 19:23 libjavaio.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu    818 2012-01-01 19:23 libjavalang.la
-rwxr-xr-x 1 ubuntu ubuntu    878 2012-01-01 19:23 libjavalangmanagement.la
lrwxrwxrwx 1 ubuntu ubuntu     30 2012-01-01 19:23 libjavalangmanagement.so -> libjavalangmanagement.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     30 2012-01-01 19:23 libjavalangmanagement.so.0 -> libjavalangmanagement.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu  25052 2012-01-01 19:23 libjavalangmanagement.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu    860 2012-01-01 19:23 libjavalangreflect.la
lrwxrwxrwx 1 ubuntu ubuntu     27 2012-01-01 19:23 libjavalangreflect.so -> libjavalangreflect.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     27 2012-01-01 19:23 libjavalangreflect.so.0 -> libjavalangreflect.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu  24773 2012-01-01 19:23 libjavalangreflect.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     20 2012-01-01 19:23 libjavalang.so -> libjavalang.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     20 2012-01-01 19:23 libjavalang.so.0 -> libjavalang.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu 378668 2012-01-01 19:23 libjavalang.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu    812 2012-01-01 19:23 libjavanet.la
lrwxrwxrwx 1 ubuntu ubuntu     19 2012-01-01 19:23 libjavanet.so -> libjavanet.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     19 2012-01-01 19:23 libjavanet.so.0 -> libjavanet.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu 263348 2012-01-01 19:23 libjavanet.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu    812 2012-01-01 19:23 libjavanio.la
lrwxrwxrwx 1 ubuntu ubuntu     19 2012-01-01 19:23 libjavanio.so -> libjavanio.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     19 2012-01-01 19:23 libjavanio.so.0 -> libjavanio.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu 311502 2012-01-01 19:23 libjavanio.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu    818 2012-01-01 19:23 libjavautil.la
lrwxrwxrwx 1 ubuntu ubuntu     20 2012-01-01 19:23 libjavautil.so -> libjavautil.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     20 2012-01-01 19:23 libjavautil.so.0 -> libjavautil.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu  27292 2012-01-01 19:23 libjavautil.so.0.0.0
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/lib/security 
total 4
-rw-r--r-- 1 ubuntu ubuntu 2489 2012-01-01 19:23 classpath.security
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share
total 12
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:23 classpath
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:22 info
drwxr-xr-x 3 ubuntu ubuntu 4096 2012-01-01 19:22 man
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/classpath
total 10780
-rw-r--r-- 1 ubuntu ubuntu 9832050 2012-01-01 19:22 glibj.zip
-rw-r--r-- 1 ubuntu ubuntu 1204211 2012-01-01 19:23 tools.zip
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/info     
total 292
-rw-r--r-- 1 ubuntu ubuntu  83532 2012-01-01 19:22 cp-hacking.info
-rw-r--r-- 1 ubuntu ubuntu 106990 2012-01-01 19:22 cp-tools.info
-rw-r--r-- 1 ubuntu ubuntu  98304 2012-01-01 19:22 cp-vmintegration.info
-rw-r--r-- 1 ubuntu ubuntu    815 2012-01-01 19:22 dir
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/man 
total 4
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:23 man1
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/man/man1
total 164
-rw-r--r-- 1 ubuntu ubuntu  7997 2012-01-01 19:22 gappletviewer.1
-rw-r--r-- 1 ubuntu ubuntu  5592 2012-01-01 19:23 gcjh.1
-rw-r--r-- 1 ubuntu ubuntu  5918 2012-01-01 19:23 gjar.1
-rw-r--r-- 1 ubuntu ubuntu  9590 2012-01-01 19:23 gjarsigner.1
-rw-r--r-- 1 ubuntu ubuntu  5750 2012-01-01 19:23 gjavah.1
-rw-r--r-- 1 ubuntu ubuntu 35310 2012-01-01 19:23 gjdoc.1
-rw-r--r-- 1 ubuntu ubuntu 35536 2012-01-01 19:23 gkeytool.1
-rw-r--r-- 1 ubuntu ubuntu  4594 2012-01-01 19:23 gnative2ascii.1
-rw-r--r-- 1 ubuntu ubuntu  4825 2012-01-01 19:23 gorbd.1
-rw-r--r-- 1 ubuntu ubuntu  5084 2012-01-01 19:23 grmid.1
-rw-r--r-- 1 ubuntu ubuntu  5036 2012-01-01 19:23 grmiregistry.1
-rw-r--r-- 1 ubuntu ubuntu  4512 2012-01-01 19:23 gserialver.1
-rw-r--r-- 1 ubuntu ubuntu  4592 2012-01-01 19:23 gtnameserv.1

JamVM

[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jamvm-1.5.4 $ ls -l /usr/local/bin
total 444
-rwxr-xr-x 1 ubuntu ubuntu 400821 2012-01-01 19:38 jamvm
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jamvm-1.5.4 $ ls -l /usr/local/include
total 108
-rw-r--r-- 1 ubuntu ubuntu 14042 2012-01-01 19:38 jni.h

Note : JamVM replace the jni.h file from Gnu Classpath by his own jni.h file

[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jamvm-1.5.4 $ ls -l /usr/local/lib    
total 636
-rwxr-xr-x 1 ubuntu ubuntu    817 2012-01-01 19:37 libjvm.la
lrwxrwxrwx 1 ubuntu ubuntu     15 2012-01-01 19:37 libjvm.so -> libjvm.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     15 2012-01-01 19:37 libjvm.so.0 -> libjvm.so.0.0.0
-rwxr-xr-x 1 ubuntu ubuntu 556829 2012-01-01 19:37 libjvm.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu     46 2012-01-01 19:38 rt.jar -> /usr/local/share/classpath/glibj.zip
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jamvm-1.5.4 $ ls -l /usr/local/share
total 16
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:38 jamvm
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jamvm-1.5.4 $ ls -l /usr/local/share/jamvm   
total 24 
-rw-r--r-- 1 ubuntu ubuntu 22133 2009-12-31 19:42 classes.zip

Jikes

[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jikes-1.22 $ ls -ltr /usr/local/bin
total 8260
-rwxr-xr-x 1 ubuntu ubuntu 8002423 2012-01-01 19:56 jikes
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jikes-1.22 $ ls -ltr /usr/local/include
total 116
-rw-r--r-- 1 ubuntu ubuntu  5794 2012-01-01 19:56 jikesapi.h
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jikes-1.22 $ ls -ltr /usr/local/share
total 20
drwxr-xr-x 3 ubuntu ubuntu 4096 2012-01-01 19:56 doc
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox jikes-1.22 $ ls -ltr /usr/local/share/doc/jikes-1.22
total 12
-rw-r--r-- 1 ubuntu ubuntu 11886 2012-01-01 19:56 license.htm

Links used to do the webOS port

Iphone

Patches used for the JamVM port for Iphone http://test.saurik.com/iphone/jamvm/

IPhone Java http://web.archive.org/web/20071230000038/http://iphone.fiveforty.net/wiki/index.php/IPhone_Java

Talk:IPhone Java http://web.archive.org/web/20071230050607/http://iphone.fiveforty.net/wiki/index.php/Talk:IPhone_Java

(JamVM Forum) JamVM port to iPhone? http://sourceforge.net/projects/jamvm/forums/forum/256481/topic/1866438

Tutorials Java on Iphone : http://iphoneroot.com/category/java/ http://iphoneroot.com/tutorial-install-java-on-the-iphone/

JamVM

JamVM developer blog http://draenog.blogspot.com/

how to build GNU Classpath and JamVM http://sourceforge.net/projects/jamvm/forums/forum/256481/topic/3208847?message=7193290 http://free-electrons.com/doc/java-labs.odt http://wiki.chumby.com/index.php/Java http://fuseyism.com/openjdk/cvmi/jamvmport.xhtml

JamVM used in Ubuntu https://launchpad.net/ubuntu/oneiric/+source/openjdk-6/6b23~pre4-0ubuntu1 with the latest code in GIT ??? http://draenog.blogspot.com/2011/02/openjdkjamvm-git-repository.html

OpenJDK

For the future when the next JamVM release will be available, replace Gnu Classpath by OpenJDK Java classes :

CrossCompilingOpenJDK https://evolvis.org/plugins/mediawiki/wiki/jalimo/index.php/CrossCompilingOpenJDK

CrossCompileFaq http://icedtea.classpath.org/wiki/CrossCompileFaq

JDK6 for embedded ARM http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-April/000455.html