Skip to content

Commit c415ba4

Browse files
author
Robert Lougher
committed
Update documentation for release
Signed-off-by: Robert Lougher <rob@jamvm.org.uk>
1 parent 094921e commit c415ba4

File tree

3 files changed

+268
-139
lines changed

3 files changed

+268
-139
lines changed

INSTALL

Lines changed: 63 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
JamVM 1.5.4 Installation
1+
JamVM 2.0.0 Installation
22
========================
33

44
This section describes how to configure, build and install JamVM on
@@ -12,11 +12,23 @@ Getting the Files
1212
You must already have the compressed tar file containing the source
1313
code for JamVM (you're reading this!). For JamVM to run, it must also
1414
have a class library containing the system classes and the associated
15-
native methods (e.g. java.lang.Object). JamVM 1.5.4 has been written to
16-
use GNU Classpath. It is compatible with the latest released version
17-
which is currently 0.98. It is not compatible with earlier versions.
18-
It should also be compatible with the CVS version, and later snapshots,
19-
as long as the VM interface has remained the same.
15+
native methods (e.g. java.lang.Object). JamVM 2.0.0 has been written to
16+
work either OpenJDK/IcedTea or GNU Classpath.
17+
18+
OpenJDK/IcedTea
19+
---------------
20+
21+
As discussed in the README, the easiest way to get an OpenJDK/IcedTea
22+
install that works with JamVM is to get an existing package for your
23+
system and then overwrite the libjvm.so file with the new version. If you
24+
wish to build OpenJDK/IcedTea from source, please refer to the build
25+
instructions contained within the source distribution.
26+
27+
GNU Classpath
28+
-------------
29+
30+
JamVM is compatible with GNU Classpath versions 0.98 and above (earlier
31+
versions will not work). It should also be compatible with the CVS version.
2032

2133
Classpath can be obtained from the following URL:
2234

@@ -32,11 +44,16 @@ Linux distributions.
3244
Building and Installing JamVM
3345
-----------------------------
3446

35-
I'll deal with building GNU classpath later. To build JamVM, you
36-
must first run `configure' to generate the Makefiles specific to your
37-
machine. From the directory containing this file do :-
47+
To build JamVM, you must first run `configure' to generate the Makefiles
48+
specific to your machine. The --with-java-runtime-library option specifies
49+
which class-library to support (by default if the option isn't specified
50+
JamVM is configured for GNU Classpath). Supported values are gnuclasspath,
51+
openjdk6, openjdk7 or openjdk8.
3852

39-
./configure
53+
For example, to configure JamVM to use OpenJDK 8, from the directory
54+
containing this file do :-
55+
56+
./configure --with-java-runtime-library=openjdk8
4057

4158
This should print out some information and then say it's creating
4259
the Makefiles. If it fails, make sure your machine's architecture
@@ -50,9 +67,9 @@ To install in the default location (/usr/local), type :-
5067

5168
make install
5269

53-
This installs an executable of JamVM with debug information (-g).
54-
Alternatively, to install a version with no symbols (which is much
55-
smaller, around 220K on PowerPC and 200K on Intel) type :-
70+
This installs an executable of JamVM and a libjvm.so shared library with
71+
debug information (-g). Alternatively, to install a version with no symbols
72+
(which is much smaller) type :-
5673

5774
make install-strip
5875

@@ -71,7 +88,7 @@ JamVM supports a number of JamVM specific options to `configure'.
7188
For full details do ./configure --help. Most of these are concerned
7289
with enabling tracing (e.g. --enable-tracelock), or selecting which
7390
interpreter variant to build. Unless you want to debug JamVM, or
74-
experiment with the intepreter these should not be needed.
91+
experiment with the interpreter these should not be needed.
7592

7693
Two options, however, are useful and may need to be specified. The
7794
first is '--with-classpath-install-dir=PATH'. This can be used to
@@ -88,6 +105,38 @@ via Classpath and is unaffected, and will still support jar/zip files).
88105
This will reduce the JamVM executable by approx 10K (but see note below, in
89106
Classpath installation).
90107

108+
Installing JamVM into OpenJDK/IcedTea
109+
-------------------------------------
110+
111+
When using JamVM with OpenJDK/IcedTea, JamVM's libjvm.so file must be
112+
copied from its initial install location into the OpenJDK/IcedTea
113+
installation.
114+
115+
The default install location puts libjvm.so into /usr/local/jamvm/lib.
116+
117+
IcedTea supports JamVM as an alternative VM which is invoked using the
118+
-jamvm option to java. To install a new version of libjvm.so, locate the
119+
jamvm directory within IcedTea. For example, for OpenJDK 7 on an x64_64
120+
Debian system this is /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/jamvm.
121+
122+
If installing into OpenJDK, the default HotSpot libjvm.so can be overwritten
123+
by JamVM's libjvm.so. When java is executed it will now run JamVM (if
124+
HotSpot is still required you can create a copy of OpenJDK, and overwrite
125+
the libjvm.so in the copy). HotSpot will be in either the client or server
126+
directory, e.g. <openjdk-install>/jre/lib/amd64/server.
127+
128+
Do the copy (as root), e.g.:
129+
130+
cp /usr/local/jamvm/lib/libjvm.so /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/jamvm
131+
132+
To test the install has been successful, run java -version, e.g.:
133+
134+
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -jamvm -version
135+
java version "1.7.0_65"
136+
OpenJDK Runtime Environment (IcedTea 2.5.1) (7u65-2.5.1-2~deb7u1)
137+
JamVM (build 2.0.0, inline-threaded interpreter)
138+
139+
91140
Building and Installing GNU classpath
92141
-------------------------------------
93142

NEWS

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,131 @@
1+
JamVM 2.0.0 released on 30th July 2014
2+
======================================
3+
4+
JamVM 2.0.0 is the first release of JamVM with support for OpenJDK. Although
5+
IcedTea already includes JamVM with OpenJDK support, this has been based on
6+
periodic snapshots of the development tree.
7+
8+
This release supports OpenJDK 6, 7 and 8 (the latest). With OpenJDK 7 and 8
9+
this includes full support for JSR 292 (invokedynamic). JamVM 2.0.0
10+
with OpenJDK 8 also includes full support for Lambda expressions (JSR 335),
11+
type annotations (JSR 308) and method parameter reflection.
12+
13+
In addition to OpenJDK support, JamVM 2.0.0 also includes many bug-fixes,
14+
performance improvements and improved compatibility (from running the OpenJDK
15+
jtreg tests). The following is an edited list of the top ~100 commits (out
16+
of 300+) in date order (most recent first). The list has been categorised
17+
into those affecting OpenJDK only, GNU Classpath only, and both OpenJDK and
18+
GNU Classpath (All).
19+
20+
- OpenJDK: JSR 292: show full anonymous/lamdba class name in stack trace
21+
- OpenJDK: JSR 292: resolvePolyMethod race-conditions
22+
- OpenJDK: JSR 292: Free callsite linked-list on class GC
23+
- OpenJDK: JSR 292: Fix for invokedynamic resolution (must be per callsite)
24+
- OpenJDK: JSR 292: constant method handle can be signature polymorphic
25+
- All: More command-line compatibility options
26+
- OpenJDK: Use correct thread group function when thread dies
27+
- GNU Classpath: update JamVM's version of VMAccessController
28+
- All: Check ClassBlock padding at VM initialisation
29+
- GNU Classpath: Update GNU Classpath ClassBlock padding
30+
- OpenJDK: Make ClassBlock padding dependent on OpenJDK version
31+
- OpenJDK: JSR 292: Fix RepetitiveLambdaSerialization jtreg test
32+
- OpenJDK: Fix compatibility issues on different Unixes
33+
- All: Explicitly initialise java.lang.Class
34+
- All: Optimise ClassBlock structure
35+
- OpenJDK: JSR 292: anonymous class resolution to itself
36+
- OpenJDK: JSR 292: anonymous classes should use host_class permissions
37+
- OpenJDK: JSR 292: findInvokeDynamicInvoker fix exception handling
38+
- OpenJDK: JSR 292: Fix CallStaticInitOrder jtreg test
39+
- OpenJDK: JVM_NewMultiArray: element class may be an array
40+
- OpenJDK: jtreg test java/lang/reflect/Array/ExceedMaxDim
41+
- OpenJDK: Fix Local/Anonymous class checks
42+
- All: Fix race-condition in constant-pool resolution code
43+
- OpenJDK: JSR 292: MethodHandle constant-pool refs may be resolved
44+
- OpenJDK: JSR 292: bootstrap method args error handling
45+
- GNU Classpath: race-condition in thread detach
46+
- GNU Classpath: fix threading issue in lookupLoadedDlls0
47+
- All: Race condition in setting up imethod table
48+
- All: GC: Several minor performance improvements
49+
- OpenJDK: Add support for CallerSensitive
50+
- OpenJDK: JSR 335: handle interfaces when resolving a method
51+
- OpenJDK: sun.misc.Unsafe: additional methods get/putAddress
52+
- OpenJDK: JSR 292: enable for OpenJDK 7/IcedTea 2
53+
- OpenJDK: JSR 335: invokeinterface check in method resolution
54+
- OpenJDK: JSR 335: implement "bridge" methods for Mirandas
55+
- OpenJDK: JSR 335: interface methods - handle multiple defaults and conflicts
56+
- All: Fix invokesuper check in invokespecial opcode
57+
- OpenJDK: JSR 901: VM support for method parameter reflection
58+
- OpenJDK: JSR 335: VM support for lambda expressions
59+
- OpenJDK: Implement JSR 308: Type Annotations
60+
- All: Re-work internal storage of annotation data
61+
- OpenJDK: JSR 292: update intrinsic cache after GC compaction
62+
- OpenJDK: JSR 292: initMemberName: handle constructor
63+
- OpenJDK: JSR 292: implement MethodHandleNatives::expand
64+
- OpenJDK: JSR 292: resolveMemberName: throw LinkageError
65+
- OpenJDK: JSR 292: intercept LinkageError when linking callsite
66+
- OpenJDK: JSR 292: handle fields in findMethodHandleConstant
67+
- OpenJDK: JSR 292: enable only when configuring for OpenJDK8
68+
- OpenJDK: Implement fence methods in sun.misc.Unsafe
69+
- OpenJDK: JSR 292: implement intrinsic cache
70+
- OpenJDK: JSR 292: use internal opcodes for intrinsics
71+
- OpenJDK: Very simple field injection framework
72+
- OpenJDK: JSR 292 Lambda access control jtreg tests
73+
- OpenJDK: Garbage collector changes for JSR 292
74+
- OpenJDK: Yet more JSR 292 jtreg tests
75+
- OpenJDK: Set anonymous class protection domain
76+
- OpenJDK: JSR 292: all jtreg tests now pass
77+
- OpenJDK: First commit of OpenJDK8 JSR292 support (invokedynamic)
78+
- OpenJDK: Do not put version number in libjvm.so SONAME
79+
- All: Changes for Raspbian (Raspberry Pi)
80+
- All: Add extra compatibility options
81+
- All: When suspending, ignore detached threads that have died
82+
- All: Update stubs generator to handle ref returns
83+
- All: Ref return values from JNI methods need to handled specially
84+
- OpenJDK: Implement classlibCheckIfOnLoad() on OpenJDK
85+
- OpenJDK: OpenJDK 7: make thread states JVMTI compatible
86+
- All: Add OpenBSD/sparc to list of recognised hosts
87+
- All: Make command line compatibility options table-driven
88+
- OpenJDK: Skip Java-reflection-related DelegatingClassLoaders
89+
- All: Generic JNI stubs for common JNI method signatures
90+
- All: Add support for armhf
91+
- OpenJDK: Fix OpenJDK enclosingMethodInfo()
92+
- All: "Fix" handling of CLI bootclasspath options
93+
- All: Correct thrown exception by bootstrap loader
94+
- All: Fix threading of references list during compaction
95+
- All: Fix class GC with classes containing Miranda methods
96+
- All: Propogate initialisation errors to top-level
97+
- OpenJDK: Extra sun.misc.Unsafe functions
98+
- GNU Classpath: Fix VMThread.join
99+
- OpenJDK: Initial implementation of JVM_FindClassFromBootLoader
100+
- All: Fix callJNIMethod on i386 with -fomit-frame-pointer
101+
- All: Fix backwards cache conflict resolution code
102+
- All: Unify command line options parsing
103+
- OpenJDK: Implement remaining OpenJDK Array reflection interface
104+
- All: Base default min and max heap size on physical memory
105+
- OpenJDK: Fix reflective array access
106+
- All: Rewrite integer divide overflow check
107+
- OpenJDK: First set of changes to support JamVM/OpenJDK on MacOS X
108+
- All: Handle integer overflow on i386/amd64
109+
- All: On ARM, force interpreter to be built in ARM mode
110+
- All: MIPS: 64-bit and interpreter inlining by default
111+
- OpenJDK: Fix bug in JVM_NewMultiArray
112+
- All: JNI compatibility options and error printing
113+
- OpenJDK: Nasty compaction bug with OpenJDK classloader tables
114+
- All: Native return types smaller than an int must be handled specially
115+
- All: Add MIPS support for inlining
116+
- All: Update arm.h for ARMv7-A
117+
- All: Linux implementation of nativeJVMPath()
118+
- OpenJDK: Changes to VM to support different class-libraries
119+
- All: Fix for LNEG with stack-caching enabled on 32 bit machines (seen on ARM)
120+
- All: Fix for I2L on MIPS
121+
- All: Fix getMethodParameterAnnotations when there are no annotations
122+
- All: Fix constructorParameterAnnotations
123+
- All: Initial version of JNI stubs generator
124+
- All: Support for JNI stubs (signature specific fast invoke)
125+
- OpenJDK: Implement JNI RegisterNatives (first change for OpenJDK)
126+
- All: Add JNI 1.6 to supported versions returned by JNI onload
127+
128+
1129
JamVM 1.5.4 released on 1st January 2010
2130
========================================
3131

0 commit comments

Comments
 (0)