diff options
Diffstat (limited to 'website/build/site/devguide/concepts.html')
-rw-r--r-- | website/build/site/devguide/concepts.html | 291 |
1 files changed, 291 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> |