Difference between revisions of "Building JamVM and GNU Classpath and Jikes (for Java support in webOS) with scratchbox2"
m (improve info for compiling Gnu Classpath with GUI et sound support) |
|||
Line 46: | Line 46: | ||
GNU Classpath at Wikipedia : http://en.wikipedia.org/wiki/GNU_Classpath | 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. | + | '''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 <BR> | The extra libs needed for these supports are detailed here : http://www.gnu.org/software/classpath/docs/hacking.html#SEC5 <BR> | ||
− | For compiling with sound support, ALSA libs are needed. For compiling with GUI support, X libs are needed | + | 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. <BR> |
+ | For low footprint memory, Escher is the best choice. [http://marcosroriz.wordpress.com/2010/06/14/gsoc-updates/ More useful information here]. <BR> | ||
Compile : | Compile : |
Revision as of 23:55, 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
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 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 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.
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
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
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