[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
vmintegration.texinfo: Changes committed
From: |
Steven Augart |
Subject: |
vmintegration.texinfo: Changes committed |
Date: |
Sat, 05 Jun 2004 23:45:04 -0400 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 |
I am committing this documentation update.
2004-06-05 Steven Augart <address@hidden>
* doc/vmintegration.texinfo: Added formatting. Fixed some typos.
(Introduction): Added Jikes RVM and JamVM to the VM list.
Minor updates to other VM descriptions.
Index: doc/vmintegration.texinfo
===================================================================
RCS file: /cvsroot/classpath/classpath/doc/vmintegration.texinfo,v
retrieving revision 1.9
diff -I*.class -u -r1.9 vmintegration.texinfo
--- doc/vmintegration.texinfo 29 Mar 2004 20:39:53 -0000 1.9
+++ doc/vmintegration.texinfo 6 Jun 2004 03:42:03 -0000
@@ -90,7 +90,8 @@
@item @uref{http://www.intel.com/research/mrl/orp/,Intel's Open Runtime
Platform}
Intel surprised us not long ago with the release of this rather advanced
VM that uses GNU Classpath for a set of class libraries and works on
-Linux and Windows 2000.
+Linux and Windows 2000. As of June, 2004, it does not appear that ORP
+is under active development.
@item @uref{http://www.sablevm.org/,SableVM}
SableVM is a robust, extremely portable, efficient, and
@@ -127,11 +128,27 @@
GCJ is part of the GNU Compiler Collection (@uref{http://gcc.gnu.org/,GCC}).
On march 6 2000 the libgcj and GNU Classpath projects were officially merged
and there is active work on merging all the classes between the projects.
+Licensed under GPL+exception, just as GNU Classpath is.
@item @uref{http://kissme.sourceforge.net/,Kissme}
This is a free Java Virtual Machine that is being developed on GNU/Linux
-and can run console java applications. kissme also provides support for
-orthogonally persistent java.
+and can run console Java applications. Kissme also provides support for
+orthogonally persistent Java.
address@hidden I don't know what ``orthogonally persistent Java'' is, and I bet
address@hidden there are other people don't know either. -- Steve Augart, 4
June 2004
+
address@hidden @uref{http://jamvm.sourceforge.net/,JamVM}
+A simple, small bytecode interpreter that works out-of-the-box with
+pure GNU Classpath; it is emerging as the preferred platform for
+quickly testing a new build of GNU Classpath. Licensed under the GPL.
+
address@hidden @uref{http://oss.software.ibm.com/jikesrvm,Jikes RVM}
+A free runtime environment for Java, written in Java. Works
+out-of-the-box with pure GNU Classpath. Features an optimizing JIT.
+Runs on the x86 and PowerPC architectures, on the AIX, Linux, and Mac
+OS/X operating systems. Licensed under the CPL (Common Public
+License). Extensively documented. Actively developed as of June,
+2004.
@end itemize
@@ -151,7 +168,7 @@
we'll have a note in here at that time.
The current initialization order is currently documented in the
-Runtime.java source file.
address@hidden source file.
@node Classpath Hooks, VM Hooks, Initialization, Top
@comment node-name, next, previous, up
@@ -173,23 +190,23 @@
from Classpath call out to to get certain VM-specific dirty work done:
@itemize @bullet
address@hidden java.lang.VMObject
-is the bridge between the low level Object facilities such
-as makeing a clone, getting the class of the object and the wait/notify
address@hidden @code{java.lang.VMObject}
+is the bridge between the low level @code{Object} facilities such
+as making a clone, getting the class of the object and the wait/notify
semantics.
address@hidden java.lang.VMClassLoader
address@hidden @code{java.lang.VMClassLoader}
provides methods for defining and resolving core and primitive classes.
address@hidden java.lang.VMSystem
-is used to initialize the System properties, the System.arraycopy
-method and the identityHashCode of an Object.
address@hidden java.lang.VMSecurityManager
address@hidden @code{java.lang.VMSystem}
+is used to initialize the @code{System} properties, the @code{System.arraycopy}
+method and the @code{identityHashCode} of an @code{Object}.
address@hidden @code{java.lang.VMSecurityManager}
provides the class context (stack trace) of the currently
-executing thread and a way to get the currently active ClassLoader.
address@hidden java.lang.VMThrowable
-used to hold the VM state of a throwable, created when a Throwable is
-created or the fillInStacktrace() method is called, when the actual stack
+executing thread and a way to get the currently active @code{ClassLoader}.
address@hidden @code{java.lang.VMThrowable}
+used to hold the VM state of a throwable, created when a @code{Throwable} is
+created or the @code{fillInStacktrace()} method is called, when the actual
stack
trace is needed (a lot of exceptions are never actually used), the
-getStackTrace() method is used to create a real StackTraceElement array
address@hidden()} method is used to create a real @code{StackTraceElement} array
for the exception.
@end itemize
@@ -197,12 +214,12 @@
package-private methods in Classpath:
@itemize @bullet
address@hidden java.lang.ThreadGroup.addThread(Thread)
-Call this method from Thread when a new Thread is created, to add it to
address@hidden @code{java.lang.ThreadGroup.addThread(Thread)}
+Call this method from @code{Thread} when a new @code{Thread} is created, to
add it to
the group.
address@hidden java.lang.ThreadGroup.removeThread(Thread)
-Call this method from Thread when a Thread is stopped or destroyed.
address@hidden @code{java.lang.ThreadGroup.removeThread(Thread)}
+Call this method from @code{Thread} when a @code{Thread} is stopped or
destroyed.
@end itemize
@@ -217,27 +234,27 @@
know about classes.
@itemize @bullet
address@hidden java.lang.Class @*
-You, the VM, get to create this Class, so you may define the internal
address@hidden @code{java.lang.Class} @*
+You, the VM, get to create this @code{Class}, so you may define the internal
structure any way you wish. You probably have code somewhere to
-translate your internal class structure into a Class object. That is
+translate your internal class structure into a @code{Class} object. That is
the only known place where this matters. Some VMs do not create the
-Class object at the point where the class is defined; instead, they wait
-until a Class object is actually used.
address@hidden object at the point where the class is defined; instead, they
wait
+until a @code{Class} object is actually used.
@item Array Classes @*
-When you are creating an array class, you should set the ClassLoader of
-the array class to the ClassLoader of its component type. Whenever you
-add a class to a ClassLoader, you need to notify the ClassLoader and
-add the new Class to its internal cache of classes. To do this, call
-ClassLoader.addVMCreatedClass(Class). @emph{Note: this is written in
+When you are creating an array class, you should set the @code{ClassLoader} of
+the array class to the @code{ClassLoader} of its component type. Whenever you
+add a class to a @code{ClassLoader}, you need to notify the @code{ClassLoader}
and
+add the new @code{Class} to its internal cache of classes. To do this, call
address@hidden(Class)}. @emph{Note: this is written in
anticipation of 1.2 support and does not apply just yet.}
@item Primordial Class Loader @*
When the primordial class loader loads a class, it needs to tell
Classpath what it has done in order for security stuff to work right.
To do this, call the static method
-ClassLoader.newPrimordialClass(Class).
address@hidden(Class)}.
Even the first few core classes need to do this; in order to do it,
simply call this method @emph{after} the initial class loading has been
@@ -249,29 +266,29 @@
@item Top-level Exception Handler @*
Exceptions take care of themselves in Classpath; all you need to do in
-the top-level exception handler is call Throwable.printStackTrace().
+the top-level exception handler is call @code{Throwable.printStackTrace()}.
@item Security and Traces @*
There will eventually be a feature in the 1.2 security that keeps the
-AccessController from having to evaluate @emph{all} of the
-ProtectionDomains every time a security check is made. I think a common
address@hidden from having to evaluate @emph{all} of the
address@hidden every time a security check is made. I think a common
case is a single method doing a lot of things that require security
checks. However, I don't want to bog down the method stack too much, so
-this feature of the VM will have the AccessController for a thread
+this feature of the VM will have the @code{AccessController} for a thread
calling out to the VM to tell it how high it was on the stack when it
made the last security request. Every time the stack goes lower than
-that number, the VM will decrement the number. The AccessController
+that number, the VM will decrement the number. The @code{AccessController}
will remember what the accumulated protection status was at every stack
-level (an AccessControlContext) and use that aggregated information to
+level (an @code{AccessControlContext}) and use that aggregated information to
do the check. I am not sure, however, whether the savings are
substantial enough to outweigh the integer check and set after every
method call. I will investigate.
@item Threading @*
I figured I'd put this here because a VM guy might be wondering about it.
-We implement ThreadGroup, but that class is almost entirely
-VM-independent. The root ThreadGroup, a static field called
-ThreadGroup.root, should be initialized by Classpath, but if you wish to
+We implement @code{ThreadGroup}, but that class is almost entirely
+VM-independent. The root @code{ThreadGroup}, a static field called
address@hidden, should be initialized by Classpath, but if you wish to
reinitialize it yourself, there should be no harm.
@end itemize
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- vmintegration.texinfo: Changes committed,
Steven Augart <=