title: How does Java link lib/rt.jar to your app at runtime?
body: <p>The Java standard/system libraries (<code>java.*</code>, <code>javax.*</code>, etc.) are stored in <code>lib/rt.jar</code> inside each JRE distribution.</p>
  
  <p>Say I have an application that I have compiled and <code>jar</code>red into <code>myapp.jar</code>. This JAR only contains my app's class files, and merely <em>references</em> system classes like <code>System</code>, <code>File</code>, <code>Runtime</code>, <code>Thread</code>, <code>String</code>, <code>Boolean</code>, etc.</p>
  
  <p>So when I run my app, say via <code>java -jar myapp.jar</code>, the JVM is obviously doing so last minute linking (or something) where it is executing the bytecode of my class files (inside <code>myapp.jar</code>) and then "jumping" into <code>lib/rt.jar</code> to run bytecode located there. I would imagine the process is the same if <code>myapp.jar</code> depends on other JARs provided on the runtime <code>classpath</code>.</p>
  
  <p>My question is: what is this "linking" process called, and how does it essentially work?</p>