Difference between revisions of "Building JamVM and GNU Classpath and Jikes (for Java support in webOS) with scratchbox2"

From WebOS Internals
Jump to navigation Jump to search
(It works !!!)
Line 224: Line 224:
 
== Gnu Classpath ==
 
== Gnu Classpath ==
  
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/bin
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/bin
total 52
+
total 52
-rwxr-xr-x 1 ubuntu ubuntu 2073 2012-01-01 19:23 gappletviewer
+
-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 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 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 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 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 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 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 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 grmic
-rwxr-xr-x 1 ubuntu ubuntu 2060 2012-01-01 19:23 grmid
+
-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 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 2075 2012-01-01 19:23 gserialver
-rwxr-xr-x 1 ubuntu ubuntu 2070 2012-01-01 19:23 gtnameserv
+
-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
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/include
total 80
+
total 80
-rw-r--r-- 1 ubuntu ubuntu  3516 2012-01-01 19:23 jawt.h
+
-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  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 66655 2012-01-01 19:23 jni.h
-rw-r--r-- 1 ubuntu ubuntu  1547 2012-01-01 19:23 jni_md.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
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/lib
total 12
+
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:23 classpath
-rw-r--r-- 1 ubuntu ubuntu 1437 2012-01-01 19:23 logging.properties
+
-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
+
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  
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/lib/classpath  
total 1228
+
total 1228
-rwxr-xr-x 1 ubuntu ubuntu    806 2012-01-01 19:23 libjavaio.la
+
-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 -> libjavaio.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu    18 2012-01-01 19:23 libjavaio.so.0 -> 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 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    818 2012-01-01 19:23 libjavalang.la
-rwxr-xr-x 1 ubuntu ubuntu    878 2012-01-01 19:23 libjavalangmanagement.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 -> libjavalangmanagement.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu    30 2012-01-01 19:23 libjavalangmanagement.so.0 -> 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  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
+
-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 -> libjavalangreflect.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu    27 2012-01-01 19:23 libjavalangreflect.so.0 -> 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
+
-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 -> libjavalang.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu    20 2012-01-01 19:23 libjavalang.so.0 -> 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 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
+
-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 -> libjavanet.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu    19 2012-01-01 19:23 libjavanet.so.0 -> 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 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
+
-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 -> libjavanio.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu    19 2012-01-01 19:23 libjavanio.so.0 -> 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 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
+
-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 -> libjavautil.so.0.0.0
lrwxrwxrwx 1 ubuntu ubuntu    20 2012-01-01 19:23 libjavautil.so.0 -> 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
+
-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  
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/lib/security  
total 4
+
total 4
-rw-r--r-- 1 ubuntu ubuntu 2489 2012-01-01 19:23 classpath.security
+
-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
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share
total 12
+
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:23 classpath
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:22 info
+
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
+
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
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/classpath
total 10780
+
total 10780
-rw-r--r-- 1 ubuntu ubuntu 9832050 2012-01-01 19:22 glibj.zip
+
-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
+
-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     
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/info     
total 292
+
total 292
-rw-r--r-- 1 ubuntu ubuntu  83532 2012-01-01 19:22 cp-hacking.info
+
-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 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  98304 2012-01-01 19:22 cp-vmintegration.info
-rw-r--r-- 1 ubuntu ubuntu    815 2012-01-01 19:22 dir
+
-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  
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/man  
total 4
+
total 4
drwxr-xr-x 2 ubuntu ubuntu 4096 2012-01-01 19:23 man1
+
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
+
[SB2 mapping-armv7 armv7] ubuntu@ubuntu-VirtualBox classpath-0.98 $ ls -l /usr/local/share/man/man1
total 164
+
total 164
-rw-r--r-- 1 ubuntu ubuntu  7997 2012-01-01 19:22 gappletviewer.1
+
-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  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  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  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  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 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 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  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  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  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  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  4512 2012-01-01 19:23 gserialver.1
-rw-r--r-- 1 ubuntu ubuntu  4592 2012-01-01 19:23 gtnameserv.1
+
-rw-r--r-- 1 ubuntu ubuntu  4592 2012-01-01 19:23 gtnameserv.1
  
 
== JamVM ==
 
== JamVM ==

Revision as of 00:59, 6 January 2012

'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

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

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 maybe QT or GTK libs.

Create the folders :

mkdir -p /usr/local/bin/
mkdir -p /usr/local/include/
mkdir -p /usr/local/lib/
mkdir -p /usr/local/share/
wget ftp://ftp.gnu.org/gnu/classpath/classpath-0.98.tar.gz
tar xzvf classpath-0.98.tar.gz
cd classpath-0.98
./configure --prefix=/usr/local --disable-examples --without-x --disable-gtk-peer --disable-gconf-peer --disable-plugin --disable-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

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

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

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

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

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!");
  }
}
# /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
Segmentation fault

'NOTE : JamVM doesn't work, there is a problem with segmentation fault to fix'

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