diff options
75 files changed, 7551 insertions, 0 deletions
diff --git a/website/build/site/devguide/concepts.html b/website/build/site/devguide/concepts.html new file mode 100644 index 00000000..00884335 --- /dev/null +++ b/website/build/site/devguide/concepts.html @@ -0,0 +1,291 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET User Manual: Concepts</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Concepts</font></span> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET User Manual: Concepts</h1> +</td> +</tr> +</table> +<p>This section discusses several important concepts about + the capabilities and limitations of IKVM.NET. </p> +<ul class="minitoc"> +<li> +<a href="#Class+Loading">Class Loading</a> +</li> +<li> +<a href="#Debugging+Support">Debugging Support</a> +</li> +</ul> + +<a name="N10015"></a><a name="Class+Loading"></a> +<h3>Class Loading</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM.NET fully supports dynamic Java class loading, both in Java applications running in the ikvm + JVM, as well as in Java applications which have been converted to .NET CIL using ikvmc. + </p> +<a name="N1001E"></a><a name="Class+Loading+in+Dynamically+Interpreted+Java+Applications"></a> +<h4>Class Loading in Dynamically Interpreted Java Applications</h4> +<div style="margin-left: 0 ; border: 2px"> +<p>When you run a Java application using ikvm, ikvm finds and loads Java .class files much like + other Java VM's. See the <a href="../userguide/ikvm.html">ikvm notes</a> for details.</p> +</div> +<a name="N1002C"></a><a name="Class+Loading+in+ikvmc-compiled+Java+Applications"></a> +<h4>Class Loading in ikvmc-compiled Java Applications</h4> +<div style="margin-left: 0 ; border: 2px"> +<p>When you convert a Java application to CIL using ikvmc, it executes as "native" .NET code. Applications that + use the Java classloading API (<span class="codefrag">Class.forName( )</span>, and so forth) locate classes using the following algorithm:</p> +<ol> + +<li>All loaded assemblies are searched first. Thus, if the class exists in the .exe or any referenced dll's, + it will be found there.</li> + +<li>If the class is not in a loaded assembly, the CLASSPATH is searched for a Java .class. If found, it is dynamically loaded + and executed using the IKVM interpreter.</li> + +</ol> +<p>This approach means you can develop .NET applications in Java that execute at native .NET speeds, but enjoy the flexibility + of dynamic class loading at runtime. For example, you can write a .NET application that loads type-4 JDBC drivers dynamically.</p> +<p>For the most part, all of this works the way you want without much thought on your part. But there are a few situations + that will require special handling. Consider, for example, an application that has been compiled by ikvmc into several assemblies, A.exe, B.dll, and C.dll. + A.exe references B.dll, but neither A.exe nor B.dll reference C.dll directly (perhaps C.dll is a JDBC driver). + If code in A.exe uses Class.forName( ) to load a class in B.dll, everything is fine. + But if code in A.exe or B.dll uses Class.forName( ) to load classes in C.dll, things are not fine. Since neither A.exe nor B.dll references + C.dll, it will not have been loaded into the application domain at runtime, and the application will fail with a Class Not Found + runtime exception.</p> +<p>In cases like this, your application must force the runtime to load an assembly into the application domain before calling + Class.forName( ). To do this, call <strong>TODO: Insert API method here</strong>.</p> +</div> +</div> + + +<a name="N1004F"></a><a name="Debugging+Support"></a> +<h3>Debugging Support</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>Java applications converted to CIL using ikvmc with the -debug option can be debugged using standard .NET / Mono debugging + tools. Remember to compile the Java source code using the appropriate debug option (javac: -g or jikes: -g:lines,vars,source).</p> +</div> + +<div class="attribution">by Stephen Schaub</div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/devguide/intro.html b/website/build/site/devguide/intro.html new file mode 100644 index 00000000..227d8507 --- /dev/null +++ b/website/build/site/devguide/intro.html @@ -0,0 +1,240 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET Developer's Guide</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<span class="sel"><font color="#ffcc00">Introduction</font></span> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET Developer's Guide</h1> +</td> +</tr> +</table> + + +<p>IKVM.NET makes it possible both to develop .NET applications in Java, and to use existing Java API's and libraries + in applications written in any .NET language. This guide includes information of + interest to developers who want to use Java as their preferred .NET development language, as well as + for those who wish to use Java libraries in their C# or VB.NET applications.</p> + + +<div class="attribution">by Stephen Schaub</div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/devguide/java2net.html b/website/build/site/devguide/java2net.html new file mode 100644 index 00000000..711714db --- /dev/null +++ b/website/build/site/devguide/java2net.html @@ -0,0 +1,394 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Developing .NET Applications in Java</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Developing in Java</font></span> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>Developing .NET Applications in Java</h1> +</td> +</tr> +</table> +<p>This section discusses information you need to know when you + want to develop .NET applications in Java. </p> +<ul class="minitoc"> +<li> +<a href="#Overview">Overview</a> +</li> +<li> +<a href="#Mapping+.NET+API%27s+to+Java">Mapping .NET API's to Java</a> +</li> +<li> +<a href="#Properties">Properties</a> +</li> +<li> +<a href="#Enumerations">Enumerations</a> +</li> +<li> +<a href="#Delegates+and+Event+Processing">Delegates and Event Processing</a> +</li> +<li> +<a href="#Varargs">Varargs</a> +</li> +</ul> + + +<a name="N10015"></a><a name="Overview"></a> +<h3>Overview</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM makes it possible to develop .NET applications using the Java language. Here's how it works:</p> +<ol> + +<li>Identify .NET classes you want to use in your application.</li> + +<li>Identify which .NET dll's contain the .NET classes you identified in step 1. + <p> +<strong>Tip:</strong> If you're developing on Windows, the Microsoft .NET SDK Class Reference documentation identifies the assembly / dll + for a .NET class at the bottom of each class overview page.</p> + +</li> + +<li>Use the <a href="../userguide/ikvmstub.html">ikvmstub</a> application to generate a Java jar file for each dll you identified in step 2. + <p>The ikvmstub tool analyzes the .NET classes in the designated dll + and generates a jar file containing Java interfaces and stub classes. This information is needed by the Java source compiler, which + knows nothing about .NET assemblies.</p> + +</li> + +<li>Compile your Java source code using javac or jikes, with the ikvmstub-generated jar files on the compiler classpath.</li> + +<li>Compile the resulting Java classes using ikvmc. Use the -reference option to reference the dll's containing the + .NET classes you used; do <em>not</em> include the ikvmstub-generated jar files on the compiler classpath.</li> + +</ol> +<p>For an example of this, see the <a href="../userguide/tutorial.html">tutorial</a>.</p> +</div> + + +<a name="N10047"></a><a name="Mapping+.NET+API%27s+to+Java"></a> +<h3>Mapping .NET API's to Java</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>When ikvmstub generates a stub jarfile, it has to prevent namespace conflicts between Java API classes and + generated stub classes. It must also map .NET features such as properties, delegates, enumerations, + and variable-length argument lists to Java language equivalents. + </p> +<p>To prevent namespace conflicts, ikvmstub creates Java package names from .NET namespaces by + prefixing them with cli. For example, a .NET class in the <span class="codefrag">System.IO</span> namespace would have a stub generated + for it in a Java package named <span class="codefrag">cli.System.IO</span>. So, when writing Java code that uses the + System.IO.File class, you would use one of the following import statements in your Java code:</p> +<div class="pre"> +<span class="codefrag"> import cli.System.IO.*; + import cli.System.IO.File; +</span> +</div> +<p>The following sections discuss how .NET features are mapped to the Java language. Some of the mappings, + such as properties and enumerations, are fairly straightforward. Others, such as delegates and event handling, + require a little more work. </p> +<p> +<strong>Tip:</strong> Java development tools that + provide code assist features are a great help when writing applications that use .NET API's. + If you install the ikvmstub-generated jar files into your favorite Java IDE, you can use code completion to help you + use the .NET methods, properties, and enumerations correctly. Note, however, that you will not be able to test + your applications using your Java IDE debugger. + </p> +</div> + + +<a name="N10069"></a><a name="Properties"></a> +<h3>Properties</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>Since Java has no direct language support for properties, ikvmstub maps .NET properties to Java getter and + setter methods. A .NET property defined in C# like this:</p> +<pre class="code"> + public <em>datatype</em> <em>property-name</em> { + get { ... } + set { ... } + }</pre> +<p>would be translated to a pair of Java stub methods, like this:</p> +<pre class="code"> + public <em>datatype</em> get_<em>property-name</em>( ) { ... } + public void set_<em>property-name</em>(<em>datatype</em> value) { ... }</pre> +<p>Here is an example of C# code that uses a property, and how you would access the same property in Java: + </p> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> + +<tr> + +<th colspan="1" rowspan="1">C#</th> + <th colspan="1" rowspan="1">Java</th> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + +<div class="pre"> +<span class="codefrag"> + int weight = bear.Weight; + bear.Weight = 15; + </span> +</div> + +</td> + <td colspan="1" rowspan="1"> + +<div class="pre"> +<span class="codefrag"> + int weight = bear.get_Weight(); + bear.set_Weight(15); + </span> +</div> + +</td> + +</tr> + +</table> +</div> + + +<a name="N100BE"></a><a name="Enumerations"></a> +<h3>Enumerations</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>TODO. For now, see the <a href="http://weblog.ikvm.net/allentries.aspx">IKVM Weblog</a>, March 20, 2004 entry. + </p> +</div> + + +<a name="N100CC"></a><a name="Delegates+and+Event+Processing"></a> +<h3>Delegates and Event Processing</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>TODO. For now, see the <a href="http://weblog.ikvm.net/allentries.aspx">IKVM Weblog</a>, March 20, 2004 entry. + Also, see the winforms sample.</p> +</div> + + +<a name="N100DA"></a><a name="Varargs"></a> +<h3>Varargs</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>TODO. For now, see the <a href="http://weblog.ikvm.net/allentries.aspx">IKVM Weblog</a>, March 20, 2004 entry. + Also, see the usenetapi/CreateFile.java sample.</p> +</div> + +<div class="attribution">by Stephen Schaub</div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/devguide/net2java.html b/website/build/site/devguide/net2java.html new file mode 100644 index 00000000..3d40e1a8 --- /dev/null +++ b/website/build/site/devguide/net2java.html @@ -0,0 +1,304 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Using Java API's in .NET Applications</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Using Java Libraries</font></span> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>Using Java API's in .NET Applications</h1> +</td> +</tr> +</table> +<p>This section discusses information of interest to developers + who want to use Java API's in their .NET applications. </p> +<ul class="minitoc"> +<li> +<a href="#Overview">Overview</a> +</li> +<li> +<a href="#Java+%2F+.NET+Interoperability+Issues">Java / .NET Interoperability Issues</a> +</li> +<li> +<a href="#Subclassing+Java+Code">Subclassing Java Code</a> +</li> +</ul> + + +<a name="N1000F"></a><a name="Overview"></a> +<h3>Overview</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM makes it possible to develop .NET applications that use Java API's. Here's how to proceed:</p> +<ol> + +<li>IKVM comes with an implementation of GNU Classpath in .NET. To use those API's, simply add + a reference to IKVM.GNU.Classpath.dll to your Mono / .NET IDE project. </li> + +<li>To use other Java API's, you can take one of the following approaches: + <ul> + +<li>Convert the Java API to .NET CIL using <a href="../userguide/ikvmc.html">ikvmc</a>. + This produces a .NET dll that you can reference in your project. </li> + +<li>Use the Java reflection API's to dynamically load and execute the Java bytecode using the + IKVM bytecode interpreter. + For example, your application can load Java bytecode over a network connection + and execute it dynamically.</li> + +</ul> + +</li> + +</ol> +</div> + + +<a name="N1002F"></a><a name="Java+%2F+.NET+Interoperability+Issues"></a> +<h3>Java / .NET Interoperability Issues</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>When calling Java API's from a .NET language such as C#, you will need to know + how to deal with the gap between the .NET and Java object models. For example, Java and .NET + both have their own String class, primitive wrapper classes, exception hierarchy, and so on. + Eventually, that information will be included in this manual. For now, you can use the following + as resources:</p> +<ul> + +<li>The <a href="http://weblog.ikvm.net">IKVM WebLog</a> has several + helpful entries. The series from February 29 - March 10 describe the object model.</li> + +<li>The hodgepodge sample in the <a href="../download.html">sample distribution</a> + is a simple demonstration of using Java API's from a C# application.</li> + +<li>The IKVM source code is the ultimate reference, of course. </li> + +</ul> +</div> + + +<a name="N1004D"></a><a name="Subclassing+Java+Code"></a> +<h3>Subclassing Java Code</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>See IKVM Weblog Article: March 9</p> +</div> + + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/download.html b/website/build/site/download.html new file mode 100644 index 00000000..1a821533 --- /dev/null +++ b/website/build/site/download.html @@ -0,0 +1,237 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Downloading IKVM.NET</title> +<link type="text/css" href="skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="index.html" title="">Home</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Download</font></span> +</li> + +<li> +<a href="uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>Downloading IKVM.NET</h1> +</td> +</tr> +</table> + +<p>IKVM.NET source and binary distributions are available for download on + <a target="_blank" href="http://sourceforge.net/project/showfiles.php?group_id=69637">Sourceforge</a>.</p> + + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"><a href="skin/images/label.gif"></a><a href="skin/images/page.gif"></a><a href="skin/images/chapter.gif"></a><a href="skin/images/chapter_open.gif"></a><a href="skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/faqdoc.html b/website/build/site/faqdoc.html new file mode 100644 index 00000000..1293e23d --- /dev/null +++ b/website/build/site/faqdoc.html @@ -0,0 +1,254 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title></title> +<link type="text/css" href="skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="index.html" title="">Home</a> +</li> + +<li> +<a href="download.html" title="">Download</a> +</li> + +<li> +<a href="uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">FAQ</font></span> +</li> + +<li> +<a href="license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> + <h2 xmlns="http://www.w3.org/1999/xhtml">Frequently Asked Questions</h2> +<P xmlns="http://www.w3.org/1999/xhtml"> +<STRONG>What is IKVM.NET?</STRONG> +</P> +<P xmlns="http://www.w3.org/1999/xhtml">IKVM.NET is a JVM for <A href="http://www.go-mono.com/">Mono</A> and the Microsoft .NET framework.</P> +<P xmlns="http://www.w3.org/1999/xhtml"> +<STRONG>What do you mean by <EM>JVM for .NET</EM>?</STRONG> +</P> +<P xmlns="http://www.w3.org/1999/xhtml">The goal of IKVM.NET is two-fold:</P> +<ul xmlns="http://www.w3.org/1999/xhtml"> + <li>To be able to run any Java existing application ("dynamic mode").</li> +<li>To be able to statically compile Java libraries into .NET assemblies +("static mode"). Note that you can also statically compile Java applications, +but if the application depends on the exact Java class loading semantics, it +might need to be adapted. Dynamic mode supports the full Java class loader +model, but in static mode there are necessarily some limitations. A mixed model +is also possible, for example, statically compiled code can instantiate a class +loader and use it to dynamically load classes.</li> +</ul> + +<P xmlns="http://www.w3.org/1999/xhtml"> +<STRONG>Why this project?</STRONG> +</P> +<P xmlns="http://www.w3.org/1999/xhtml">There are several answers to this. First of all, it's a fun thing to work on. Second, it just seems obvious that something like this should exist. Third, I want to migrate some of my Java code to .NET and J# and JUMP just aren't good enough.</P> +<P xmlns="http://www.w3.org/1999/xhtml"> +<STRONG>How compatible is it?</STRONG> +</P> +<P xmlns="http://www.w3.org/1999/xhtml">The goal is to fully implement the JVM spec and to be compatible with Sun's JDK 1.4 reference implementation. At the moment we're not quite there yet, but many things are working already. Note that this refers to the JVM, not the class libraries. For details on the completeness of the class libraries, please visit the <A href="http://www.gnu.org/software/classpath/">GNU Classpath</A> site.</P> + + +</div> +</td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"><a href="skin/images/label.gif"></a><a href="skin/images/page.gif"></a><a href="skin/images/chapter.gif"></a><a href="skin/images/chapter_open.gif"></a><a href="skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/favicon.ico b/website/build/site/favicon.ico Binary files differnew file mode 100644 index 00000000..161bcf78 --- /dev/null +++ b/website/build/site/favicon.ico diff --git a/website/build/site/images/built-with-forrest-button.png b/website/build/site/images/built-with-forrest-button.png Binary files differnew file mode 100644 index 00000000..4a787abe --- /dev/null +++ b/website/build/site/images/built-with-forrest-button.png diff --git a/website/build/site/images/project.gif b/website/build/site/images/project.gif Binary files differnew file mode 100644 index 00000000..52613e01 --- /dev/null +++ b/website/build/site/images/project.gif diff --git a/website/build/site/index.html b/website/build/site/index.html new file mode 100644 index 00000000..807b9e74 --- /dev/null +++ b/website/build/site/index.html @@ -0,0 +1,360 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET Home Page</title> +<link type="text/css" href="skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<span class="sel"><font color="#ffcc00">Home</font></span> +</li> + +<li> +<a href="download.html" title="">Download</a> +</li> + +<li> +<a href="uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET Home Page</h1> +</td> +</tr> +</table> +<ul class="minitoc"> +<li> +<a href="#Introduction">Introduction</a> +</li> +<li> +<a href="#IKVM.NET+Components">IKVM.NET Components</a> +</li> +<li> +<a href="#Project+Status">Project Status</a> +</li> +<li> +<a href="#Related+Work">Related Work</a> +</li> +</ul> + +<a name="N1000C"></a><a name="Introduction"></a> +<h3>Introduction</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM.NET is an implementation of Java for <a target="_blank" href="http://www.go-mono.org">Mono</a> and the <a target="_blank" href="http://msdn.microsoft.com/netframework/">Microsoft .NET Framework</a>. + It includes the following components:</p> +<ul> + +<li>A Java Virtual Machine implemented in .NET</li> + +<li>A .NET implementation of the Java class libraries</li> + +<li>Tools that enable Java and .NET interoperability</li> + +</ul> +<p> +<a href="uses.html">Read more</a> about what you can do with IKVM.NET.</p> +</div> + +<a name="N10030"></a><a name="IKVM.NET+Components"></a> +<h3>IKVM.NET Components</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM.NET consists of several parts:</p> +<ul> + +<li> + +<strong>ikvm.runtime.dll</strong>: The VM runtime and all supporting code. It contains (among other things): +<ul> + +<li>Byte Code JIT compiler/verifier: Just-in-time compiles Java Byte Code to CIL.</li> + +<li>Object model remapping infrastructure: Makes System.Object, System.String and System.Exception appear to +Java code as java.lang.Object, java.lang.String and java.lang.Throwable.</li> + +<li>Managed .NET re-implementations of the native methods in Classpath. </li> + +</ul> + +</li> + +<li> + +<strong>ikvm.gnu.classpath.dll</strong>: compiled version of <a href="http://www.gnu.org/software/classpath/classpath.html">GNU Classpath</a>, the Free Software Foundation's implementation of the Java class libraries, +plus some additional IKVM.NET specific code. Note that GNU Classpath isn't <em>part</em> of IKVM.NET, but it is <em>used</em> by IK.VM.NET +</li> + +<li> + +<strong>ikvm.jni.[mono|clr-win32].dll</strong>: Managed C++ assembly that implements the JNI interface. This is an optional part, only required when an application uses its own native libraries. This will not be required for pure Java applications, this is important because this code will only run on Microsoft's .NET implementation. +</li> + +<li> + +<strong>ikvm.exe</strong>: Starter executable, comparable to java.exe ("dynamic mode"). +</li> + +<li> + +<strong>ikvmc.exe</strong>: Static compiler. Used to compile Java classes and jars into a .NET assembly ("static mode") . +</li> + +<li> + +<strong>ikvmstub.exe</strong>: A tool that generates stub class files from a .NET assembly, so that Java code can be compiled against .NET code. IKVM.NET understands the stubs and replaces the references to the stubs by references to the actual .NET types. +</li> + +<li> + +<strong>IKVM.AWT.WinForms.dll</strong>: Very limited and broken implementation of a few AWT peers. This is a low priority issue for me.</li> + +</ul> +</div> + +<a name="N1007D"></a><a name="Project+Status"></a> +<h3>Project Status</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>This project is currently in active development. Compliance with JDK 1.4 is largely implemented, but there are some + holes (particularly in the <a target="_top" href="http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html">Classpath API's</a>). In particular, </p> +<ul> + +<li>AWT and Swing are not presently functional. This is a low priority item for the project developers.</li> + +<li>Security is another fairly large hole missing from the IKVM platform. This will be solved by relying on the sophisticated and powerful security model offered by the .NET platform.</li> + +</ul> +<p>Still, enough functionality is in place that several large Java projects run successfully. </p> +</div> + +<a name="N10097"></a><a name="Related+Work"></a> +<h3>Related Work</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>The following projects are related to IKVM.NET in some way:</p> +<ul> + +<li> +<a href="http://www.monodevelop.com/">MonoDevelop: A Mono IDE with IKVM Support</a> +</li> + +<li> +<a href="http://www.gnu.org/software/classpath/classpath.html">GNU Classpath: The Free Java Library Project</a> +</li> + +<li> +<a href="http://msdn.microsoft.com/vjsharp/default.aspx">Microsoft's J# for .NET</a> +</li> + +</ul> +</div> + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"><a href="skin/images/label.gif"></a><a href="skin/images/page.gif"></a><a href="skin/images/chapter.gif"></a><a href="skin/images/chapter_open.gif"></a><a href="skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"> +<div> +<a href="http://validator.w3.org/check/referer"><img width="88" height="31" alt="Valid HTML 4.01!" src="skin/images/valid-html401.png" class="logoImage"></a><a href="http://jigsaw.w3.org/css-validator/"><img width="88" height="31" alt="Valid CSS!" src="skin/images/vcss.png" class="logoImage"></a><img alt="" height="1" width="10" src="skin/images/spacer.gif"><a href="http://xml.apache.org/forrest/"><img border="0" alt="Built with Apache Forrest logo" src="images/built-with-forrest-button.png" width="88" height="31"><img height="1" width="5" alt="" src="skin/images/spacer.gif" class="spacer"></a> +</div> +</td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/license.html b/website/build/site/license.html new file mode 100644 index 00000000..b919e420 --- /dev/null +++ b/website/build/site/license.html @@ -0,0 +1,241 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title></title> +<link type="text/css" href="skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="index.html" title="">Home</a> +</li> + +<li> +<a href="download.html" title="">Download</a> +</li> + +<li> +<a href="uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="faqdoc.html" title="">FAQ</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">License</font></span> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> + +<tt> + +<p> Copyright (C) 2002, 2003 Jeroen Frijters</p> + +<p> This software is provided 'as-is', without any express or implied<br> warranty. In no event will the authors be held liable for any damages<br> arising from the use of this software.</p> + +<p> Permission is granted to anyone to use this software for any purpose,<br> including commercial applications, and to alter it and redistribute it<br> freely, subject to the following restrictions:</p> +<p> 1. The origin of this software must not be misrepresented; you must not<br> claim that you wrote the original software. If you use this software<br> in a product, an acknowledgment in the product documentation would be<br> appreciated but is not required.<br> 2. Altered source versions must be plainly marked as such, and must not be<br> misrepresented as being the original software.<br> 3. This notice may not be removed or altered from any source distribution.</p> + +<p> Jeroen Frijters<br> +<A href="mailto:jeroen@frijters.net">jeroen@frijters.net</A> +<br> +</p> + +</tt> + +</div> +</td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"><a href="skin/images/label.gif"></a><a href="skin/images/page.gif"></a><a href="skin/images/chapter.gif"></a><a href="skin/images/chapter_open.gif"></a><a href="skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/skin/breadcrumbs-optimized.js b/website/build/site/skin/breadcrumbs-optimized.js new file mode 100644 index 00000000..bf0c44fe --- /dev/null +++ b/website/build/site/skin/breadcrumbs-optimized.js @@ -0,0 +1,67 @@ +var PREPREND_CRUMBS=new Array(); +PREPREND_CRUMBS.push(new Array("Apache","http://www.apache.org/")); +PREPREND_CRUMBS.push(new Array("Jakarta","http://jakarta.apache.org/")); +var DISPLAY_SEPARATOR=" > "; +var DISPLAY_PREPREND=""; +var DISPLAY_POSTPREND=":"; +var CSS_CLASS_CRUMB="breadcrumb"; +var CSS_CLASS_TRAIL="breadcrumbTrail"; +var CSS_CLASS_SEPARATOR="crumbSeparator"; +var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); +var PATH_SEPARATOR="/"; + +function sc(s) { + var l=s.toLowerCase(); + return l.substr(0,1).toUpperCase()+l.substr(1); +} +function getdirs() { + var t=document.location.pathname.split(PATH_SEPARATOR); + var lc=t[t.length-1]; + for(var i=0;i < FILE_EXTENSIONS.length;i++) + { + if(lc.indexOf(FILE_EXTENSIONS[i])) + return t.slice(1,t.length-1); } + return t.slice(1,t.length); +} +function getcrumbs( d ) +{ + var pre = "/"; + var post = "/"; + var c = new Array(); + if( d != null ) + { + for(var i=0;i < d.length;i++) { + pre+=d[i]+postfix; + c.push(new Array(d[i],pre)); } + } + if(PREPREND_CRUMBS.length > 0 ) + return PREPREND_CRUMBS.concat( c ); + return c; +} +function gettrail( c ) +{ + var h=DISPLAY_PREPREND; + for(var i=0;i < c.length;i++) + { + h+='<a href="'+c[i][1]+'" >'+sc(c[i][0])+'</a>'; + if(i!=(c.length-1)) + h+=DISPLAY_SEPARATOR; } + return h+DISPLAY_POSTPREND; +} + +function gettrailXHTML( c ) +{ + var h='<span class="'+CSS_CLASS_TRAIL+'">'+DISPLAY_PREPREND; + for(var i=0;i < c.length;i++) + { + h+='<a href="'+c[i][1]+'" class="'+CSS_CLASS_CRUMB+'">'+sc(c[i][0])+'</a>'; + if(i!=(c.length-1)) + h+='<span class="'+CSS_CLASS_SEPARATOR+'">'+DISPLAY_SEPARATOR+'</span>'; } + return h+DISPLAY_POSTPREND+'</span>'; +} + +if(document.location.href.toLowerCase().indexOf("http://")==-1) + document.write(gettrail(getcrumbs())); +else + document.write(gettrail(getcrumbs(getdirs()))); + diff --git a/website/build/site/skin/breadcrumbs.js b/website/build/site/skin/breadcrumbs.js new file mode 100644 index 00000000..e2e6c3e0 --- /dev/null +++ b/website/build/site/skin/breadcrumbs.js @@ -0,0 +1,267 @@ +/* + + ============================================================================ + The Apache Software License, Version 1.1 + ============================================================================ + + Copyright (C) 2004 The Apache Software Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without modifica- + tion, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. The end-user documentation included with the redistribution, if any, must + include the following acknowledgment: "This product includes software + developed by the Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowledgment may appear in the software itself, if + and wherever such third-party acknowledgments normally appear. + + 4. The names "Apache Forrest" and "Apache Software Foundation" + must not be used to endorse or promote products derived from this software + without prior written permission. For written permission, please contact + apache@apache.org. + + 5. Products derived from this software may not be called "Apache", nor may + "Apache" appear in their name, without prior written permission of the + Apache Software Foundation. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- + DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This software consists of voluntary contributions made by many individuals + on behalf of the Apache Software Foundation. For more information on the + Apache Software Foundation, please see <http://www.apache.org/>. + +*/ + +/** + * This script, when included in a html file, builds a neat breadcrumb trail + * based on its url. That is, if it doesn't contains bugs (I'm relatively + * sure it does). + * + * Typical usage: + * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script> + * + *@author <a href="mailto:leosimons@apache.org">Leo Simons</a> (main author) + *@author <a href="mailto:nicolaken@apache.org">Nicola Ken Barozzi</a> (integration in skin) + *@created July 12, 2002 + *@version 1.0 + */ + +/** + * IE 5 on Mac doesn't know Array.push. + * + * Implement it - courtesy to fritz. + */ +var abc = new Array(); +if (!abc.push) { + Array.prototype.push = function(what){this[this.length]=what} +} + +/* ======================================================================== + CONSTANTS + ======================================================================== */ + +/** + * Two-dimensional array containing extra crumbs to place at the front of + * the trail. Specify first the name of the crumb, then the URI that belongs + * to it. You'll need to modify this for every domain or subdomain where + * you use this script (you can leave it as an empty array if you wish) + */ +var PREPREND_CRUMBS = new Array(); + if(!(""=="")){ + PREPREND_CRUMBS.push( new Array( "", "" ) ); + } + if(!(""=="")){ + PREPREND_CRUMBS.push( new Array( "", "" ) ); + } + if(!(""=="")){ + PREPREND_CRUMBS.push( new Array( "", "" ) ); + } + +/** + * String to include between crumbs: + */ +var DISPLAY_SEPARATOR = " > "; +/** + * String to include at the beginning of the trail + */ +var DISPLAY_PREPREND = ""; +/** + * String to include at the end of the trail + */ +var DISPLAY_POSTPREND = ""; + +/** + * CSS Class to use for a single crumb: + */ +var CSS_CLASS_CRUMB = "breadcrumb"; + +/** + * CSS Class to use for the complete trail: + */ +var CSS_CLASS_TRAIL = "breadcrumbTrail"; + +/** + * CSS Class to use for crumb separator: + */ +var CSS_CLASS_SEPARATOR = "crumbSeparator"; + +/** + * Array of strings containing common file extensions. We use this to + * determine what part of the url to ignore (if it contains one of the + * string specified here, we ignore it). + */ +var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); + +/** + * String that separates parts of the breadcrumb trail from each other. + * When this is no longer a slash, I'm sure I'll be old and grey. + */ +var PATH_SEPARATOR = "/"; + +/* ======================================================================== + UTILITY FUNCTIONS + ======================================================================== */ +/** + * Capitalize first letter of the provided string and return the modified + * string. + */ +function sentenceCase( string ) +{ return string; + //var lower = string.toLowerCase(); + //return lower.substr(0,1).toUpperCase() + lower.substr(1); +} + +/** + * Returns an array containing the names of all the directories in the + * current document URL + */ +function getDirectoriesInURL() +{ + var trail = document.location.pathname.split( PATH_SEPARATOR ); + + // check whether last section is a file or a directory + var lastcrumb = trail[trail.length-1]; + for( var i = 0; i < FILE_EXTENSIONS.length; i++ ) + { + if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) ) + { + // it is, remove it and send results + return trail.slice( 1, trail.length-1 ); + } + } + + // it's not; send the trail unmodified + return trail.slice( 1, trail.length ); +} + +/* ======================================================================== + BREADCRUMB FUNCTIONALITY + ======================================================================== */ +/** + * Return a two-dimensional array describing the breadcrumbs based on the + * array of directories passed in. + */ +function getBreadcrumbs( dirs ) +{ + var prefix = "/"; + var postfix = "/"; + + // the array we will return + var crumbs = new Array(); + + if( dirs != null ) + { + for( var i = 0; i < dirs.length; i++ ) + { + prefix += dirs[i] + postfix; + crumbs.push( new Array( dirs[i], prefix ) ); + } + } + + // preprend the PREPREND_CRUMBS + if(PREPREND_CRUMBS.length > 0 ) + { + return PREPREND_CRUMBS.concat( crumbs ); + } + + return crumbs; +} + +/** + * Return a string containing a simple text breadcrumb trail based on the + * two-dimensional array passed in. + */ +function getCrumbTrail( crumbs ) +{ + var xhtml = DISPLAY_PREPREND; + + for( var i = 0; i < crumbs.length; i++ ) + { + xhtml += '<a href="' + crumbs[i][1] + '" >'; + xhtml += unescape( crumbs[i][0] ) + '</a>'; + if( i != (crumbs.length-1) ) + { + xhtml += DISPLAY_SEPARATOR; + } + } + + xhtml += DISPLAY_POSTPREND; + + return xhtml; +} + +/** + * Return a string containing an XHTML breadcrumb trail based on the + * two-dimensional array passed in. + */ +function getCrumbTrailXHTML( crumbs ) +{ + var xhtml = '<span class="' + CSS_CLASS_TRAIL + '">'; + xhtml += DISPLAY_PREPREND; + + for( var i = 0; i < crumbs.length; i++ ) + { + xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">'; + xhtml += unescape( crumbs[i][0] ) + '</a>'; + if( i != (crumbs.length-1) ) + { + xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>'; + } + } + + xhtml += DISPLAY_POSTPREND; + xhtml += '</span>'; + + return xhtml; +} + +/* ======================================================================== + PRINT BREADCRUMB TRAIL + ======================================================================== */ + +// check if we're local; if so, only print the PREPREND_CRUMBS +if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 ) +{ + document.write( getCrumbTrail( getBreadcrumbs() ) ); +} +else +{ + document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) ); +} + diff --git a/website/build/site/skin/images/chapter.gif b/website/build/site/skin/images/chapter.gif Binary files differnew file mode 100644 index 00000000..72b8f01f --- /dev/null +++ b/website/build/site/skin/images/chapter.gif diff --git a/website/build/site/skin/images/chapter_open.gif b/website/build/site/skin/images/chapter_open.gif Binary files differnew file mode 100644 index 00000000..56acd7e7 --- /dev/null +++ b/website/build/site/skin/images/chapter_open.gif diff --git a/website/build/site/skin/images/current.gif b/website/build/site/skin/images/current.gif Binary files differnew file mode 100644 index 00000000..af0f64fb --- /dev/null +++ b/website/build/site/skin/images/current.gif diff --git a/website/build/site/skin/images/doc.gif b/website/build/site/skin/images/doc.gif Binary files differnew file mode 100644 index 00000000..0837437f --- /dev/null +++ b/website/build/site/skin/images/doc.gif diff --git a/website/build/site/skin/images/favicon.ico b/website/build/site/skin/images/favicon.ico Binary files differnew file mode 100644 index 00000000..161bcf78 --- /dev/null +++ b/website/build/site/skin/images/favicon.ico diff --git a/website/build/site/skin/images/label.gif b/website/build/site/skin/images/label.gif Binary files differnew file mode 100644 index 00000000..bc4cb589 --- /dev/null +++ b/website/build/site/skin/images/label.gif diff --git a/website/build/site/skin/images/menu-left.gif b/website/build/site/skin/images/menu-left.gif Binary files differnew file mode 100644 index 00000000..0ca90471 --- /dev/null +++ b/website/build/site/skin/images/menu-left.gif diff --git a/website/build/site/skin/images/menu-right.gif b/website/build/site/skin/images/menu-right.gif Binary files differnew file mode 100644 index 00000000..879c0280 --- /dev/null +++ b/website/build/site/skin/images/menu-right.gif diff --git a/website/build/site/skin/images/page.gif b/website/build/site/skin/images/page.gif Binary files differnew file mode 100644 index 00000000..b0b39449 --- /dev/null +++ b/website/build/site/skin/images/page.gif diff --git a/website/build/site/skin/images/pdfdoc.gif b/website/build/site/skin/images/pdfdoc.gif Binary files differnew file mode 100644 index 00000000..00dee28a --- /dev/null +++ b/website/build/site/skin/images/pdfdoc.gif diff --git a/website/build/site/skin/images/printer.gif b/website/build/site/skin/images/printer.gif Binary files differnew file mode 100644 index 00000000..5021187b --- /dev/null +++ b/website/build/site/skin/images/printer.gif diff --git a/website/build/site/skin/images/search-left.gif b/website/build/site/skin/images/search-left.gif Binary files differnew file mode 100644 index 00000000..cb204461 --- /dev/null +++ b/website/build/site/skin/images/search-left.gif diff --git a/website/build/site/skin/images/search-right.gif b/website/build/site/skin/images/search-right.gif Binary files differnew file mode 100644 index 00000000..10055731 --- /dev/null +++ b/website/build/site/skin/images/search-right.gif diff --git a/website/build/site/skin/images/singlepage.gif b/website/build/site/skin/images/singlepage.gif Binary files differnew file mode 100644 index 00000000..cb0d2931 --- /dev/null +++ b/website/build/site/skin/images/singlepage.gif diff --git a/website/build/site/skin/images/spacer.gif b/website/build/site/skin/images/spacer.gif Binary files differnew file mode 100644 index 00000000..35d42e80 --- /dev/null +++ b/website/build/site/skin/images/spacer.gif diff --git a/website/build/site/skin/images/tab-left.gif b/website/build/site/skin/images/tab-left.gif Binary files differnew file mode 100644 index 00000000..1bfd7544 --- /dev/null +++ b/website/build/site/skin/images/tab-left.gif diff --git a/website/build/site/skin/images/tab-right.gif b/website/build/site/skin/images/tab-right.gif Binary files differnew file mode 100644 index 00000000..6803a856 --- /dev/null +++ b/website/build/site/skin/images/tab-right.gif diff --git a/website/build/site/skin/images/tabSel-left.gif b/website/build/site/skin/images/tabSel-left.gif Binary files differnew file mode 100644 index 00000000..46abc4dd --- /dev/null +++ b/website/build/site/skin/images/tabSel-left.gif diff --git a/website/build/site/skin/images/tabSel-right.gif b/website/build/site/skin/images/tabSel-right.gif Binary files differnew file mode 100644 index 00000000..881f74c1 --- /dev/null +++ b/website/build/site/skin/images/tabSel-right.gif diff --git a/website/build/site/skin/images/valid-html401.png b/website/build/site/skin/images/valid-html401.png Binary files differnew file mode 100644 index 00000000..3855210c --- /dev/null +++ b/website/build/site/skin/images/valid-html401.png diff --git a/website/build/site/skin/images/vcss.png b/website/build/site/skin/images/vcss.png Binary files differnew file mode 100644 index 00000000..9b2f596e --- /dev/null +++ b/website/build/site/skin/images/vcss.png diff --git a/website/build/site/skin/images/xmldoc.gif b/website/build/site/skin/images/xmldoc.gif Binary files differnew file mode 100644 index 00000000..ca1224f6 --- /dev/null +++ b/website/build/site/skin/images/xmldoc.gif diff --git a/website/build/site/skin/page.css b/website/build/site/skin/page.css new file mode 100644 index 00000000..83db9603 --- /dev/null +++ b/website/build/site/skin/page.css @@ -0,0 +1,71 @@ +body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%; } + +a:link { color: #0F3660; } +a:visited { color: #009999; } +a:active { color: #000066; } +a:hover { color: #000066; } + +img { border: 0; } + +.menu { background-color: #4C6C8F; margin: 0px; padding: 3px 8px 5px 3px; font-size : 90%; } +.menu a:link { color: #FFFFFF; text-decoration : none; } +.menu a:visited { color: #FFFFFF; text-decoration : none; } +.menu a:hover { color: #FFCC00; text-decoration : none; } +.menu ul { margin: 0px 0px 0px 20px; padding: 0px; } +.menu li { list-style-image: url('images/label.gif'); font-weight : bold; } +.menu ul ul li .sel { list-style-image: url('images/current.gif'); font-weight : normal; } +.menu ul ul li { list-style-image: url('images/page.gif'); font-weight : normal; } + +.menu .base-seleted {color: #000000; } +.menu .base-not-selected { font-family: Verdana, Helvetica, sans-serif; } + +.tab { font-size : 85%; border: 0 } +.tab a:link { text-decoration : none; } +.tab a:visited { text-decoration : none; color: #2A4A6D } +.tab a:hover { color: #000066; } + +table .title { background-color: #FFFFFF; width:100%; border: 0px; } +.dida { font-size: 80%; } + +.pre { white-space: pre;} + +.content { padding: 5px 5px 5px 10px; font : small Verdana, Helvetica, sans-serif; font-size : 90%; } +.content .ForrestTable { width: 100%; background-color: #7099C5; color: #ffffff; font-size : 90%;} +.content .ForrestTable th a:link { color: white; } +.content .ForrestTable th a:visited { color: #cfdced; } +.content .ForrestTable th a:active { color: #000066; } +.content .ForrestTable th a:hover { color: #000066; } +.content .ForrestTable caption { text-align: left; color: black; font-weight: bold; } +.content .ForrestTable th { text-align: center; } +.content .ForrestTable td { background-color: #f0f0ff; color: black; } +.content .attribution { text-align: right; font-style: italic; font-size: 90% } + +.frame { margin: 5px 20px 5px 20px; font-size: 90%; } +.frame .content { margin: 0px; } + +.note { border: solid 1px #7099C5; background-color: #f0f0ff; } +.note .label { background-color: #7099C5; color: #ffffff; } + +.warning { border: solid 1px #D00000; background-color: #fff0f0; } +.warning .label { background-color: #D00000; color: #ffffff; } + +.fixme { border: solid 1px #C6C600; background-color: #FAF9C3; } +.fixme .label { background-color: #C6C600; color: #ffffff; } + +.code { border-color: #CFDCED; border-style: solid; border-width: 1px; } +.codefrag { font-family: "Courier New", Courier, monospace; } + +.highlight { background-color: yellow; } + +.minitoc {margin: 5px 5px 5px 40px;} + +.dtdElement { width: 100%; font-size: 90%; background-color : #ffffff; } + +.dtdTag { color: #990000; text-transform : uppercase; font-style : normal; font-size : 120%; font-weight : bold; } + + +@media print { + .menu { + display: none; + } +} diff --git a/website/build/site/userguide/ikvm.html b/website/build/site/userguide/ikvm.html new file mode 100644 index 00000000..0fd9ea8d --- /dev/null +++ b/website/build/site/userguide/ikvm.html @@ -0,0 +1,457 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET Virtual Machine (ikvm.exe)</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET Virtual Machine (ikvm.exe)</h1> +</td> +</tr> +</table> +<p>The ikvm tool is a Java virtual machine implemented in .NET.</p> +<ul class="minitoc"> +<li> +<a href="#Usage">Usage</a> +</li> +<li> +<a href="#Options">Options</a> +</li> +<li> +<a href="#Notes">Notes</a> +</li> +<li> +<a href="#Examples">Examples</a> +</li> +</ul> + +<a name="N1000F"></a><a name="Usage"></a> +<h3>Usage</h3> +<div style="margin-left: 0 ; border: 2px"> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> +<tr> +<td colspan="1" rowspan="1"> + +<div class="pre"> ikvm [ <em>options</em> ] <em>classname</em> [ <em>args ...</em> ]</div> + +<div class="pre"> ikvm [ <em>options</em> ] -jar <em>jarfile</em> [ <em>args ...</em> ]</div> + +</td> +</tr> +</table> +<dl> + +<dt>options</dt> + +<dd>Command-line options for the virtual machine.</dd> + +<dt>classname</dt> + +<dd>Fully-qualified name of a class containing the main method to execute. Do not include a + path or a .class extension. Do not use this with the -jar option.</dd> + +<dt>jarfile</dt> + +<dd>The name of an executable .jar file to execute. Used only with the -jar option.</dd> + +<dt>args</dt> + +<dd>Command-line arguments passed to the main class.</dd> + +</dl> +</div> + + +<a name="N10054"></a><a name="Options"></a> +<h3>Options</h3> +<div style="margin-left: 0 ; border: 2px"> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> + +<tr> + +<th colspan="1" rowspan="1">Option</th> + <th colspan="1" rowspan="1">Description</th> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -cp <em>classpath</em> +<br> + -classpath <em>classpath</em> + </td> + <td colspan="1" rowspan="1"> +<p>Specifies the classpath for the JVM. <em>classpath</em> is a semicolon-delimited list of pathnames to directories and zip files / jar files.</p> + +<p>Note: If you specify this option more than once, only the last is used.</p> + +</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -D<em>property-name</em>=<em>value</em> + </td> + <td colspan="1" rowspan="1"> + Set a system property named <em>property-name</em> to <em>value</em>. Note that there is no + space between the -D and <em>property-name</em>. + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xsave + </td> + <td colspan="1" rowspan="1"> + Saves the generated assembly (for debugging) + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xtime + </td> + <td colspan="1" rowspan="1"> + Times the execution + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xbootclasspath:<em>classpath</em> + </td> + <td colspan="1" rowspan="1"> + +<p>Specifies the boot classpath for the JVM. <em>classpath</em> is a semicolon-delimited list of pathnames to directories and jars. + These classes override those in the GNU Classpath libraries.</p> + +<p>Note: If you specify this option more than once, only the last is used.</p> + +</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xtrace:<em>name</em> + </td> + <td colspan="1" rowspan="1"> + Displays all tracepoints with the given name + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xmethodtrace:<em>name</em> + </td> + <td colspan="1" rowspan="1"> + Builds method trace into the specified output method + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xwait + </td> + <td colspan="1" rowspan="1"> + Keeps process hanging around after exit + </td> + +</tr> + +</table> +</div> + +<a name="N10104"></a><a name="Notes"></a> +<h3>Notes</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>This command is intended to act as a "drop-in" replacement for the Sun / IBM JVM's. In many cases, + you can take a java command line and simply replace <em>java</em> with <em>ikvm</em>.</p> +<p>Please refer to the <a target="_top" href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html">Sun documentation</a> + for usage details. Note that ikvm supports only the options listed here.</p> +<p>ikvm finds classes as follows:</p> +<ul> + +<li>If no -cp/-classpath or -jar option specified, and no CLASSPATH environment variable is set, + looks in the current directory.</li> + +<li>If no -cp/-classpath or -jar option specified, and CLASSPATH environment variable is set, + looks in directories specified in CLASSPATH (not in the current directory unless CLASSPATH contains .).</li> + +<li>If -cp/-classpath option specified, ignores CLASSPATH environment variable, and looks only in + directories specified in -cp/-classpath option.</li> + +<li>If -jar option specified, prepends jarfile to CLASSPATH (or -cp/-classpath specified classpath). + <p> +<strong>Note:</strong> This is different from the Sun JVM behavior.</p> + +</li> + +</ul> +<p>For information about creating executable jar files, see <a target="_top" href="http://www-106.ibm.com/developerworks/library/j-jar/">this IBM article</a>.</p> +</div> + + +<a name="N10139"></a><a name="Examples"></a> +<h3>Examples</h3> +<div style="margin-left: 0 ; border: 2px"> +<div class="pre"> +<span class="codefrag"> ikvm MyProg </span> +</div> +<p>Loads a class named MyProg.class from the current directory (unless the CLASSPATH environment variable + is set, in which case that is searched instead) and executes its main method. + </p> +<div class="pre"> +<span class="codefrag"> ikvm -cp c:\java\lib;c:\mystuff\mylib.jar;c:\mystuff\otherlib.zip org.me.MyProg </span> +</div> +<p>Loads a class named org.me.MyProg from a file named MyProg.class and executes its main method. Searches for it in the following locations:</p> +<ul> + +<li>c:\java\lib\org\me\MyProg.class</li> + +<li>c:\mystuff\mylib.jar (looks inside for org/me/MyProg.class)</li> + +<li>c:\mystuff\otherlib.zip (looks inside for org/me/MyProg.class)</li> + +</ul> +<div class="pre"> +<span class="codefrag"> ikvm -jar /usr/share/myprog.jar </span> +</div> +<p>Executes Java code in the executable jar file /usr/share/myprog.jar.</p> +</div> + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/userguide/ikvmc.html b/website/build/site/userguide/ikvmc.html new file mode 100644 index 00000000..6fd24c9f --- /dev/null +++ b/website/build/site/userguide/ikvmc.html @@ -0,0 +1,524 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET Bytecode Compiler (ikvmc.exe)</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET Bytecode Compiler (ikvmc.exe)</h1> +</td> +</tr> +</table> +<p>The ikvmc tool converts Java bytecode to .NET dll's and exe's.</p> +<ul class="minitoc"> +<li> +<a href="#Usage">Usage</a> +</li> +<li> +<a href="#Options">Options</a> +</li> +<li> +<a href="#Notes">Notes</a> +</li> +<li> +<a href="#Examples">Examples</a> +</li> +</ul> + +<a name="N1000F"></a><a name="Usage"></a> +<h3>Usage</h3> +<div style="margin-left: 0 ; border: 2px"> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> +<tr> +<td colspan="1" rowspan="1"> + +<div class="pre"> ikvmc [ <em>options</em> ] <em>classOrJarfile</em> [ <em>classOrJarfile ...</em> ]</div> + +</td> +</tr> +</table> +<dl> + +<dt>options</dt> + +<dd>See below.</dd> + +<dt>classOrJarfile</dt> + +<dd>Name of a Java .class or .jar file. May contain wildcards (*.class).</dd> + +</dl> +</div> + + +<a name="N1003A"></a><a name="Options"></a> +<h3>Options</h3> +<div style="margin-left: 0 ; border: 2px"> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> + +<tr> + +<th colspan="1" rowspan="1">Option</th> + <th colspan="1" rowspan="1">Description</th> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -out:<em>outputfile</em> + </td> + <td colspan="1" rowspan="1">Specifies the name of the output file. Should have a .dll extension (if -target is library) or an .exe extension (if -target is exe or winexe). + In most cases, if you omit this option, ikvmc will choose an output name based on the -target and the + name of the input files. However, if you specify input files using wildcards, you must use + this option to specify the output file.</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -assembly:<em>assembly-name</em> + </td> + <td colspan="1" rowspan="1"> + Specifies the name of the generated assembly. If omitted, the assembly name is (usually) + the output filename. + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -target:<em>target-type</em> + </td> + <td colspan="1" rowspan="1"> + Specifies whether to generate an .exe or .dll. + <em>target-type</em> is one of + <ul> + +<li>exe - generates an executable that runs in a Windows command window</li> + +<li>winexe - generates an .exe for GUI applications</li> + +<li>library - generates a .dll</li> + +<li>module - generates a .netmodule</li> + +</ul> + +<p>On Linux, there is no difference between <em>exe</em> and <em>winexe</em>.</p> + + +</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -keyfile:<em>keyfilename</em> + </td> + <td colspan="1" rowspan="1"> + Uses <em>keyfilename</em> to sign the resulting assembly. + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -version:M.m.b.r + </td> + <td colspan="1" rowspan="1"> + Specifies the assembly version. + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -main:<em>classname</em> + </td> + <td colspan="1" rowspan="1"> + Specifies the name of the class containing the main method. + If omitted and the -target is exe or winexe, ikvmc searches + for a qualifying main method and reports if it finds one. + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -reference:<em>library-filespec</em> + </td> + <td colspan="1" rowspan="1"> + If your Java code uses .NET API's, specify the dll's using this + option. This option can appear more than once if more than one library is referenced. + Wildcards are permitted (e.g. c:\libs\*.dll). + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -recurse:<em>filespec</em> + </td> + <td colspan="1" rowspan="1"> + Processes all files matching <em>filespec</em> in and under the directory specified by + <em>filespec</em>. Example: -recurse:*.class + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -nojni + </td> + <td colspan="1" rowspan="1"> + Do not generate JNI stub for native methods + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -resource:<em>name</em>=<em>path</em> + </td> + <td colspan="1" rowspan="1"> + Includes <em>path</em> as a Java resource named <em>name</em> + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -exclude:<em>filename</em> + </td> + <td colspan="1" rowspan="1"> + <em>filename</em> is a file containing a list of classes to exclude + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -debug + </td> + <td colspan="1" rowspan="1"> + Generates debugging information in the output. Note that this is only helpful + if the .class files contain debug information (compiled with the javac -g option). + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -srcpath:<em>path</em> + </td> + <td colspan="1" rowspan="1"> + Specifies the location of source code. Use with -debug. The + package of the class is appended to the specified <em>path</em> to locate + the source code for the class. + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xtrace:<em>name</em> + </td> + <td colspan="1" rowspan="1"> + Displays all tracepoints with <em>name</em> + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1"> + -Xmethodtrace:<em>methodname</em> + </td> + <td colspan="1" rowspan="1"> + Builds method trace into the specified output method. + </td> + +</tr> + +</table> +</div> + +<a name="N1016E"></a><a name="Notes"></a> +<h3>Notes</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>The ikvmc tool generates .NET assemblies from Java class files and jar files. + It converts the Java bytecodes in the input files to .NET CIL. Use it to produce</p> +<ul> + +<li>.NET executables (-target:exe or -target:winexe)</li> + +<li>.NET libraries (-target:library)</li> + +<li>.NET modules (-target:module)</li> + +</ul> +<p>Java applications often consist of a collection of jar files. ikvmc can process several input jar files (and class files) + and produce a single .NET executable or library. For example, an application consisting of main.jar, lib1.jar, + and lib2.jar can be converted to a single main.exe. </p> +<p>When processing multiple input jar files that contain duplicate classes / resources, ikvmc will use the first + class / resource it encounters, and ignore duplicates encountered in jars that appear later on the + command line. It will produce a warning in this case. Thus, order of jar files can be significant.</p> +<div class="frame note"> +<div class="label">Note</div> +<div class="content"> + When converting a Java application with ikvmc, for best results, list the jars on the ikvmc command + line in the same order that they appear in the Java application's classpath.</div> +</div> +</div> + + +<a name="N1018D"></a><a name="Examples"></a> +<h3>Examples</h3> +<div style="margin-left: 0 ; border: 2px"> +<div class="pre"> +<span class="codefrag"> ikvmc myProg.jar </span> +</div> +<p>Scans myprog.jar for a main method. If found, an .exe is produced; otherwise, a .dll is generated. + </p> +<div class="pre"> +<span class="codefrag"> ikvmc -out:myapp.exe -main:org.anywhere.Main -recurse:bin\*.class lib\mylib.jar</span> +</div> +<p>Processes all .class files in and under the bin directory, and mylib.jar in the lib directory. Generates an executable + named myapp.exe using the class org.anywhere.Main as the main method.</p> +</div> + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/userguide/ikvmstub.html b/website/build/site/userguide/ikvmstub.html new file mode 100644 index 00000000..81c8b209 --- /dev/null +++ b/website/build/site/userguide/ikvmstub.html @@ -0,0 +1,304 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET Stub Generator (ikvmstub.exe)</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET Stub Generator (ikvmstub.exe)</h1> +</td> +</tr> +</table> +<p>The ikvmstub tool generates Java stubs from .NET assemblies.</p> +<ul class="minitoc"> +<li> +<a href="#Usage">Usage</a> +</li> +<li> +<a href="#Notes">Notes</a> +</li> +<li> +<a href="#Examples">Examples</a> +</li> +</ul> + +<a name="N1000F"></a><a name="Usage"></a> +<h3>Usage</h3> +<div style="margin-left: 0 ; border: 2px"> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> +<tr> +<td colspan="1" rowspan="1"> + +<div class="pre"> ikvmstub <em>assemblyNameOrPath</em> +</div> + +</td> +</tr> +</table> +<dl> + +<dt>assemblyNameOrPath</dt> + +<dd>Name of an assembly. May be a fully-qualified path. </dd> + + +</dl> +</div> + + + +<a name="N1002E"></a><a name="Notes"></a> +<h3>Notes</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>ikvmstub reads the specified assembly and generates a Java jar file containing + Java interfaces and stub classes. For more information about the generated stubs, + see the <a href="../devguide/java2net.html">Developer's Guide</a>.</p> +<p>The tool uses the following algorithm to locate the assembly:</p> +<ol> + +<li>First it attempts to load the assembly from the default load context of ikvmstub.exe. + For practical purposes, this usually means it searches the Global Assembly Cache.</li> + +<li>If not found in the default load context, ikvmstub looks for the assembly at the indicated path (or the current + directory, if no path is supplied).</li> + +</ol> +</div> + + +<a name="N10048"></a><a name="Examples"></a> +<h3>Examples</h3> +<div style="margin-left: 0 ; border: 2px"> +<div class="pre"> +<span class="codefrag"> ikvmstub mscorlib.dll </span> +</div> +<p>Generates mscorlib.jar, containing stubs for classes, interfaces, etc., defined in mscorlib.dll. + </p> +<div class="pre"> +<span class="codefrag"> ikvmstub c:\lib\mylib.dll </span> +</div> +<p>Generates mylib.jar, containing stubs for classes, interfaces, etc., defined in c:\lib\mylib.dll. + </p> +</div> + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/userguide/install.html b/website/build/site/userguide/install.html new file mode 100644 index 00000000..76fd9a5a --- /dev/null +++ b/website/build/site/userguide/install.html @@ -0,0 +1,293 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET Installation</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Installation</font></span> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET Installation</h1> +</td> +</tr> +</table> +<ul class="minitoc"> +<li> +<a href="#Installation">Installation</a> +</li> +<li> +<a href="#Configuration+for+Development">Configuration for Development</a> +</li> +</ul> + +<a name="N1000C"></a><a name="Installation"></a> +<h3>Installation</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>The installation procedure for both Windows and Linux is straightforward. + After <a href="../download.html">downloading</a> the binary distribution, simply extract the + files from the archive. Open a command or shell window, cd to ikvm\bin, and type</p> +<div class="pre"> +<span class="codefrag"> ikvm</span> +</div> +<p>If your system is operating correctly, you should see the following output:</p> +<div class="pre"> +<span class="codefrag"> + usage: ikvm [-options] <class> [args...] + (to execute a class) + or ikvm -jar [-options] <jarfile> [args...] + (to execute a jar file) + </span>...</div> +<p>For convenience, you may wish to add the \ikvm\bin folder to your system's path, but this is not required. + Now, if all you want to do is use IKVM as a Java VM, you're done -- no further configuration is needed. + If you want to use IKVM for .NET / Mono development, read the configuration instructions below. + </p> +</div> + + +<a name="N1002D"></a><a name="Configuration+for+Development"></a> +<h3>Configuration for Development</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>If you plan to do .NET development with IKVM.NET, you may wish to do the following:</p> +<ul> +<li>Download the <a target="_blank" href="http://oss.software.ibm.com/developerworks/opensource/jikes/">Jikes compiler</a> + +<p>If you plan to develop code in Java that runs in .NET, you will need a Java compiler. IKVM.NET does not + come with a compiler. You may use any Java compiler that emits standard Java .class files. Jikes is an excellent + open source, fast Java compiler that is available for many platforms.</p> +</li> + +<li>Windows: Install IKVM dll's in the Global Assembly Cache + <p>When running .NET applications in Windows that use IKVM dll's, the .NET framework must be able to locate the dll's. + It looks in the Global Assembly Cache, then in the current directory. If you want to be able to do development + without having the dll's in the current directory, you must install them in the Global Assembly Cache. + To do this in Windows, access the Microsoft .NET Framework + Configuration item in the Windows Control Panel, and add the assemblies to the Assembly Cache. + At minimum, you will want to install the IKVM.GNU.Classpath.dll and IKVM.Runtime.dll. + </p> + +</li> + +</ul> +<p></p> +</div> + + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/userguide/intro.html b/website/build/site/userguide/intro.html new file mode 100644 index 00000000..0a2a9cec --- /dev/null +++ b/website/build/site/userguide/intro.html @@ -0,0 +1,402 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET User's Guide</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<span class="sel"><font color="#ffcc00">Introduction</font></span> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET User's Guide</h1> +</td> +</tr> +</table> +<ul class="minitoc"> +<li> +<a href="#Introduction">Introduction</a> +</li> +<li> +<a href="#Overview">Overview</a> +</li> +<li> +<a href="#System+Requirements">System Requirements</a> +</li> +</ul> + +<a name="N10016"></a><a name="Introduction"></a> +<h3>Introduction</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM.NET is a Java Virtual Machine (JVM) for the .NET and Mono runtimes. At a time when most people in the computer industry consider Java and + .NET as mutually exclusive technologies, IKVM.NET stands in the unique position of bringing them together. + Initially born out of frustration with the limitations of tools like JUMP and J#, IKVM.NET was created when Jeroen Fritjers set out to + create a way to migrate an existing Java<sup>TM</sup> database application + to .NET<sup>TM</sup>. + </p> +<p>IKVM.NET has gone through a variety of designs and name changes to emerge as a sophisticated collection of tools offering a variety of integration patterns + between the Java and .NET languages and platforms. It is still under development but people have reported success in running sophisticated applications and tools + including Eclipse, JmDNS, JGroups, Jetty (with a few changes), etc. + </p> +<p>This manual is written for IKVM.NET version 0.80. </p> +</div> + + +<a name="N1002C"></a><a name="Overview"></a> +<h3>Overview</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>There are two main ways of using IKVM.NET:</p> +<ul> + +<li> + +<p>Dynamically: In this mode, Java classes and jars are used directly to execute Java applications on the .NET<sup>TM</sup> runtime. + Java bytecode is translated on the fly into CIL and no further steps are necessary. The full Java class loader model is supported in this mode.</p> + +</li> + +<li> + +<p>Statically: In order to allow Java code to be used by .NET applications, it must be compiled down to a DLL and used directly. + The bytecode is translated to CIL and stored in this form. The assemblies can be referenced directly by the .NET applications and + the "Java" objects can be used as if they were .NET objects. While the static mode does not support the full Java class loader mechanism, + it is possible for statically-compiled code to create a class loader and load classes dynamically. + </p> + +</li> + +</ul> +<p> + IKVM.NET provides the VM-related technologies for byte-code translation and verification, classloading, etc. + It is dependent upon the <a target="_blank" href="http://www.gnu.org/software/classpath/classpath.html">GNU Classpath</a> project + for implementations of the JDK libraries. While there are several holes in the coverage provided by these libraries, they are used by at least ten open source VMs. + This means that they will continue evolving and being debugged rapidly to improve the quality of the IKVM.NET experience.</p> +<p>IKVM.NET is comprised by the following components:</p> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> +<caption>IKVM.NET Components</caption> + +<tr> + +<th colspan="1" rowspan="1">Component</th> + <th colspan="1" rowspan="1">Description</th> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">IKVM.Runtime.dll</td> + <td colspan="1" rowspan="1">The VM runtime and all supporting code. It contains (among other things): + <ul> + +<li> +<p> + Byte Code JIT compiler/verifier: Just-in-time compiles Java Byte Code to CIL.</p> + +</li> + +<li> +<p> + Object model remapping infrastructure: Makes System.Object, System.String and System.Exception appear to Java code as java.lang.Object, java.lang.String and java.lang.Throwable.</p> + +</li> + +<li> +<p> + Managed .NET re-implementations of the native methods in Classpath.</p> + +</li> + +</ul> + +</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">IKVM.GNU.Classpath.dll</td> + <td colspan="1" rowspan="1">This is a compiled version of <a target="_blank" href="http://www.gnu.org/software/classpath/classpath.html">GNU Classpath</a>, the Free Software Foundation's implementation of the Java class libraries, plus some additional IKVM.NET specific code. Note that GNU Classpath isn't part of IKVM.NET, but it is used by IK.VM.NET.</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">IKVM.JNI.CLR-Win32.dll</td> + <td colspan="1" rowspan="1">Managed C++ assembly that implements the JNI interface. This is an optional part, only required when an application uses it's own native libraries. This will not be required for pure Java applications, this is important because this code will only run on Microsoft's .NET implementation.</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">IKVM.JNI.Mono.dll</td> + <td colspan="1" rowspan="1">Mono implementation of the JNI interface. Works together with libmono-ikvm-jni.so, which is developed and maintained as part of Mono. + </td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">IKVM.AWT.WinForms.dll</td> + <td colspan="1" rowspan="1">Very limited and broken implementation of a few AWT peers. This is a low priority issue until the platform stabilizes and works sufficiently well.</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">ikvm.exe</td> + <td colspan="1" rowspan="1">Starter executable, comparable to java.exe ("dynamic mode").</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">ikvmc.exe</td> + <td colspan="1" rowspan="1">Static compiler. Used to compile Java classes and jars into a .NET assembly ("static mode")</td> + +</tr> + +<tr> + +<td colspan="1" rowspan="1">ikvmstub.exe</td> + <td colspan="1" rowspan="1">A tool that generates stub class files from a .NET assembly, so that Java code can be compiled against .NET code. IKVM.NET understands the stubs and replaces the references to the stubs by references to the actual .NET types.</td> + +</tr> + + +</table> +</div> + + +<a name="N100E2"></a><a name="System+Requirements"></a> +<h3>System Requirements</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>You must have one of the following .NET frameworks + installed:</p> +<ul> + +<li>Microsoft .NET Framework 1.1 SDK (Windows platform)</li> + +<li>Mono Framework 1.0 (Windows or Linux)</li> + +</ul> +</div> + + + +<div class="attribution">by Stephen Schaub, Brian J. Sletten</div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/userguide/tools.html b/website/build/site/userguide/tools.html new file mode 100644 index 00000000..308fb73f --- /dev/null +++ b/website/build/site/userguide/tools.html @@ -0,0 +1,248 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET User Manual: Tools Reference</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="../userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Tools Reference</font></span> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET User Manual: Tools Reference</h1> +</td> +</tr> +</table> + +<p>IKVM.NET includes the following tools:</p> + +<ul> + +<li> +<a href="../userguide/ikvm.html">ikvm</a> - Java Virtual Machine</li> + +<li> +<a href="../userguide/ikvmc.html">ikvmc</a> - Compiles Java Bytecode to CIL</li> + +<li> +<a href="../userguide/ikvmstub.html">ikvmstub</a> - Generates Java stub classes from .NET assemblies</li> + +</ul> + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/userguide/tutorial.html b/website/build/site/userguide/tutorial.html new file mode 100644 index 00000000..d46b0807 --- /dev/null +++ b/website/build/site/userguide/tutorial.html @@ -0,0 +1,405 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>IKVM.NET Tutorial</title> +<link type="text/css" href="../skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="../images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="../skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="../index.html" title="">Home</a> +</li> + +<li> +<a href="../download.html" title="">Download</a> +</li> + +<li> +<a href="../uses.html" title="">Uses</a> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="../faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="../license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="../userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="../userguide/install.html" title="">Installation</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Tutorial</font></span> +</li> + +<li> +<a href="../userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="../devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="../devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="../devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="../devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="../skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>IKVM.NET Tutorial</h1> +</td> +</tr> +</table> +<ul class="minitoc"> +<li> +<a href="#Setup+your+Environment">Setup your Environment</a> +</li> +<li> +<a href="#Run+a+Java+Application+Dynamically">Run a Java Application Dynamically</a> +</li> +<li> +<a href="#Convert+a+Java+Application+to+.NET">Convert a Java Application to .NET</a> +</li> +<li> +<a href="#Develop+a+.NET+Application+in+Java">Develop a .NET Application in Java</a> +</li> +</ul> + +<a name="N10012"></a><a name="Setup+your+Environment"></a> +<h3>Setup your Environment</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>This tutorial includes information for both the Windows and Linux platforms. It assumes that + Windows users will be using the .NET SDK, and Linux users will be using the Mono SDK. </p> +<p>This tutorial references files in the samples distribution available on the <a href="../download.html">download page</a>. + Before you begin, prepare your environment by adding the following to your PATH environment variable:</p> +<ul> + +<li>The directory containing the IKVM executables</li> + +<li>The directory containing the C# compiler (Windows: csc / Mono: mcs). On Windows, this is typically + C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322.</li> + +<li>The directory containing a Java compiler (javac or jikes)</li> + +</ul> +</div> + + +<a name="N1002F"></a><a name="Run+a+Java+Application+Dynamically"></a> +<h3>Run a Java Application Dynamically</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM.NET includes a Java Virtual Machine implented in C#. To try it out, navigate to + <em>IKVMROOT</em>\samples\hello and compile the sample application:</p> +<div class="pre"> +<span class="codefrag"> javac Hello + jar cfm hello.jar manifest.mf Hello.class</span> +</div> +<p>Now, to run the application using the IKVM Virtual Machine, enter the following:</p> +<div class="pre"> +<span class="codefrag"> ikvm Hello</span> +</div> +<p>This command starts the virtual machine, which searches for a + file named Hello.class. When it finds it, it loads it and executes the bytecodes dynamically. + You should be prompted to enter your name, and see a brief greeting.</p> +<p>If you experience problems, check the following:</p> +<ul> + +<li>Check your capitalization: ikvm, like java, requires you to capitalize class names correctly.</li> + +<li>If ikvm reports a ClassNotFoundException, check whether the CLASSPATH environment variable is set. + If so, try clearing the CLASSPATH or adding the current directory to it so ikvm can find the class in the current directory.</li> + +</ul> +<p>You can also execute Java applications in a jar file. Try it out:</p> +<div class="pre"> +<span class="codefrag"> ikvm -jar hello.jar</span> +</div> +<p>See the <a href="../userguide/ikvm.html">ikvm reference</a> for more information about ikvm command line options.</p> +</div> + + +<a name="N1006A"></a><a name="Convert+a+Java+Application+to+.NET"></a> +<h3>Convert a Java Application to .NET</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM.NET includes <a href="../userguide/ikvmc.html">ikvmc</a>, a utility that converts + Java .jar files to .NET .dll libraries and .exe applications. In this section, you'll convert a Java application to a .NET + .exe.</p> +<p>Navigate to <em>IKVMROOT</em>\samples\hello and enter the following:</p> +<div class="pre"> +<span class="codefrag"> ikvmc hello.jar</span> +</div> +<div class="frame note"> +<div class="label">Note</div> +<div class="content">If you're using Mono, you will have to tell ikvmc where to find the GNU Classpath dll. Try the following, + substituting the location of IKVM.GNU.Classpath.dll on your system if necessary:<br> + +<br> + +<span class="codefrag">ikvmc -reference:/usr/lib/IKVM.GNU.Classpath.dll hello.jar</span> + +</div> +</div> +<p>After the command completes, you should find a hello.exe file in the current directory. To execute it:</p> +<ul> + +<li> +<strong>Windows / .NET Framework:</strong> + +<p>Try running hello.exe. If you get a FileNotFound exception when the .NET runtime attempts to load the referenced + IKVM.GNU.Classpath.dll, remember that the .NET framework expects to find referenced dll's in the current + directory or in the Global Assembly Cache. Either <a href="../userguide/install.html">install the dll's in the + Global Assembly Cache</a>, or copy them to the current directory.</p> + +</li> + +<li> +<strong>Linux / Mono:</strong> + +<p>Run it using the following command:</p> + +<div class="pre"> +<span class="codefrag"> mono hello.exe</span> +</div> + +</li> + +</ul> +</div> + + +<a name="tutorial_java2net"></a> + <a name="N100B1"></a><a name="Develop+a+.NET+Application+in+Java"></a> +<h3>Develop a .NET Application in Java</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>In this section, you will learn the steps needed to develop .NET applications in Java. </p> +<p>To begin, open a command window and navigate to <em>IKVMROOT</em>\samples\usenetapi. + Take a look at ShowDir.java -- this is a Java application that uses the .NET API to display a list of files + in the current directory. Notice the imports at the top -- the package names begin with <span class="codefrag">cli.*</span>. These are not + packages in the Java API; rather, they are "pseudo" packages that map to .NET namespaces. + For more information on this, see the <a href="../devguide/java2net.html">Developer's Guide</a>.</p> +<p> +<strong>Step 1: Generate Java stubs</strong> +</p> +<p>IKVM does not come with a Java compiler, so we will compile ShowDir using a standard Java compiler. + Since Java compilers can only compile applications that use Java API's, not .NET API's, we have to fool the + Java compiler into believing that there is really a Java package named cli.System.IO. The + <a href="../userguide/ikvmstub.html">ikvmstub</a> application + helps us do this. It generates Java jar files from .NET dll's. The jar files generated by ikvmstub contain Java classes + and interfaces that correspond to .NET classes, but don't contain any real code. They contain just enough to satisfy + the Java compiler, and allow it to type check the Java application.</p> +<p>Type the following:</p> +<div class="pre"> +<span class="codefrag"> ikvmstub mscorlib.dll</span> +</div> +<p>Note: On a Linux Mono installation, you will have to type the full pathname to mscorlib.dll, like this:</p> +<div class="pre"> +<span class="codefrag"> ikvmstub /usr/lib/mscorlib.dll</span> +</div> +<p>After the command completes, you should find a file named mscorlib.jar in the current directory.</p> +<p> +<strong>Step 2: Compile the Java source code</strong> +</p> +<p>Now, we'll compile the Java source code. If you're using javac, type the following:</p> +<div class="pre"> +<span class="codefrag"> javac -classpath mscorlib.jar ShowDir.java</span> +</div> +<p>(Substitute <span class="codefrag">jikes</span> for <span class="codefrag">javac</span> if you're using that tool.)</p> +<p>After the command completes, you should find ShowDir.class in the current directory. </p> +<p> +<strong>Step 3: Generate a .NET executable</strong> +</p> +<p>Now, we'll convert the Java class file to a .NET application. Type the following:</p> +<div class="pre"> +<span class="codefrag"> ikvmc ShowDir.class</span> +</div> +<p>Note: On a Linux Mono installation, you will have to add a -reference option, like this:</p> +<div class="pre"> +<span class="codefrag"> ikvmc -reference:/usr/lib/IKVM.GNU.Classpath.dll ShowDir.class</span> +</div> +<p>After the command completes, you should find ShowDir.exe in the current directory. You should be able to + execute it successfully. (On Windows .NET, remember to copy the IKVM dll's to the current directory.)</p> +</div> + + + + +<div class="attribution">by Stephen Schaub</div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"><a href="../skin/images/label.gif"></a><a href="../skin/images/page.gif"></a><a href="../skin/images/chapter.gif"></a><a href="../skin/images/chapter_open.gif"></a><a href="../skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/build/site/uses.html b/website/build/site/uses.html new file mode 100644 index 00000000..d227ab30 --- /dev/null +++ b/website/build/site/uses.html @@ -0,0 +1,289 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Uses for IKVM.NET</title> +<link type="text/css" href="skin/page.css" rel="stylesheet"> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<!--================= start Navigation Path ==================--> +<table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" src="skin/images/spacer.gif" class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font size="2" face="Arial, Helvetica, Sans-serif"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></font></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Navigation Path ==================--> +<!--================= start Banner ==================--> +<table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<!--================= start Group Logo ==================--> +<td bgcolor="#294563"></td> +<!--================= end Group Logo ==================--> +<!--================= start Project Logo ==================--><td width="100%" align="center" bgcolor="#294563"><a href="http://www.ikvm.net/"><img border="0" class="logoImage" alt="IKVM.NET" src="images/project.gif" title="Java on .NET"></a></td> +<!--================= end Project Logo ==================--> +<!--================= start Search ==================--><td valign="top" rowspan="2" bgcolor="#294563"></td> +<!--================= start Search ==================--><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" bgcolor="#294563" colspan="2"> +<!--================= start Tabs ==================--> +<div class="tab"> +<table summary="tab bar" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="6"><img alt="" height="8" width="6" src="skin/images/spacer.gif"></td> +</tr> +</table> +</div> +<!--================= end Tabs ==================--> +</td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +<!--================= end Banner ==================--> +<!--================= start Menu, NavBar, Content ==================--> +<table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td valign="top"> +<table summary="menu" border="0" cellspacing="0" cellpadding="0"> +<tr> +<!--================= start left top NavBar ==================--> +<td rowspan="3" valign="top"> +<table summary="blue line" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif"> </font></td> +</tr> +<tr> +<td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td> +<!--================= end left top NavBar ==================--><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F"> +<!--================= start Menu items ==================--> +<div class="menu"> +<ul> +<li> +<font color="#CFDCED">About</font> +<ul> + +<li> +<a href="index.html" title="">Home</a> +</li> + +<li> +<a href="download.html" title="">Download</a> +</li> + +<li> +<span class="sel"><font color="#ffcc00">Uses</font></span> +</li> + +<li> +<a href="http://weblog.ikvm.net" title="">News</a> +</li> + +<li> +<a href="faqdoc.html" title="">FAQ</a> +</li> + +<li> +<a href="license.html" title="">License</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">User's Guide</font> +<ul> + +<li> +<a href="userguide/intro.html">Introduction</a> +</li> + +<li> +<a href="userguide/install.html" title="">Installation</a> +</li> + +<li> +<a href="userguide/tutorial.html" title="">Tutorial</a> +</li> + +<li> +<a href="userguide/tools.html" title="">Tools Reference</a> +</li> + + + + +</ul> +</li> +<li> +<font color="#CFDCED">Developer's Guide</font> +<ul> + +<li> +<a href="devguide/intro.html" title="">Introduction</a> +</li> + +<li> +<a href="devguide/concepts.html" title="">Concepts</a> +</li> + +<li> +<a href="devguide/net2java.html" title="">Using Java Libraries</a> +</li> + +<li> +<a href="devguide/java2net.html" title="">Developing in Java</a> +</li> + +</ul> +</li> +<li> +<font color="#CFDCED">Contributing</font> +<ul> + +<li> +<a href="http://sourceforge.net/mail/?group_id=69637">Mailing Lists</a> +</li> + +<li> +<a href="http://sourceforge.net/cvs/?group_id=69637">CVS Repository</a> +</li> + +</ul> +</li> +</ul> +</div> +<!--================= end Menu items ==================--> +</td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td> +</tr> +<tr> +<td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +</table> +</td><td valign="top" width="100%"> +<table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0"> +<!--================= start middle NavBar ==================--> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif"> + + + </font><img width="10" height="8" alt="" src="skin/images/spacer.gif" class="spacer"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<tr> +<td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end middle NavBar ==================--> +<!--================= start Content==================--> +<tr> +<td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" width="100%"> +<div class="content"> +<table class="title" summary=""> +<tr> +<td valign="middle"> +<h1>Uses for IKVM.NET</h1> +</td> +</tr> +</table> +<p>IKVM.NET is useful for several different software development + scenarios. Here is a sampling of some of the possibilities.</p> +<ul class="minitoc"> +<li> +<a href="#Drop-in+JVM">Drop-in JVM</a> +</li> +<li> +<a href="#Use+Java+libraries+in+your+.NET+applications">Use Java libraries in your .NET applications</a> +</li> +<li> +<a href="#Develop+.NET+applications+in+Java">Develop .NET applications in Java</a> +</li> +</ul> + +<a name="N1000F"></a><a name="Drop-in+JVM"></a> +<h3>Drop-in JVM</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>The <a href="userguide/ikvm.html">ikvm application</a> included with the distribution is a .NET + implementation of a Java Virtual Machine. In many cases, you can use it + as a drop-in replacement for java. For example, instead of typing</p> +<div class="pre"> +<span class="codefrag"> java -jar myapp.jar</span> +</div> +<p>to run an application, you can type</p> +<div class="pre"> +<span class="codefrag"> ikvm -jar myapp.jar</span> +</div> +</div> + +<a name="N1002C"></a><a name="Use+Java+libraries+in+your+.NET+applications"></a> +<h3>Use Java libraries in your .NET applications</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM.NET includes <a href="userguide/ikvmc.html">ikvmc</a>, a Java bytecode to .NET IL translator. + If you have a Java library that you would like to use in a .NET application, + run <span class="codefrag">ikvmc -target:library mylib.jar</span> to create mylib.dll. + </p> +<p>For example, the Apache FOP project is an open source XSL-FO + processor written in Java that is widely used to generate PDF documents from XML + source. With IKVM.NET technology, Apache FOP can be used by + any .NET application.</p> +</div> + + +<a name="N10040"></a><a name="Develop+.NET+applications+in+Java"></a> +<h3>Develop .NET applications in Java</h3> +<div style="margin-left: 0 ; border: 2px"> +<p>IKVM provides a way for you to develop .NET applications in + Java. Although IKVM.NET does not include a Java compiler for .NET, + you can use the open source <a target="_blank" href="http://oss.software.ibm.com/developerworks/opensource/jikes/">Jikes compiler</a> to + compile Java source code to JVM bytecode, then use + <span class="codefrag">ikvmc -target:exe myapp.jar</span> + to produce a .NET executable. You can even use .NET API's in your + Java code using the included <a href="userguide/ikvmstub.html">ikvmstub</a> application. + </p> +</div> + + +<div class="attribution"></div> +</div> +</td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td> +</tr> +<!--================= end Content==================--> +</table> +</td> +</tr> +</table> +<!--================= end Menu, NavBar, Content ==================--> +<!--================= start Footer ==================--> +<table summary="footer" cellspacing="0" cellpadding="0" width="100%" border="0"> +<tr> +<td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"><a href="skin/images/label.gif"></a><a href="skin/images/page.gif"></a><a href="skin/images/chapter.gif"></a><a href="skin/images/chapter_open.gif"></a><a href="skin/images/current.gif"></a><a href="/favicon.ico"></a></td> +</tr> +<tr> +<td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright © + 2004 Jeroen Frijters All rights reserved.<script type="text/javascript" language="JavaScript"><!-- + document.write(" - "+"Last Published: " + document.lastModified); + // --></script></font></td> +</tr> +<tr> +<td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td> +</tr> +</table> +<!--================= end Footer ==================--> +</body> +</html> diff --git a/website/forrest-targets.ent b/website/forrest-targets.ent new file mode 100644 index 00000000..994c0b7f --- /dev/null +++ b/website/forrest-targets.ent @@ -0,0 +1,174 @@ +<!-- +This build.xml snippet contains Forrest targets for Ant 1.5+. It checks that +the user has set ${forrest.home}, either in one of: + build.properties + project.properties + ant.properties + .ant.properties +or with the FORREST_HOME environment variable, and prints an informative error +message if not found. + +Usage: +1) Copy this file to somewhere in your project. +2) Add the following to the top of your project's Ant build.xml script +(adjusting the path): + + <!DOCTYPE project [ + <!ENTITY forrest-targets SYSTEM "file:./forrest-targets.ent"> + ]> + +3) Before the closing '</project>' in your build.xml, add this: + + &forrest-targets; + +This is like expanding a macro: it pulls in the contents of this file. + +A minimal build.xml would thus be: + +<!DOCTYPE project [ +<!ENTITY forrest-targets SYSTEM "file:./forrest-targets.ent"> +]> + +<project default="site"> + &forrest-targets; +</project> +--> + + <target name="site" depends="forrest.init" description="Generates static HTML documentation"> + <ant antfile="${forrest.home}/forrest.antproxy.xml" target="site"/> + </target> + + <target name="webapp" depends="forrest.init" description="Generates an unpackaged webapp of the website"> + <ant antfile="${forrest.home}/forrest.antproxy.xml" target="webapp"/> + </target> + + <target name="war" depends="forrest.init" description="Generates a .war file containing the website"> + <ant antfile="${forrest.home}/forrest.antproxy.xml" target="war"/> + </target> + + <target name="validate" depends="forrest.init" description="Validates XML documentation files"> + <ant antfile="${forrest.home}/forrest.antproxy.xml" target="validate"/> + </target> + + <target name="forrest.init" depends="forrest.sethome, forrest.home.defined"/> + + <target name="forrest.sethome" depends="forrest.loadenv, + forrest.checkenv, forrest.checkhome, forrest.check-build.properties, + forrest.check-project.properties, forrest.check-ant.properties, + forrest.check-.ant.properties"/> + + <target name="forrest.loadenv" unless="forrest.home.present"> + <property environment="env"/> + <echo level="verbose">Forrest: Got ${env.FORREST_HOME}</echo> + </target> + + <target name="forrest.checkenv" if="env.FORREST_HOME"> + <echo level="verbose">Found $FORREST_HOME..</echo> + <property name="forrest.home" location="${env.FORREST_HOME}"/> + <echo level="verbose">forrest.home set to ${forrest.home}</echo> + <available file="${forrest.home}" type="dir" property="forrest.home.present"/> + </target> + + + <target name="forrest.checkhome"> + <available file="${forrest.home}" type="dir" property="forrest.home.present"/> + <available file="build.properties" type="file" property="build.properties.present"/> + <available file="project.properties" type="file" property="project.properties.present"/> + <available file="ant.properties" type="file" property="ant.properties.present"/> + <available file=".ant.properties" type="file" property=".ant.properties.present"/> + </target> + + <!-- No we can't extract the commonalities below into an antcall'ed target, + because it wouldn't be able to set forrest.home --> + <target name="forrest.check-build.properties" unless="forrest.home.present" + if="build.properties.present"> + <echo level="verbose">Forrest: Checking build.properties..</echo> + <loadproperties srcfile="build.properties"> + <filterchain> + <linecontains> + <contains value="forrest.home"/> + </linecontains> + </filterchain> + </loadproperties> + <available file="${forrest.home}" type="dir" property="forrest.home.present"/> + + </target> + + <target name="forrest.check-project.properties" unless="forrest.home.present" + if="project.properties.present"> + <echo level="verbose">Forrest: Checking project.properties..</echo> + <loadproperties srcfile="project.properties"> + <filterchain> + <linecontains> + <contains value="forrest.home"/> + </linecontains> + </filterchain> + </loadproperties> + <available file="${forrest.home}" type="dir" property="forrest.home.present"/> + </target> + + <target name="forrest.check-ant.properties" unless="forrest.home.present" + if="ant.properties.present"> + <echo level="verbose">Forrest: Checking ant.properties..</echo> + <loadproperties srcfile="ant.properties"> + <filterchain> + <linecontains> + <contains value="forrest.home"/> + </linecontains> + </filterchain> + </loadproperties> + <available file="${forrest.home}" type="dir" property="forrest.home.present"/> + </target> + + <target name="forrest.check-.ant.properties" unless="forrest.home.present" + if=".ant.properties.present"> + <echo level="verbose">Forrest: Checking .ant.properties..</echo> + <loadproperties srcfile=".ant.properties"> + <filterchain> + <linecontains> + <contains value="forrest.home"/> + </linecontains> + </filterchain> + </loadproperties> + <available file="${forrest.home}" type="dir" property="forrest.home.present"/> + </target> + + <target name="forrest.home.defined" depends="forrest.sethome" unless="forrest.home.present"> + <property name="path" value="${user.home}/xml-forrest/build/dist/shbat"/> + <pathconvert targetos="windows" property="winpath"> + <path> + <pathelement location="${path}"/> + </path> + </pathconvert> + <pathconvert targetos="unix" property="unixpath"> + <path> + <pathelement + location="${path}"/> + </path> + </pathconvert> + + <echo> + ---------------------------------------------- + To run this target, you need Forrest installed. + Please do the following: + + export CVSROOT=:pserver:anoncvs@cvs.apache.org:/home/cvspublic + cvs checkout xml-forrest + cd xml-forrest + build (Windows) + ./build.sh (Unix) + + Then either: + + - Set FORREST_HOME as the Forrest build instructions describe + - Create a build.properties, with the forrest.home property pointing to + the forrest shbat directory, eg: + + forrest.home=${winpath} (Windows) + forrest.home=${unixpath} (Unix) + + (adjusting the path according to where your xml-forrest is) + ---------------------------------------------- + </echo> + <fail message="Need to define $${forrest.home}"/> + </target> diff --git a/website/forrest.properties b/website/forrest.properties new file mode 100644 index 00000000..01c6c0e7 --- /dev/null +++ b/website/forrest.properties @@ -0,0 +1,118 @@ +############## +# Properties used by forrest.build.xml for building the website +############## + +# Prints out a summary of Forrest settings for this project +#forrest.echo=true + +# Project name (used to name .war file) +#project.name=my-project + +# Specifies name of Forrest skin to use +#project.skin=forrest-site +#project.skin=forrest-css +#project.skin=avalon-tigris +#project.skin=krysalis-site + + +############## +# behavioural properties +#project.menu-scheme=tab_attributes +#project.menu-scheme=directories + +############## +# layout properties + +# Properties that must be set to override the default locations +# +# Parent properties must be set. This usually means uncommenting +# project.content-dir if any other property using it is uncommented + +#project.status=status.xml +#project.content-dir=src/documentation +#project.conf-dir=${project.content-dir}/conf +#project.sitemap-dir=${project.content-dir} +#project.xdocs-dir=${project.content-dir}/content/xdocs +#project.resources-dir=${project.content-dir}/resources +#project.stylesheets-dir=${project.resources-dir}/stylesheets +#project.images-dir=${project.resources-dir}/images +#project.schema-dir=${project.resources-dir}/schema +#project.skins-dir=${project.content-dir}/skins +#project.skinconf=${project.content-dir}/skinconf.xml +#project.lib-dir=${project.content-dir}/lib +#project.classes-dir=${project.content-dir}/classes + + +############## +# Cocoon catalog entity resolver properties + +# A local OASIS catalog file to supplement the default Forrest catalog +#project.catalog=${project.schema-dir}/catalog.xcat + +# The verbosity level for the entity resolver (1..10) +#forrest.catalog.verbosity=1 + + +############## +# validation properties + +# These props determine if validation is performed at all +# Values are inherited unless overridden. +# Eg, if forrest.validate=false, then all others are false unless set to true. +#forrest.validate=true +#forrest.validate.xdocs=${forrest.validate} +#forrest.validate.skinconf=${forrest.validate} +#forrest.validate.sitemap=${forrest.validate} +#forrest.validate.stylesheets=${forrest.validate} +#forrest.validate.skins=${forrest.validate} +#forrest.validate.skins.stylesheets=${forrest.validate.skins} + + +# Key: +# *.failonerror=(true|false) stop when an XML file is invalid +# *.includes=(pattern) Comma-separated list of path patterns to validate +# *.excludes=(pattern) Comma-separated list of path patterns to not validate + +#forrest.validate.failonerror=true +#forrest.validate.includes=**/* +#forrest.validate.excludes= +# +#forrest.validate.xdocs.failonerror=${forrest.validate.failonerror} +# +#forrest.validate.xdocs.includes=**/*.x* +#forrest.validate.xdocs.excludes=site.xml +# +#forrest.validate.skinconf.includes=${skinconf-file} +#forrest.validate.skinconf.excludes= +#forrest.validate.skinconf.failonerror=${forrest.validate.failonerror} +# +#forrest.validate.sitemap.includes=${sitemap-file} +#forrest.validate.sitemap.excludes= +#forrest.validate.sitemap.failonerror=${forrest.validate.failonerror} +# +#forrest.validate.stylesheets.includes=**/*.xsl +#forrest.validate.stylesheets.excludes= +#forrest.validate.stylesheets.failonerror=${forrest.validate.failonerror} +# +#forrest.validate.skins.includes=**/* +#forrest.validate.skins.excludes=**/*.xsl +#forrest.validate.skins.failonerror=${forrest.validate.failonerror} +# +#forrest.validate.skins.stylesheets.includes=**/*.xsl +#forrest.validate.skins.stylesheets.excludes= +#forrest.validate.skins.stylesheets.failonerror=${forrest.validate.skins.failonerror} + +############## +# General Forrest properties + +# The URL to start crawling from +#project.start-uri=index.html +# Set logging level for messages printed to the console +# (DEBUG, INFO, WARN, ERROR, FATAL_ERROR) +#project.debuglevel=ERROR +# Max memory to allocate to Java +#forrest.maxmemory=64m +# Any other arguments to pass to the JVM. For example, to run on an X-less +# server, set to -Djava.awt.headless=true +#forrest.jvmargs= +#project.bugtracking-url=http://nagoya.apache.org/bugzilla/show_bug.cgi?id= diff --git a/website/readme.txt b/website/readme.txt new file mode 100644 index 00000000..a2f8d185 --- /dev/null +++ b/website/readme.txt @@ -0,0 +1,10 @@ +This website is developed using Apache Forrest version 0.5, located at + http://forrest.apache.org + +To maintain the site, edit documents in the src\documentation\content\xdocs +directory tree. Then, generate the website by making the directory +containing this readme file the current directory and running + + forrest + +The generated website root is located at build\site diff --git a/website/src/documentation/README.txt b/website/src/documentation/README.txt new file mode 100644 index 00000000..4545b58c --- /dev/null +++ b/website/src/documentation/README.txt @@ -0,0 +1,10 @@ +This is the base documentation directory. It usually contains two files: + +skinconf.xml # This file customizes Forrest for your project. In it, you + # tell forrest the project name, logo, copyright info, etc + +sitemap.xmap # Optional. This sitemap overrides the default one bundled + # with Forrest. Typically, one would copy a sitemap from + # xml-forrest/src/resources/conf/sitemap.xmap, and customize + # it. + diff --git a/website/src/documentation/content/xdocs/devguide/concepts.xml b/website/src/documentation/content/xdocs/devguide/concepts.xml new file mode 100644 index 00000000..9ed8b553 --- /dev/null +++ b/website/src/documentation/content/xdocs/devguide/concepts.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET User Manual: Concepts</title> + <authors><person name="Stephen Schaub" email="sschaub@bju.edu"/> + </authors> + <abstract>This section discusses several important concepts about + the capabilities and limitations of IKVM.NET. </abstract> + </header> + <body> + <section> + <title>Class Loading</title> + + <p>IKVM.NET fully supports dynamic Java class loading, both in Java applications running in the ikvm + JVM, as well as in Java applications which have been converted to .NET CIL using ikvmc. + </p> + + <section> + <title>Class Loading in Dynamically Interpreted Java Applications</title> + <p>When you run a Java application using ikvm, ikvm finds and loads Java .class files much like + other Java VM's. See the <link href="site:ikvm">ikvm notes</link> for details.</p> + </section> + + <section> + <title>Class Loading in ikvmc-compiled Java Applications</title> + <p>When you convert a Java application to CIL using ikvmc, it executes as "native" .NET code. Applications that + use the Java classloading API (<code>Class.forName( )</code>, and so forth) locate classes using the following algorithm:</p> + <ol> + <li>All loaded assemblies are searched first. Thus, if the class exists in the .exe or any referenced dll's, + it will be found there.</li> + <li>If the class is not in a loaded assembly, the CLASSPATH is searched for a Java .class. If found, it is dynamically loaded + and executed using the IKVM interpreter.</li> + </ol> + + <p>This approach means you can develop .NET applications in Java that execute at native .NET speeds, but enjoy the flexibility + of dynamic class loading at runtime. For example, you can write a .NET application that loads type-4 JDBC drivers dynamically.</p> + + <p>For the most part, all of this works the way you want without much thought on your part. But there are a few situations + that will require special handling. Consider, for example, an application that has been compiled by ikvmc into several assemblies, A.exe, B.dll, and C.dll. + A.exe references B.dll, but neither A.exe nor B.dll reference C.dll directly (perhaps C.dll is a JDBC driver). + If code in A.exe uses Class.forName( ) to load a class in B.dll, everything is fine. + But if code in A.exe or B.dll uses Class.forName( ) to load classes in C.dll, things are not fine. Since neither A.exe nor B.dll references + C.dll, it will not have been loaded into the application domain at runtime, and the application will fail with a Class Not Found + runtime exception.</p> + <p>In cases like this, your application must force the runtime to load an assembly into the application domain before calling + Class.forName( ). To do this, call <strong>TODO: Insert API method here</strong>.</p> + </section> + + </section> + + <section> + <title>Debugging Support</title> + <p>Java applications converted to CIL using ikvmc with the -debug option can be debugged using standard .NET / Mono debugging + tools. Remember to compile the Java source code using the appropriate debug option (javac: -g or jikes: -g:lines,vars,source).</p> + </section> + </body> +</document> diff --git a/website/src/documentation/content/xdocs/devguide/index.xml b/website/src/documentation/content/xdocs/devguide/index.xml new file mode 100644 index 00000000..91089eba --- /dev/null +++ b/website/src/documentation/content/xdocs/devguide/index.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET User Manual</title> + <authors><person name="Stephen Schaub" email="sschaub@bju.edu"/> + </authors> + </header> + <body> + <section> + <title></title> + <p>This manual is written for IKVM.NET version ???. </p> + + </section> + + </body> +</document> diff --git a/website/src/documentation/content/xdocs/devguide/intro.xml b/website/src/documentation/content/xdocs/devguide/intro.xml new file mode 100644 index 00000000..32b1a5eb --- /dev/null +++ b/website/src/documentation/content/xdocs/devguide/intro.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET Developer's Guide</title> + <authors><person name="Stephen Schaub" email="sschaub@bju.edu"/> + </authors> + </header> + <body> + + <p>IKVM.NET makes it possible both to develop .NET applications in Java, and to use existing Java API's and libraries + in applications written in any .NET language. This guide includes information of + interest to developers who want to use Java as their preferred .NET development language, as well as + for those who wish to use Java libraries in their C# or VB.NET applications.</p> + + </body> +</document> diff --git a/website/src/documentation/content/xdocs/devguide/java2net.xml b/website/src/documentation/content/xdocs/devguide/java2net.xml new file mode 100644 index 00000000..db9915b5 --- /dev/null +++ b/website/src/documentation/content/xdocs/devguide/java2net.xml @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>Developing .NET Applications in Java</title> + <authors><person name="Stephen Schaub" email="sschaub@bju.edu"/> + </authors> + <abstract>This section discusses information you need to know when you + want to develop .NET applications in Java. </abstract> + </header> + <body> + + <section> + <title>Overview</title> + + <p>IKVM makes it possible to develop .NET applications using the Java language. Here's how it works:</p> + <ol> + <li>Identify .NET classes you want to use in your application.</li> + <li>Identify which .NET dll's contain the .NET classes you identified in step 1. + <p><strong>Tip:</strong> If you're developing on Windows, the Microsoft .NET SDK Class Reference documentation identifies the assembly / dll + for a .NET class at the bottom of each class overview page.</p> + </li> + <li>Use the <link href="site:ikvmstub">ikvmstub</link> application to generate a Java jar file for each dll you identified in step 2. + <p>The ikvmstub tool analyzes the .NET classes in the designated dll + and generates a jar file containing Java interfaces and stub classes. This information is needed by the Java source compiler, which + knows nothing about .NET assemblies.</p> + </li> + <li>Compile your Java source code using javac or jikes, with the ikvmstub-generated jar files on the compiler classpath.</li> + <li>Compile the resulting Java classes using ikvmc. Use the -reference option to reference the dll's containing the + .NET classes you used; do <em>not</em> include the ikvmstub-generated jar files on the compiler classpath.</li> + </ol> + <p>For an example of this, see the <link href="site:tutorial">tutorial</link>.</p> + </section> + + <section> + <title>Mapping .NET API's to Java</title> + + <p>When ikvmstub generates a stub jarfile, it has to prevent namespace conflicts between Java API classes and + generated stub classes. It must also map .NET features such as properties, delegates, enumerations, + and variable-length argument lists to Java language equivalents. + </p> + <p>To prevent namespace conflicts, ikvmstub creates Java package names from .NET namespaces by + prefixing them with cli. For example, a .NET class in the <code>System.IO</code> namespace would have a stub generated + for it in a Java package named <code>cli.System.IO</code>. So, when writing Java code that uses the + System.IO.File class, you would use one of the following import statements in your Java code:</p> + <p xml:space="preserve"><code> import cli.System.IO.*; + import cli.System.IO.File; +</code> </p> + <p>The following sections discuss how .NET features are mapped to the Java language. Some of the mappings, + such as properties and enumerations, are fairly straightforward. Others, such as delegates and event handling, + require a little more work. </p> + <p><strong>Tip:</strong> Java development tools that + provide code assist features are a great help when writing applications that use .NET API's. + If you install the ikvmstub-generated jar files into your favorite Java IDE, you can use code completion to help you + use the .NET methods, properties, and enumerations correctly. Note, however, that you will not be able to test + your applications using your Java IDE debugger. + </p> + </section> + + <section> + <title>Properties</title> + <p>Since Java has no direct language support for properties, ikvmstub maps .NET properties to Java getter and + setter methods. A .NET property defined in C# like this:</p> + <source> + public <em>datatype</em> <em>property-name</em> { + get { ... } + set { ... } + }</source> + + <p>would be translated to a pair of Java stub methods, like this:</p> + + <source> + public <em>datatype</em> get_<em>property-name</em>( ) { ... } + public void set_<em>property-name</em>(<em>datatype</em> value) { ... }</source> + + <p>Here is an example of C# code that uses a property, and how you would access the same property in Java: + </p> + + <table> + <tr> + <th>C#</th> + <th>Java</th> + </tr> + <tr> + <td> + <p xml:space="preserve"><code> + int weight = bear.Weight; + bear.Weight = 15; + </code></p> + </td> + <td> + <p xml:space="preserve"><code> + int weight = bear.get_Weight(); + bear.set_Weight(15); + </code></p> + </td> + </tr> + </table> + + </section> + + <section> + <title>Enumerations</title> + <p>TODO. For now, see the <link href="ext:ikvmweblogfull">IKVM Weblog</link>, March 20, 2004 entry. + </p> + </section> + + <section> + <title>Delegates and Event Processing</title> + <p>TODO. For now, see the <link href="ext:ikvmweblogfull">IKVM Weblog</link>, March 20, 2004 entry. + Also, see the winforms sample.</p> + </section> + + <section> + <title>Varargs</title> + <p>TODO. For now, see the <link href="ext:ikvmweblogfull">IKVM Weblog</link>, March 20, 2004 entry. + Also, see the usenetapi/CreateFile.java sample.</p> + </section> + </body> +</document> diff --git a/website/src/documentation/content/xdocs/devguide/net2java.xml b/website/src/documentation/content/xdocs/devguide/net2java.xml new file mode 100644 index 00000000..678d594f --- /dev/null +++ b/website/src/documentation/content/xdocs/devguide/net2java.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>Using Java API's in .NET Applications</title> + <abstract>This section discusses information of interest to developers + who want to use Java API's in their .NET applications. </abstract> + </header> + <body> + + <section> + <title>Overview</title> + + <p>IKVM makes it possible to develop .NET applications that use Java API's. Here's how to proceed:</p> + <ol> + <li>IKVM comes with an implementation of GNU Classpath in .NET. To use those API's, simply add + a reference to IKVM.GNU.Classpath.dll to your Mono / .NET IDE project. </li> + <li>To use other Java API's, you can take one of the following approaches: + <ul> + <li>Convert the Java API to .NET CIL using <link href="site:ikvmc">ikvmc</link>. + This produces a .NET dll that you can reference in your project. </li> + <li>Use the Java reflection API's to dynamically load and execute the Java bytecode using the + IKVM bytecode interpreter. + For example, your application can load Java bytecode over a network connection + and execute it dynamically.</li> + </ul> + </li> + </ol> + + </section> + + <section> + <title>Java / .NET Interoperability Issues</title> + + <p>When calling Java API's from a .NET language such as C#, you will need to know + how to deal with the gap between the .NET and Java object models. For example, Java and .NET + both have their own String class, primitive wrapper classes, exception hierarchy, and so on. + Eventually, that information will be included in this manual. For now, you can use the following + as resources:</p> + + <ul> + <li>The <link href="http://weblog.ikvm.net">IKVM WebLog</link> has several + helpful entries. The series from February 29 - March 10 describe the object model.</li> + <li>The hodgepodge sample in the <link href="site:download">sample distribution</link> + is a simple demonstration of using Java API's from a C# application.</li> + <li>The IKVM source code is the ultimate reference, of course. </li> + </ul> + </section> + + <section> + <title>Subclassing Java Code</title> + <p>See IKVM Weblog Article: March 9</p> + </section> + + </body> +</document> diff --git a/website/src/documentation/content/xdocs/download.xml b/website/src/documentation/content/xdocs/download.xml new file mode 100644 index 00000000..8c81a272 --- /dev/null +++ b/website/src/documentation/content/xdocs/download.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>Downloading IKVM.NET</title> + </header> + <body> + <p>IKVM.NET source and binary distributions are available for download on + <fork href="ext:sourceforgedl">Sourceforge</fork>.</p> + + </body> +</document> diff --git a/website/src/documentation/content/xdocs/faqdoc.ehtml b/website/src/documentation/content/xdocs/faqdoc.ehtml new file mode 100644 index 00000000..4b856300 --- /dev/null +++ b/website/src/documentation/content/xdocs/faqdoc.ehtml @@ -0,0 +1,31 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<title>IKVM.NET FAQ</title> +</head> + +<body> + <h2>Frequently Asked Questions</h2> +<P><STRONG>What is IKVM.NET?</STRONG></P> +<P>IKVM.NET is a JVM for <A href="http://www.go-mono.com/">Mono</A> and the Microsoft .NET framework.</P> +<P><STRONG>What do you mean by <EM>JVM for .NET</EM>?</STRONG></P> +<P>The goal of IKVM.NET is two-fold:</P> +<ul> + <li>To be able to run any Java existing application ("dynamic mode").</li> +<li>To be able to statically compile Java libraries into .NET assemblies +("static mode"). Note that you can also statically compile Java applications, +but if the application depends on the exact Java class loading semantics, it +might need to be adapted. Dynamic mode supports the full Java class loader +model, but in static mode there are necessarily some limitations. A mixed model +is also possible, for example, statically compiled code can instantiate a class +loader and use it to dynamically load classes.</li> +</ul> + +<P><STRONG>Why this project?</STRONG></P> +<P>There are several answers to this. First of all, it's a fun thing to work on. Second, it just seems obvious that something like this should exist. Third, I want to migrate some of my Java code to .NET and J# and JUMP just aren't good enough.</P> +<P><STRONG>How compatible is it?</STRONG></P> +<P>The goal is to fully implement the JVM spec and to be compatible with Sun's JDK 1.4 reference implementation. At the moment we're not quite there yet, but many things are working already. Note that this refers to the JVM, not the class libraries. For details on the completeness of the class libraries, please visit the <A href="http://www.gnu.org/software/classpath/">GNU Classpath</A> site.</P> + +</body> +</html> diff --git a/website/src/documentation/content/xdocs/index.xml b/website/src/documentation/content/xdocs/index.xml new file mode 100644 index 00000000..cd1bfb2a --- /dev/null +++ b/website/src/documentation/content/xdocs/index.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET Home Page</title> + </header> + <body> + <section> + <title>Introduction</title> + <p>IKVM.NET is an implementation of Java for <fork href="ext:mono">Mono</fork> and the <fork href="ext:dotnet">Microsoft .NET Framework</fork>. + It includes the following components:</p> + <ul> + <li>A Java Virtual Machine implemented in .NET</li> + <li>A .NET implementation of the Java class libraries</li> + <li>Tools that enable Java and .NET interoperability</li> + </ul> + <p><link href="uses.html">Read more</link> about what you can do with IKVM.NET.</p> + </section> + <section> + <title>IKVM.NET Components</title> + <p >IKVM.NET consists of several parts:</p> +<ul > +<li> +<strong>ikvm.runtime.dll</strong>: The VM runtime and all supporting code. It contains (among other things): +<ul> +<li>Byte Code JIT compiler/verifier: Just-in-time compiles Java Byte Code to CIL.</li> +<li>Object model remapping infrastructure: Makes System.Object, System.String and System.Exception appear to +Java code as java.lang.Object, java.lang.String and java.lang.Throwable.</li> +<li>Managed .NET re-implementations of the native methods in Classpath. </li> +</ul> +</li> +<li> +<strong>ikvm.gnu.classpath.dll</strong>: compiled version of <link href="ext:classpath">GNU Classpath</link>, the Free Software Foundation's implementation of the Java class libraries, +plus some additional IKVM.NET specific code. Note that GNU Classpath isn't <em>part</em> of IKVM.NET, but it is <em>used</em> by IK.VM.NET +</li> +<li> +<strong>ikvm.jni.[mono|clr-win32].dll</strong>: Managed C++ assembly that implements the JNI interface. This is an optional part, only required when an application uses its own native libraries. This will not be required for pure Java applications, this is important because this code will only run on Microsoft's .NET implementation. +</li> +<li> +<strong>ikvm.exe</strong>: Starter executable, comparable to java.exe ("dynamic mode"). +</li> +<li> +<strong>ikvmc.exe</strong>: Static compiler. Used to compile Java classes and jars into a .NET assembly ("static mode") . +</li> +<li> +<strong>ikvmstub.exe</strong>: A tool that generates stub class files from a .NET assembly, so that Java code can be compiled against .NET code. IKVM.NET understands the stubs and replaces the references to the stubs by references to the actual .NET types. +</li> +<li> +<strong>IKVM.AWT.WinForms.dll</strong>: Very limited and broken implementation of a few AWT peers. This is a low priority issue for me.</li> +</ul> + </section> + <section> + <title>Project Status</title> + <p>This project is currently in active development. Compliance with JDK 1.4 is largely implemented, but there are some + holes (particularly in the <jump href="http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html">Classpath API's</jump>). In particular, </p> + <ul> + <li>AWT and Swing are not presently functional. This is a low priority item for the project developers.</li> + <li>Security is another fairly large hole missing from the IKVM platform. This will be solved by relying on the sophisticated and powerful security model offered by the .NET platform.</li> + </ul> + <p>Still, enough functionality is in place that several large Java projects run successfully. </p> + + + </section> + <section> + <title>Related Work</title> + <p>The following projects are related to IKVM.NET in some way:</p> + <ul> + <li><link href="ext:monodevelop">MonoDevelop: A Mono IDE with IKVM Support</link></li> + <li><link href="ext:classpath">GNU Classpath: The Free Java Library Project</link></li> + <li><link href="http://msdn.microsoft.com/vjsharp/default.aspx">Microsoft's J# for .NET</link></li> + </ul> + </section> + </body> +</document> diff --git a/website/src/documentation/content/xdocs/license.ehtml b/website/src/documentation/content/xdocs/license.ehtml new file mode 100644 index 00000000..43188636 --- /dev/null +++ b/website/src/documentation/content/xdocs/license.ehtml @@ -0,0 +1,16 @@ +<?xml version="1.0" ?> + +<html> +<head> +<title>License</title> +</head> + +<body> +<tt> +<p> Copyright (C) 2002, 2003 Jeroen Frijters</p> +<p> This software is provided 'as-is', without any express or implied<br/> warranty. In no event will the authors be held liable for any damages<br/> arising from the use of this software.</p> +<p> Permission is granted to anyone to use this software for any purpose,<br/> including commercial applications, and to alter it and redistribute it<br/> freely, subject to the following restrictions:</p><p> 1. The origin of this software must not be misrepresented; you must not<br/> claim that you wrote the original software. If you use this software<br/> in a product, an acknowledgment in the product documentation would be<br/> appreciated but is not required.<br/> 2. Altered source versions must be plainly marked as such, and must not be<br/> misrepresented as being the original software.<br/> 3. This notice may not be removed or altered from any source distribution.</p> +<p> Jeroen Frijters<br/> <A href="mailto:jeroen@frijters.net">jeroen@frijters.net</A><br/></p> +</tt> +</body> +</html> diff --git a/website/src/documentation/content/xdocs/site.xml b/website/src/documentation/content/xdocs/site.xml new file mode 100644 index 00000000..e2034425 --- /dev/null +++ b/website/src/documentation/content/xdocs/site.xml @@ -0,0 +1,72 @@ +<?xml version="1.0"?> + +<!-- +Forrest site.xml + +This file contains an outline of the site's information content. It is used to: +- Generate the website menus (though these can be overridden - see docs) +- Provide semantic, location-independent aliases for internal 'site:' URIs, eg +<link href="site:changes"> links to changes.html (or ../changes.html if in + subdir). +- Provide aliases for external URLs in the external-refs section. Eg, <link + href="ext:cocoon"> links to http://xml.apache.org/cocoon/ + +See http://xml.apache.org/forrest/linking.html for more info +--> + +<site label="ikvm" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab=""> + + <about label="About"> + <index label="Home" href="index.html" description=""/> + <download label="Download" href="download.html" description="" /> + <uses label="Uses" href="uses.html" description=""/> + <weblog label="News" href="http://weblog.ikvm.net" description=""/> + <faq label="FAQ" href="faqdoc.html" description=""/> + <license label="License" href="license.html" description=""/> + </about> + <userguide label="User's Guide" href="userguide/"> + <intro label="Introduction" href="intro.html"/> + <install label="Installation" href="install.html" description="" /> + <tutorial label="Tutorial" href="tutorial.html" description="" /> + <tools label="Tools Reference" href="tools.html" description=""/> + <ikvm href="ikvm.html"/> + <ikvmc href="ikvmc.html"/> + <ikvmstub href="ikvmstub.html"/> + </userguide> + <devguide label="Developer's Guide" href="devguide/"> + <intro label="Introduction" href="intro.html" description="" /> + <concepts label="Concepts" href="concepts.html" description="" /> + <net2java label="Using Java Libraries" href="net2java.html" description="" /> + <java2net label="Developing in Java" href="java2net.html" description="" /> + </devguide> + <contributing label="Contributing" href=""> + <forum label="Mailing Lists" href="http://sourceforge.net/mail/?group_id=69637" /> + <cvs label="CVS Repository" href="http://sourceforge.net/cvs/?group_id=69637" /> + </contributing> + + <!-- + <all> + <whole_site_html label="Whole Site HTML" href="site.html"/> + <whole_site_html label="Whole Site PDF" href="site.pdf"/> + </all> + --> + + <external-refs> + <jikes href="http://oss.software.ibm.com/developerworks/opensource/jikes/" /> + <sourceforgedl href="http://sourceforge.net/project/showfiles.php?group_id=69637" /> + <classpath href="http://www.gnu.org/software/classpath/classpath.html" /> + <monodevelop href="http://www.monodevelop.com/" /> + <dotnet href="http://msdn.microsoft.com/netframework/" /> + <ikvmweblogfull href="http://weblog.ikvm.net/allentries.aspx" /> + <mono href="http://www.go-mono.org" /> + <xml.apache.org href="http://xml.apache.org/"> + <forrest href="forrest/"> + <validation href="validation.html"/> + <webapp href="your-project.html#webapp"/> + <document-v11 href="document-v11.html"/> + </forrest> + <cocoon href="cocoon/"/> + </xml.apache.org> + </external-refs> + +</site> diff --git a/website/src/documentation/content/xdocs/tabs.xml b/website/src/documentation/content/xdocs/tabs.xml new file mode 100644 index 00000000..69791d44 --- /dev/null +++ b/website/src/documentation/content/xdocs/tabs.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE tabs PUBLIC "-//APACHE//DTD Cocoon Documentation Tab V1.0//EN" "http://apache.org/forrest/dtd/tab-cocoon-v10.dtd"> + +<tabs software="MyProj" + title="MyProj" + copyright="Foo" + xmlns:xlink="http://www.w3.org/1999/xlink"> + + <!-- The rules are: + @dir will always have '/@indexfile' added. + @indexfile gets appended to @dir if the tab is selected. Defaults to 'index.html' + @href is not modified unless it is root-relative and obviously specifies a + directory (ends in '/'), in which case /index.html will be added + If @id's are present, site.xml entries with a matching @tab will be in that tab. + --> + + <!-- Add new tabs here, eg: + <tab id="" label="Home" dir="" indexfile="index.html"/> + <tab id="samples" label="Samples" dir="samples" indexfile="sample.html"/> + <tab label="How-Tos" dir="community/howto/"/> + <tab label="XML Site" dir="xml-site/"/> + --> + +</tabs> diff --git a/website/src/documentation/content/xdocs/userguide/ikvm.xml b/website/src/documentation/content/xdocs/userguide/ikvm.xml new file mode 100644 index 00000000..df55ccc0 --- /dev/null +++ b/website/src/documentation/content/xdocs/userguide/ikvm.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/ttd/document-v12.ttd"> +<document> + <header> + <title>IKVM.NET Virtual Machine (ikvm.exe)</title> + <abstract>The ikvm tool is a Java virtual machine implemented in .NET.</abstract> + </header> + <body> + <section> + <title>Usage</title> +<table><tr><td> + <p xml:space="preserve"> ikvm [ <em>options</em> ] <em>classname</em> [ <em>args ...</em> ]</p> + <p xml:space="preserve"> ikvm [ <em>options</em> ] -jar <em>jarfile</em> [ <em>args ...</em> ]</p> +</td></tr></table> + <dl> + <dt>options</dt> + <dd>Command-line options for the virtual machine.</dd> + <dt>classname</dt> + <dd>Fully-qualified name of a class containing the main method to execute. Do not include a + path or a .class extension. Do not use this with the -jar option.</dd> + <dt>jarfile</dt> + <dd>The name of an executable .jar file to execute. Used only with the -jar option.</dd> + <dt>args</dt> + <dd>Command-line arguments passed to the main class.</dd> + </dl> + </section> + + <section> + <title>Options</title> + <table> + <tr> + <th>Option</th> + <th>Description</th> + </tr> + <tr> + <td> + -cp <em>classpath</em> <br /> + -classpath <em>classpath</em> + </td> + <td><p>Specifies the classpath for the JVM. <em>classpath</em> is a semicolon-delimited list of pathnames to directories and zip files / jar files.</p> + <p>Note: If you specify this option more than once, only the last is used.</p> + </td> + </tr> + <tr> + <td> + -D<em>property-name</em>=<em>value</em> + </td> + <td> + Set a system property named <em>property-name</em> to <em>value</em>. Note that there is no + space between the -D and <em>property-name</em>. + </td> + </tr> + <tr> + <td> + -Xsave + </td> + <td> + Saves the generated assembly (for debugging) + </td> + </tr> + <tr> + <td> + -Xtime + </td> + <td> + Times the execution + </td> + </tr> + <tr> + <td> + -Xbootclasspath:<em>classpath</em> + </td> + <td> + <p>Specifies the boot classpath for the JVM. <em>classpath</em> is a semicolon-delimited list of pathnames to directories and jars. + These classes override those in the GNU Classpath libraries.</p> + <p>Note: If you specify this option more than once, only the last is used.</p> + </td> + </tr> + <tr> + <td> + -Xtrace:<em>name</em> + </td> + <td> + Displays all tracepoints with the given name + </td> + </tr> + <tr> + <td> + -Xmethodtrace:<em>name</em> + </td> + <td> + Builds method trace into the specified output method + </td> + </tr> + <tr> + <td> + -Xwait + </td> + <td> + Keeps process hanging around after exit + </td> + </tr> + </table> + </section> + <section> + <title>Notes</title> + <p>This command is intended to act as a "drop-in" replacement for the Sun / IBM JVM's. In many cases, + you can take a java command line and simply replace <em>java</em> with <em>ikvm</em>.</p> + + <p>Please refer to the <jump href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html">Sun documentation</jump> + for usage details. Note that ikvm supports only the options listed here.</p> + + <p>ikvm finds classes as follows:</p> + <ul> + <li>If no -cp/-classpath or -jar option specified, and no CLASSPATH environment variable is set, + looks in the current directory.</li> + <li>If no -cp/-classpath or -jar option specified, and CLASSPATH environment variable is set, + looks in directories specified in CLASSPATH (not in the current directory unless CLASSPATH contains .).</li> + <li>If -cp/-classpath option specified, ignores CLASSPATH environment variable, and looks only in + directories specified in -cp/-classpath option.</li> + <li>If -jar option specified, prepends jarfile to CLASSPATH (or -cp/-classpath specified classpath). + <p><strong>Note:</strong> This is different from the Sun JVM behavior.</p> + </li> + </ul> + + <p>For information about creating executable jar files, see <jump href="http://www-106.ibm.com/developerworks/library/j-jar/">this IBM article</jump>.</p> + + + </section> + + <section> + <title>Examples</title> + <p xml:space="preserve"><code> ikvm MyProg </code></p> + <p>Loads a class named MyProg.class from the current directory (unless the CLASSPATH environment variable + is set, in which case that is searched instead) and executes its main method. + </p> + + <p xml:space="preserve"><code> ikvm -cp c:\java\lib;c:\mystuff\mylib.jar;c:\mystuff\otherlib.zip org.me.MyProg </code></p> + <p>Loads a class named org.me.MyProg from a file named MyProg.class and executes its main method. Searches for it in the following locations:</p> + <ul> + <li>c:\java\lib\org\me\MyProg.class</li> + <li>c:\mystuff\mylib.jar (looks inside for org/me/MyProg.class)</li> + <li>c:\mystuff\otherlib.zip (looks inside for org/me/MyProg.class)</li> + </ul> + + <p xml:space="preserve"><code> ikvm -jar /usr/share/myprog.jar </code></p> + <p>Executes Java code in the executable jar file /usr/share/myprog.jar.</p> + </section> + </body> +</document> diff --git a/website/src/documentation/content/xdocs/userguide/ikvmc.xml b/website/src/documentation/content/xdocs/userguide/ikvmc.xml new file mode 100644 index 00000000..56cc334a --- /dev/null +++ b/website/src/documentation/content/xdocs/userguide/ikvmc.xml @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/ttd/document-v12.ttd"> +<document> + <header> + <title>IKVM.NET Bytecode Compiler (ikvmc.exe)</title> + <abstract>The ikvmc tool converts Java bytecode to .NET dll's and exe's.</abstract> + </header> + <body> + <section> + <title>Usage</title> +<table><tr><td> + <p xml:space="preserve"> ikvmc [ <em>options</em> ] <em>classOrJarfile</em> [ <em>classOrJarfile ...</em> ]</p> +</td></tr></table> + <dl> + <dt>options</dt> + <dd>See below.</dd> + <dt>classOrJarfile</dt> + <dd>Name of a Java .class or .jar file. May contain wildcards (*.class).</dd> + </dl> + </section> + + <section> + <title>Options</title> + <table> + <tr> + <th>Option</th> + <th>Description</th> + </tr> + <tr> + <td> + -out:<em>outputfile</em> + </td> + <td>Specifies the name of the output file. Should have a .dll extension (if -target is library) or an .exe extension (if -target is exe or winexe). + In most cases, if you omit this option, ikvmc will choose an output name based on the -target and the + name of the input files. However, if you specify input files using wildcards, you must use + this option to specify the output file.</td> + </tr> + <tr> + <td> + -assembly:<em>assembly-name</em> + </td> + <td> + Specifies the name of the generated assembly. If omitted, the assembly name is (usually) + the output filename. + </td> + </tr> + <tr> + <td> + -target:<em>target-type</em> + </td> + <td> + Specifies whether to generate an .exe or .dll. + <em>target-type</em> is one of + <ul> + <li>exe - generates an executable that runs in a Windows command window</li> + <li>winexe - generates an .exe for GUI applications</li> + <li>library - generates a .dll</li> + <li>module - generates a .netmodule</li> + </ul> + <p>On Linux, there is no difference between <em>exe</em> and <em>winexe</em>.</p> + + </td> + </tr> + <tr> + <td> + -keyfile:<em>keyfilename</em> + </td> + <td> + Uses <em>keyfilename</em> to sign the resulting assembly. + </td> + </tr> + <tr> + <td> + -version:M.m.b.r + </td> + <td> + Specifies the assembly version. + </td> + </tr> + <tr> + <td> + -main:<em>classname</em> + </td> + <td> + Specifies the name of the class containing the main method. + If omitted and the -target is exe or winexe, ikvmc searches + for a qualifying main method and reports if it finds one. + </td> + </tr> + <tr> + <td> + -reference:<em>library-filespec</em> + </td> + <td> + If your Java code uses .NET API's, specify the dll's using this + option. This option can appear more than once if more than one library is referenced. + Wildcards are permitted (e.g. c:\libs\*.dll). + </td> + </tr> + <tr> + <td> + -recurse:<em>filespec</em> + </td> + <td> + Processes all files matching <em>filespec</em> in and under the directory specified by + <em>filespec</em>. Example: -recurse:*.class + </td> + </tr> + <tr> + <td> + -nojni + </td> + <td> + Do not generate JNI stub for native methods + </td> + </tr> + <tr> + <td> + -resource:<em>name</em>=<em>path</em> + </td> + <td> + Includes <em>path</em> as a Java resource named <em>name</em> + </td> + </tr> + <tr> + <td> + -exclude:<em>filename</em> + </td> + <td> + <em>filename</em> is a file containing a list of classes to exclude + </td> + </tr> + <tr> + <td> + -debug + </td> + <td> + Generates debugging information in the output. Note that this is only helpful + if the .class files contain debug information (compiled with the javac -g option). + </td> + </tr> + <tr> + <td> + -srcpath:<em>path</em> + </td> + <td> + Specifies the location of source code. Use with -debug. The + package of the class is appended to the specified <em>path</em> to locate + the source code for the class. + </td> + </tr> + <tr> + <td> + -Xtrace:<em>name</em> + </td> + <td> + Displays all tracepoints with <em>name</em> + </td> + </tr> + <tr> + <td> + -Xmethodtrace:<em>methodname</em> + </td> + <td> + Builds method trace into the specified output method. + </td> + </tr> + </table> + </section> + <section> + <title>Notes</title> + <p>The ikvmc tool generates .NET assemblies from Java class files and jar files. + It converts the Java bytecodes in the input files to .NET CIL. Use it to produce</p> + <ul> + <li>.NET executables (-target:exe or -target:winexe)</li> + <li>.NET libraries (-target:library)</li> + <li>.NET modules (-target:module)</li> + </ul> + + <p>Java applications often consist of a collection of jar files. ikvmc can process several input jar files (and class files) + and produce a single .NET executable or library. For example, an application consisting of main.jar, lib1.jar, + and lib2.jar can be converted to a single main.exe. </p> + + <p>When processing multiple input jar files that contain duplicate classes / resources, ikvmc will use the first + class / resource it encounters, and ignore duplicates encountered in jars that appear later on the + command line. It will produce a warning in this case. Thus, order of jar files can be significant.</p> + <note> + When converting a Java application with ikvmc, for best results, list the jars on the ikvmc command + line in the same order that they appear in the Java application's classpath.</note> + + + + </section> + + <section> + <title>Examples</title> + <p xml:space="preserve"><code> ikvmc myProg.jar </code></p> + <p>Scans myprog.jar for a main method. If found, an .exe is produced; otherwise, a .dll is generated. + </p> + + <p xml:space="preserve"><code> ikvmc -out:myapp.exe -main:org.anywhere.Main -recurse:bin\*.class lib\mylib.jar</code></p> + <p>Processes all .class files in and under the bin directory, and mylib.jar in the lib directory. Generates an executable + named myapp.exe using the class org.anywhere.Main as the main method.</p> + + + </section> + </body> +</document> diff --git a/website/src/documentation/content/xdocs/userguide/ikvmstub.xml b/website/src/documentation/content/xdocs/userguide/ikvmstub.xml new file mode 100644 index 00000000..44622a1c --- /dev/null +++ b/website/src/documentation/content/xdocs/userguide/ikvmstub.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/ttd/document-v12.ttd"> +<document> + <header> + <title>IKVM.NET Stub Generator (ikvmstub.exe)</title> + <abstract>The ikvmstub tool generates Java stubs from .NET assemblies.</abstract> + </header> + <body> + <section> + <title>Usage</title> +<table><tr><td> + <p xml:space="preserve"> ikvmstub <em>assemblyNameOrPath</em> </p> +</td></tr></table> + <dl> + <dt>assemblyNameOrPath</dt> + <dd>Name of an assembly. May be a fully-qualified path. </dd> + + </dl> + </section> + + + <section> + <title>Notes</title> + <p>ikvmstub reads the specified assembly and generates a Java jar file containing + Java interfaces and stub classes. For more information about the generated stubs, + see the <link href="site:java2net">Developer's Guide</link>.</p> + <p>The tool uses the following algorithm to locate the assembly:</p> + <ol> + <li>First it attempts to load the assembly from the default load context of ikvmstub.exe. + For practical purposes, this usually means it searches the Global Assembly Cache.</li> + <li>If not found in the default load context, ikvmstub looks for the assembly at the indicated path (or the current + directory, if no path is supplied).</li> + </ol> + + + + </section> + + <section> + <title>Examples</title> + <p xml:space="preserve"><code> ikvmstub mscorlib.dll </code></p> + <p>Generates mscorlib.jar, containing stubs for classes, interfaces, etc., defined in mscorlib.dll. + </p> + + <p xml:space="preserve"><code> ikvmstub c:\lib\mylib.dll </code></p> + <p>Generates mylib.jar, containing stubs for classes, interfaces, etc., defined in c:\lib\mylib.dll. + </p> + + + </section> + </body> +</document> diff --git a/website/src/documentation/content/xdocs/userguide/install.xml b/website/src/documentation/content/xdocs/userguide/install.xml new file mode 100644 index 00000000..267b4310 --- /dev/null +++ b/website/src/documentation/content/xdocs/userguide/install.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET Installation</title> + </header> + <body> + <section> + <title>Installation</title> + <p>The installation procedure for both Windows and Linux is straightforward. + After <link href="site:download">downloading</link> the binary distribution, simply extract the + files from the archive. Open a command or shell window, cd to ikvm\bin, and type</p> + <p xml:space="preserve"><code> ikvm</code></p> + <p>If your system is operating correctly, you should see the following output:</p> + <p xml:space="preserve"><code> + usage: ikvm [-options] <class> [args...] + (to execute a class) + or ikvm -jar [-options] <jarfile> [args...] + (to execute a jar file) + </code>...</p> + <p>For convenience, you may wish to add the \ikvm\bin folder to your system's path, but this is not required. + Now, if all you want to do is use IKVM as a Java VM, you're done -- no further configuration is needed. + If you want to use IKVM for .NET / Mono development, read the configuration instructions below. + </p> + </section> + + <section> + <title>Configuration for Development</title> + <p>If you plan to do .NET development with IKVM.NET, you may wish to do the following:</p> + <ul><li>Download the <fork href="ext:jikes">Jikes compiler</fork> + <p>If you plan to develop code in Java that runs in .NET, you will need a Java compiler. IKVM.NET does not + come with a compiler. You may use any Java compiler that emits standard Java .class files. Jikes is an excellent + open source, fast Java compiler that is available for many platforms.</p></li> + <li>Windows: Install IKVM dll's in the Global Assembly Cache + <p>When running .NET applications in Windows that use IKVM dll's, the .NET framework must be able to locate the dll's. + It looks in the Global Assembly Cache, then in the current directory. If you want to be able to do development + without having the dll's in the current directory, you must install them in the Global Assembly Cache. + To do this in Windows, access the Microsoft .NET Framework + Configuration item in the Windows Control Panel, and add the assemblies to the Assembly Cache. + At minimum, you will want to install the IKVM.GNU.Classpath.dll and IKVM.Runtime.dll. + </p> + </li> + </ul> + <p></p> + </section> + +</body> +</document> diff --git a/website/src/documentation/content/xdocs/userguide/intro.xml b/website/src/documentation/content/xdocs/userguide/intro.xml new file mode 100644 index 00000000..0cbc40a1 --- /dev/null +++ b/website/src/documentation/content/xdocs/userguide/intro.xml @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET User's Guide</title> + <authors><person name="Stephen Schaub" email="sschaub@bju.edu"/> + <person name="Brian J. Sletten" email="brian@bosatsu.net"/> + </authors> + </header> + <body> + <section> + <title>Introduction</title> + <p>IKVM.NET is a Java Virtual Machine (JVM) for the .NET and Mono runtimes. At a time when most people in the computer industry consider Java and + .NET as mutually exclusive technologies, IKVM.NET stands in the unique position of bringing them together. + Initially born out of frustration with the limitations of tools like JUMP and J#, IKVM.NET was created when Jeroen Fritjers set out to + create a way to migrate an existing Java<sup>TM</sup> database application + to .NET<sup>TM</sup>. + </p> + <p>IKVM.NET has gone through a variety of designs and name changes to emerge as a sophisticated collection of tools offering a variety of integration patterns + between the Java and .NET languages and platforms. It is still under development but people have reported success in running sophisticated applications and tools + including Eclipse, JmDNS, JGroups, Jetty (with a few changes), etc. + </p> + <p>This manual is written for IKVM.NET version 0.80. </p> + + </section> + + <section> + <title>Overview</title> + + <p>There are two main ways of using IKVM.NET:</p> + + <ul> + <li> + <p>Dynamically: In this mode, Java classes and jars are used directly to execute Java applications on the .NET<sup>TM</sup> runtime. + Java bytecode is translated on the fly into CIL and no further steps are necessary. The full Java class loader model is supported in this mode.</p> + </li> + <li> + <p>Statically: In order to allow Java code to be used by .NET applications, it must be compiled down to a DLL and used directly. + The bytecode is translated to CIL and stored in this form. The assemblies can be referenced directly by the .NET applications and + the "Java" objects can be used as if they were .NET objects. While the static mode does not support the full Java class loader mechanism, + it is possible for statically-compiled code to create a class loader and load classes dynamically. + </p> + </li> + </ul> + + <p> + IKVM.NET provides the VM-related technologies for byte-code translation and verification, classloading, etc. + It is dependent upon the <fork href="ext:classpath">GNU Classpath</fork> project + for implementations of the JDK libraries. While there are several holes in the coverage provided by these libraries, they are used by at least ten open source VMs. + This means that they will continue evolving and being debugged rapidly to improve the quality of the IKVM.NET experience.</p> + + <p>IKVM.NET is comprised by the following components:</p> + + <table><caption>IKVM.NET Components</caption> + <tr> + <th>Component</th> + <th>Description</th> + </tr> + <tr> + <td>IKVM.Runtime.dll</td> + <td>The VM runtime and all supporting code. It contains (among other things): + <ul> + <li><p> + Byte Code JIT compiler/verifier: Just-in-time compiles Java Byte Code to CIL.</p> + </li> + <li><p> + Object model remapping infrastructure: Makes System.Object, System.String and System.Exception appear to Java code as java.lang.Object, java.lang.String and java.lang.Throwable.</p> + </li> + <li><p> + Managed .NET re-implementations of the native methods in Classpath.</p> + </li> + </ul> + </td> + </tr> + <tr> + <td>IKVM.GNU.Classpath.dll</td> + <td>This is a compiled version of <fork href="ext:classpath">GNU Classpath</fork>, the Free Software Foundation's implementation of the Java class libraries, plus some additional IKVM.NET specific code. Note that GNU Classpath isn't part of IKVM.NET, but it is used by IK.VM.NET.</td> + </tr> + <tr> + <td>IKVM.JNI.CLR-Win32.dll</td> + <td>Managed C++ assembly that implements the JNI interface. This is an optional part, only required when an application uses it's own native libraries. This will not be required for pure Java applications, this is important because this code will only run on Microsoft's .NET implementation.</td> + </tr> + <tr> + <td>IKVM.JNI.Mono.dll</td> + <td>Mono implementation of the JNI interface. Works together with libmono-ikvm-jni.so, which is developed and maintained as part of Mono. + </td> + </tr> + <tr> + <td>IKVM.AWT.WinForms.dll</td> + <td>Very limited and broken implementation of a few AWT peers. This is a low priority issue until the platform stabilizes and works sufficiently well.</td> + </tr> + <tr> + <td>ikvm.exe</td> + <td>Starter executable, comparable to java.exe ("dynamic mode").</td> + </tr> + <tr> + <td>ikvmc.exe</td> + <td>Static compiler. Used to compile Java classes and jars into a .NET assembly ("static mode")</td> + </tr> + <tr> + <td>ikvmstub.exe</td> + <td>A tool that generates stub class files from a .NET assembly, so that Java code can be compiled against .NET code. IKVM.NET understands the stubs and replaces the references to the stubs by references to the actual .NET types.</td> + </tr> + + </table> + + + </section> + + <section> + <title>System Requirements</title> + <p>You must have one of the following .NET frameworks + installed:</p> + <ul> + <li>Microsoft .NET Framework 1.1 SDK (Windows platform)</li> + <li>Mono Framework 1.0 (Windows or Linux)</li> + </ul> + + </section> + + + </body> +</document> diff --git a/website/src/documentation/content/xdocs/userguide/tools.xml b/website/src/documentation/content/xdocs/userguide/tools.xml new file mode 100644 index 00000000..fe0ce15c --- /dev/null +++ b/website/src/documentation/content/xdocs/userguide/tools.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET User Manual: Tools Reference</title> + </header> + <body> + <p>IKVM.NET includes the following tools:</p> + <ul> + <li><link href="site:ikvm">ikvm</link> - Java Virtual Machine</li> + <li><link href="site:ikvmc">ikvmc</link> - Compiles Java Bytecode to CIL</li> + <li><link href="site:ikvmstub">ikvmstub</link> - Generates Java stub classes from .NET assemblies</li> + </ul> + </body> + </document> diff --git a/website/src/documentation/content/xdocs/userguide/tutorial.xml b/website/src/documentation/content/xdocs/userguide/tutorial.xml new file mode 100644 index 00000000..a7859c48 --- /dev/null +++ b/website/src/documentation/content/xdocs/userguide/tutorial.xml @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>IKVM.NET Tutorial</title> + <authors><person name="Stephen Schaub" email="sschaub@bju.edu"/> + </authors> + + </header> + <body> + <section> + <title>Setup your Environment</title> + <p>This tutorial includes information for both the Windows and Linux platforms. It assumes that + Windows users will be using the .NET SDK, and Linux users will be using the Mono SDK. </p> + + <p>This tutorial references files in the samples distribution available on the <link href="site:download">download page</link>. + Before you begin, prepare your environment by adding the following to your PATH environment variable:</p> + <ul> + <li>The directory containing the IKVM executables</li> + <li>The directory containing the C# compiler (Windows: csc / Mono: mcs). On Windows, this is typically + C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322.</li> + <li>The directory containing a Java compiler (javac or jikes)</li> + </ul> + </section> + + <section> + <title>Run a Java Application Dynamically</title> + + <p>IKVM.NET includes a Java Virtual Machine implented in C#. To try it out, navigate to + <em>IKVMROOT</em>\samples\hello and compile the sample application:</p> + + <p xml:space="preserve"><code> javac Hello + jar cfm hello.jar manifest.mf Hello.class</code></p> + + <p>Now, to run the application using the IKVM Virtual Machine, enter the following:</p> + + <p xml:space="preserve"><code> ikvm Hello</code></p> + <p>This command starts the virtual machine, which searches for a + file named Hello.class. When it finds it, it loads it and executes the bytecodes dynamically. + You should be prompted to enter your name, and see a brief greeting.</p> + <p>If you experience problems, check the following:</p> + <ul> + <li>Check your capitalization: ikvm, like java, requires you to capitalize class names correctly.</li> + <li>If ikvm reports a ClassNotFoundException, check whether the CLASSPATH environment variable is set. + If so, try clearing the CLASSPATH or adding the current directory to it so ikvm can find the class in the current directory.</li> + </ul> + + + <p>You can also execute Java applications in a jar file. Try it out:</p> + <p xml:space="preserve"><code> ikvm -jar hello.jar</code></p> + <p>See the <link href="site:ikvm">ikvm reference</link> for more information about ikvm command line options.</p> + + </section> + + <section> + <title>Convert a Java Application to .NET</title> + + <p>IKVM.NET includes <link href="site:ikvmc">ikvmc</link>, a utility that converts + Java .jar files to .NET .dll libraries and .exe applications. In this section, you'll convert a Java application to a .NET + .exe.</p> + <p>Navigate to <em>IKVMROOT</em>\samples\hello and enter the following:</p> + + <p xml:space="preserve"><code> ikvmc hello.jar</code></p> + + <note>If you're using Mono, you will have to tell ikvmc where to find the GNU Classpath dll. Try the following, + substituting the location of IKVM.GNU.Classpath.dll on your system if necessary:<br/> + <br/> + <code>ikvmc -reference:/usr/lib/IKVM.GNU.Classpath.dll hello.jar</code> + </note> + + <p>After the command completes, you should find a hello.exe file in the current directory. To execute it:</p> + <ul> + <li><strong>Windows / .NET Framework:</strong> + <p>Try running hello.exe. If you get a FileNotFound exception when the .NET runtime attempts to load the referenced + IKVM.GNU.Classpath.dll, remember that the .NET framework expects to find referenced dll's in the current + directory or in the Global Assembly Cache. Either <link href="site:install">install the dll's in the + Global Assembly Cache</link>, or copy them to the current directory.</p> + </li> + <li><strong>Linux / Mono:</strong> + <p>Run it using the following command:</p> + <p xml:space="preserve"><code> mono hello.exe</code></p> + </li> + </ul> + + </section> + + <anchor id="tutorial_java2net"/> + <section> + <title>Develop a .NET Application in Java</title> + <p>In this section, you will learn the steps needed to develop .NET applications in Java. </p> + <p>To begin, open a command window and navigate to <em>IKVMROOT</em>\samples\usenetapi. + Take a look at ShowDir.java -- this is a Java application that uses the .NET API to display a list of files + in the current directory. Notice the imports at the top -- the package names begin with <code>cli.*</code>. These are not + packages in the Java API; rather, they are "pseudo" packages that map to .NET namespaces. + For more information on this, see the <link href="site:java2net">Developer's Guide</link>.</p> + + <p><strong>Step 1: Generate Java stubs</strong></p> + <p>IKVM does not come with a Java compiler, so we will compile ShowDir using a standard Java compiler. + Since Java compilers can only compile applications that use Java API's, not .NET API's, we have to fool the + Java compiler into believing that there is really a Java package named cli.System.IO. The + <link href="site:ikvmstub">ikvmstub</link> application + helps us do this. It generates Java jar files from .NET dll's. The jar files generated by ikvmstub contain Java classes + and interfaces that correspond to .NET classes, but don't contain any real code. They contain just enough to satisfy + the Java compiler, and allow it to type check the Java application.</p> + <p>Type the following:</p> + + <p xml:space="preserve"><code> ikvmstub mscorlib.dll</code></p> + <p>Note: On a Linux Mono installation, you will have to type the full pathname to mscorlib.dll, like this:</p> + <p xml:space="preserve"><code> ikvmstub /usr/lib/mscorlib.dll</code></p> + + <p>After the command completes, you should find a file named mscorlib.jar in the current directory.</p> + + <p><strong>Step 2: Compile the Java source code</strong></p> + + <p>Now, we'll compile the Java source code. If you're using javac, type the following:</p> + + <p xml:space="preserve"><code> javac -classpath mscorlib.jar ShowDir.java</code></p> + + <p>(Substitute <code>jikes</code> for <code>javac</code> if you're using that tool.)</p> + + <p>After the command completes, you should find ShowDir.class in the current directory. </p> + + <p><strong>Step 3: Generate a .NET executable</strong></p> + + <p>Now, we'll convert the Java class file to a .NET application. Type the following:</p> + + <p xml:space="preserve"><code> ikvmc ShowDir.class</code></p> + <p>Note: On a Linux Mono installation, you will have to add a -reference option, like this:</p> + + <p xml:space="preserve"><code> ikvmc -reference:/usr/lib/IKVM.GNU.Classpath.dll ShowDir.class</code></p> + + <p>After the command completes, you should find ShowDir.exe in the current directory. You should be able to + execute it successfully. (On Windows .NET, remember to copy the IKVM dll's to the current directory.)</p> + </section> + + + + </body> +</document> diff --git a/website/src/documentation/content/xdocs/uses.xml b/website/src/documentation/content/xdocs/uses.xml new file mode 100644 index 00000000..e6ec0237 --- /dev/null +++ b/website/src/documentation/content/xdocs/uses.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://apache.org/forrest/dtd/document-v12.dtd"> +<document> + <header> + <title>Uses for IKVM.NET</title> + <abstract>IKVM.NET is useful for several different software development + scenarios. Here is a sampling of some of the possibilities.</abstract> + </header> + <body> + <section> + <title>Drop-in JVM</title> + <p>The <link href="site:ikvm">ikvm application</link> included with the distribution is a .NET + implementation of a Java Virtual Machine. In many cases, you can use it + as a drop-in replacement for java. For example, instead of typing</p> + <p xml:space="preserve"><code> java -jar myapp.jar</code></p> + <p>to run an application, you can type</p> + <p xml:space="preserve"><code> ikvm -jar myapp.jar</code></p> + + </section> + <section> + <title>Use Java libraries in your .NET applications</title> + <p>IKVM.NET includes <link href="site:ikvmc">ikvmc</link>, a Java bytecode to .NET IL translator. + If you have a Java library that you would like to use in a .NET application, + run <code>ikvmc -target:library mylib.jar</code> to create mylib.dll. + </p> + <p>For example, the Apache FOP project is an open source XSL-FO + processor written in Java that is widely used to generate PDF documents from XML + source. With IKVM.NET technology, Apache FOP can be used by + any .NET application.</p> + </section> + + <section> + <title>Develop .NET applications in Java</title> + <p>IKVM provides a way for you to develop .NET applications in + Java. Although IKVM.NET does not include a Java compiler for .NET, + you can use the open source <fork href="ext:jikes">Jikes compiler</fork> to + compile Java source code to JVM bytecode, then use + <code>ikvmc -target:exe myapp.jar</code> + to produce a .NET executable. You can even use .NET API's in your + Java code using the included <link href="site:ikvmstub">ikvmstub</link> application. + </p> + </section> + + </body> +</document> diff --git a/website/src/documentation/resources/images/group-logo.gif b/website/src/documentation/resources/images/group-logo.gif Binary files differnew file mode 100644 index 00000000..f017f324 --- /dev/null +++ b/website/src/documentation/resources/images/group-logo.gif diff --git a/website/src/documentation/resources/images/group.svg b/website/src/documentation/resources/images/group.svg new file mode 100644 index 00000000..d45160fd --- /dev/null +++ b/website/src/documentation/resources/images/group.svg @@ -0,0 +1,61 @@ +<?xml version="1.0" standalone="no"?> + +<!-- + SVG Anteater logo + jefft@apache.org + +To get started with SVG, I'd recommend getting the Adobe SVG plugin, and the +xml-batik CVS module. Then have a look at the xml-batik/samples files. Use the +SVG spec (http://www.w3.org/TR/SVG/) as a reference. +--> + +<!-- +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +--> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:for="http://xml.apache.org/forrest" width="220" height="65" > + <title>Anteater logo</title> + + <defs> + + <!-- + <radialGradient id="radialGradient"> + <stop style="stop-color:gold" offset="0"/> + <stop style="stop-color:orange" offset=".5"/> + <stop style="stop-color:crimson" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient"> + <stop style="stop-color:gold" offset="0"/> + <stop style="stop-color:orange" offset=".5"/> + <stop style="stop-color:crimson" offset="1"/> + </linearGradient> + --> + + <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1"> + <stop style="stop-color:white" offset="0"/> + <stop style="stop-color:lightgreen" offset="1"/> + </linearGradient> + + <filter id="shadowFilter" filterUnits="objectBoundingBox"> + <!-- Takes the alpha channel (black outline of the text), blurs it and saves as 'blur' --> + <feGaussianBlur in="SourceAlpha" stdDeviation="2 2" result="blur"/> + <!-- Takes saved 'blur' and offsets it by 4 pixels, saves as 'offsetBlur' --> + <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/> + <!-- Merges SourceGraphic (original image) and 'offsetBlur', putting the + former 'over' the latter, and using the merged result as the finished + image --> + <feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/> + </filter> + + </defs> + + <g filter="url(#shadowFilter)" fill="url(#gradient)"> + <text x="40%" y="60%" style="font-size:24pt; font-family:Verdana ; text-anchor: middle"> + <for:group-name /> + </text> + </g> +</svg> + + diff --git a/website/src/documentation/resources/images/icon.png b/website/src/documentation/resources/images/icon.png Binary files differnew file mode 100644 index 00000000..3be8bbbe --- /dev/null +++ b/website/src/documentation/resources/images/icon.png diff --git a/website/src/documentation/resources/images/project-logo.gif b/website/src/documentation/resources/images/project-logo.gif Binary files differnew file mode 100644 index 00000000..a60277a4 --- /dev/null +++ b/website/src/documentation/resources/images/project-logo.gif diff --git a/website/src/documentation/resources/images/project.gif b/website/src/documentation/resources/images/project.gif Binary files differnew file mode 100644 index 00000000..52613e01 --- /dev/null +++ b/website/src/documentation/resources/images/project.gif diff --git a/website/src/documentation/resources/images/project.svg b/website/src/documentation/resources/images/project.svg new file mode 100644 index 00000000..42f3febf --- /dev/null +++ b/website/src/documentation/resources/images/project.svg @@ -0,0 +1,61 @@ +<?xml version="1.0" standalone="no"?> + +<!-- + SVG Anteater logo + jefft@apache.org + +To get started with SVG, I'd recommend getting the Adobe SVG plugin, and the +xml-batik CVS module. Then have a look at the xml-batik/samples files. Use the +SVG spec (http://www.w3.org/TR/SVG/) as a reference. +--> + +<!-- +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +--> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:for="http://xml.apache.org/forrest" width="220" height="65" > + <title>Anteater logo</title> + + <defs> + + <!-- + <radialGradient id="radialGradient"> + <stop style="stop-color:gold" offset="0"/> + <stop style="stop-color:orange" offset=".5"/> + <stop style="stop-color:crimson" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient"> + <stop style="stop-color:gold" offset="0"/> + <stop style="stop-color:orange" offset=".5"/> + <stop style="stop-color:crimson" offset="1"/> + </linearGradient> + --> + + <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1"> + <stop style="stop-color:white" offset="0"/> + <stop style="stop-color:lightgreen" offset="1"/> + </linearGradient> + + <filter id="shadowFilter" filterUnits="objectBoundingBox"> + <!-- Takes the alpha channel (black outline of the text), blurs it and saves as 'blur' --> + <feGaussianBlur in="SourceAlpha" stdDeviation="2 2" result="blur"/> + <!-- Takes saved 'blur' and offsets it by 4 pixels, saves as 'offsetBlur' --> + <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/> + <!-- Merges SourceGraphic (original image) and 'offsetBlur', putting the + former 'over' the latter, and using the merged result as the finished + image --> + <feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/> + </filter> + + </defs> + + <g filter="url(#shadowFilter)" fill="url(#gradient)"> + <text x="51%" y="75%" style="font-size:32pt; font-family:Verdana ; text-anchor: middle" > + <for:project-name /> + </text> + </g> +</svg> + + diff --git a/website/src/documentation/skinconf.xml b/website/src/documentation/skinconf.xml new file mode 100644 index 00000000..9768597b --- /dev/null +++ b/website/src/documentation/skinconf.xml @@ -0,0 +1,133 @@ +<?xml version="1.0"?> + +<!-- +Skin configuration file. This file contains details of your project, which will +be used to configure the chosen Forrest skin. +--> + +<!DOCTYPE skinconfig [ + + <!ENTITY % links.att 'name CDATA #REQUIRED'> + <!ENTITY % link.att 'name CDATA #REQUIRED href CDATA #REQUIRED'> + <!ELEMENT skinconfig (disable-search?, disable-print-link?, disable-pdf-link?, + disable-xml-link?, disable-compliance-links?, obfuscate-mail-links?, searchsite-domain?, searchsite-name?, + project-name, project-description?, project-url, project-logo, group-name?, group-description?, group-url?, group-logo?, + host-url?, host-logo?, year?, vendor?, trail?, toc?, credits?)*> + <!ELEMENT credits (credit*)> + <!ELEMENT credit (name, url, image?, width?, height?)> + <!-- id uniquely identifies the tool, and role indicates its function --> + <!ATTLIST credit id CDATA #IMPLIED + role CDATA #IMPLIED> + <!ELEMENT disable-search (#PCDATA)> + <!ELEMENT disable-print-link (#PCDATA)> + <!ELEMENT disable-pdf-link (#PCDATA)> + <!ELEMENT disable-xml-link (#PCDATA)> + <!ELEMENT disable-compliance-links (#PCDATA)> + <!ELEMENT obfuscate-mail-links (#PCDATA)> + <!ELEMENT searchsite-domain (#PCDATA)> + <!ELEMENT searchsite-name (#PCDATA)> + <!ELEMENT project-name (#PCDATA)> + <!ELEMENT project-description (#PCDATA)> + <!ELEMENT project-url (#PCDATA)> + <!ELEMENT project-logo (#PCDATA)> + <!ELEMENT group-name (#PCDATA)> + <!ELEMENT group-description (#PCDATA)> + <!ELEMENT group-url (#PCDATA)> + <!ELEMENT group-logo (#PCDATA)> + <!ELEMENT host-url (#PCDATA)> + <!ELEMENT host-logo (#PCDATA)> + <!ELEMENT year (#PCDATA)> + <!ELEMENT vendor (#PCDATA)> + <!ELEMENT trail (link1, link2, link3)> + <!ELEMENT link1 EMPTY> + <!-- Seems we can't use param entity refs until this is DTDified --> + <!ATTLIST link1 name CDATA #REQUIRED href CDATA #IMPLIED> + <!ELEMENT link2 EMPTY> + <!ATTLIST link2 name CDATA #REQUIRED href CDATA #IMPLIED> + <!ELEMENT link3 EMPTY> + <!ATTLIST link3 name CDATA #REQUIRED href CDATA #IMPLIED> + <!ELEMENT name (#PCDATA)> + <!ELEMENT url (#PCDATA)> + <!ELEMENT image (#PCDATA)> + <!ELEMENT width (#PCDATA)> + <!ELEMENT height (#PCDATA)> + <!ELEMENT toc EMPTY> + <!ATTLIST toc level CDATA #IMPLIED> + ]> + +<skinconfig> + <!-- Do we want to disable the Google search box? --> + <disable-search>true</disable-search> + <!-- Do we want to disable the print link? If enabled, invalid HTML 4.0.1 --> + <disable-print-link>true</disable-print-link> + <!-- Do we want to disable the PDF link? --> + <disable-pdf-link>true</disable-pdf-link> + <!-- Do we want to disable the xml source link? --> + <disable-xml-link>true</disable-xml-link> + <!-- Do we want to disable w3c compliance links? --> + <disable-compliance-links>false</disable-compliance-links> + <!-- Whether to render mailto: links unrecognisable by spam harvesters --> + <obfuscate-mail-links>true</obfuscate-mail-links> + + <searchsite-domain>google.com</searchsite-domain> + <searchsite-name>Google</searchsite-name> + + <!-- mandatory project logo + skin: forrest-site renders it at the top --> + <project-name>IKVM.NET</project-name> + <project-description>Java on .NET</project-description> + <project-url>http://www.ikvm.net/</project-url> + <project-logo>images/project.gif</project-logo> + <!-- Alternative static image: + <project-logo>images/project-logo.gif</project-logo> --> + + <!-- optional group logo + skin: forrest-site renders it at the top-left corner --> + <!-- + <group-name>MyGroup</group-name> + <group-description>MyGroup Description</group-description> + <group-url>http://mygroup.org</group-url> + <group-logo>images/group.png</group-logo> + --> + <!-- Alternative static image: + <group-logo>images/group-logo.gif</group-logo> --> + + <!-- optional host logo (e.g. sourceforge logo) + skin: forrest-site renders it at the bottom-left corner --> + <host-url></host-url> + <host-logo></host-logo> + + <!-- The following are used to construct a copyright statement --> + <year>2004</year> + <vendor>Jeroen Frijters </vendor> + + <!-- Some skins use this to form a 'breadcrumb trail' of links. If you don't + want these, set the attributes to blank. The DTD purposefully requires them. + --> + <trail> + <link1 name="" href=""/> + <link2 name="" href=""/> + <link3 name="" href=""/> + </trail> + + <!-- Configure how many "section" levels need to be included in the + generated Table of Contents (TOC). By default, if no toc element is provided + below, then 2 levels are included. Level 0 does not generate any TOC at all. + --> + <toc level="1"/> + + <!-- Credits are typically rendered as a set of small clickable images in the + page footer --> + <credits> + <credit> + <name>Built with Apache Forrest</name> + <url>http://xml.apache.org/forrest/</url> + <image>images/built-with-forrest-button.png</image> + <width>88</width> + <height>31</height> + </credit> + <!-- A credit with @role='pdf' will have its name and url displayed in the + PDF page's footer. --> + </credits> + +</skinconfig> diff --git a/website/status.xml b/website/status.xml new file mode 100644 index 00000000..71b0ff77 --- /dev/null +++ b/website/status.xml @@ -0,0 +1,59 @@ +<?xml version="1.0"?> +<status> + + <developers> + <person name="Joe Bloggs" email="joe@joescompany.org" id="JB" /> + <!-- Add more people here --> + </developers> + + <changes> + <!-- Add new releases here --> + <release version="0.1" date="unreleased"> + <!-- Some action types have associated images. By default, images are + defined for 'add', 'fix', 'remove', 'update' and 'hack'. If you add + src/documentation/resources/images/<foo>.jpg images, these will + automatically be used for entries of type <foo>. --> + + <action dev="JB" type="add" context="admin"> + Initial Import + </action> + <!-- Sample action: + <action dev="JB" type="fix" due-to="Joe Contributor" + due-to-email="joec@apache.org" fixes-bug="123"> + Fixed a bug in the Foo class. + </action> + --> + </release> + </changes> + + <todo> + <actions priority="high"> + <action context="docs" dev="JB"> + Customize this template project with your project's details. This + TODO list is generated from 'status.xml'. + </action> + <action context="docs" dev="JB"> + Add lots of content. XML content goes in + <code>src/documentation/content/xdocs</code>, or wherever the + <code>${project.xdocs-dir}</code> property (set in + <code>forrest.properties</code>) points. + </action> + <action context="feedback" dev="JB"> + Mail <link + href="mailto:forrest-dev@xml.apache.org">forrest-dev@xml.apache.org</link> + with feedback. + </action> + </actions> + <!-- Add todo items. @context is an arbitrary string. Eg: + <actions priority="high"> + <action context="code" dev="SN"> + </action> + </actions> + <actions priority="medium"> + <action context="docs" dev="open"> + </action> + </actions> + --> + </todo> + +</status> |