Hi Steve,<div><br></div><div>There&#39;s been some efforts in this area before. There&#39;s an OpenJDK project called &quot;Common VM Interface&quot; [1], ran by Dr Andrew John Hughes. One of the earlier notes can be found at [2]. The aims of this project seems to be in the same direction as what you&#39;re looking for.</div>
<div><br></div><div>Xi Yang has been working on integrating OpenJDK class libraries into Jikes RVM this year. This work also needed a definition of the VM interface in OpenJDK. He&#39;s made quite a lot of progress already, so he might be able to help out with this documentation proposal. I&#39;m cc&#39;ing this mail to him.</div>
<div><br></div><div>- Kris</div><div><br></div><div>[1]: <a href="http://openjdk.java.net/projects/cvmi/">http://openjdk.java.net/projects/cvmi/</a></div><div>[2]: <a href="http://mail.openjdk.java.net/pipermail/cvmi-dev/2008-July/000006.html">http://mail.openjdk.java.net/pipermail/cvmi-dev/2008-July/000006.html</a><br>
<br><div class="gmail_quote">On Wed, Nov 23, 2011 at 10:29 PM, Steve Poole <span dir="ltr">&lt;<a href="mailto:spoole@linux.vnet.ibm.com">spoole@linux.vnet.ibm.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi all,  I&#39;ve been talking to Mikael Vidstedt and a few other Oracle<br>
luminaries about improving the documentation of the  interface between<br>
the JVM and the rest of the SDK.<br>
<br>
We wanted to make that discussion public hence this post.  I&#39;ll start<br>
and Mikael can jump in.<br>
<br>
What I&#39;m trying to do is simply gain some agreement on what code is JVM<br>
implementation specific and what isn&#39;t.  Then, where this JVM<br>
implementation specific code interacts with the SDK, improve the<br>
documentation.<br>
<br>
A few examples to consider...<br>
<br>
JVM_* entry points in the VM that are there for the class library code<br>
to call: these are not part of the public JNI spec - I&#39;d like to get<br>
them documented in more detail.<br>
<br>
These extra entry points can blur the line between the JVM and the class<br>
libraries: sometimes making  it&#39;s difficult to work out if the &quot;real&quot;<br>
API is the C entry point or the calling Java class. To put it another<br>
way  - there is Java code that is intentionally JVM implementation<br>
specific.   I&#39;d like to get that status documented.<br>
<br>
Another similar example is where Hotspot code leaks out of the JVM into<br>
the class libs and tools.   The Late Attach API is a good (or is that<br>
bad) example. Sometimes it&#39;s difficult to work out if that leakage is<br>
intentional or inadvertent.  I&#39;d like to get that status documented too.<br>
<br>
So to recap:  what I&#39;d like to do is discover and document the API<br>
between the JVM implementation specific code and everything else.<br>
Hopefully in the process improving everyone&#39;s awareness and getting some<br>
common agreement over actual behaviour or design versus intention.  This<br>
work might discover areas that could benefit from improved interface<br>
design and some form of  refactoring but that would be for later.<br>
<br>
<br>
Thanks<br>
<font color="#888888"><br>
Steve<br>
<br>
<br>
</font></blockquote></div><br></div>