title: Difference between AppClassloader and SystemClassloader
body: <p>I am so confused about these two class loaders. When talking about the hierarchy of Java class loaders, usually the bootstrap classloader and ext class loader and the third one (system classloader or app classloader) are mentioned. </p>
  
  <p>To be more accurate, I checked the source code of JDK. In class <code>Launcher</code>, there is the code:</p>
  
  <pre><code>loader = AppClassLoader.getAppClassLoader(extcl);
  </code></pre>
  
  <p>In class <code>ClassLoader</code>, the method: </p>
  
  <pre><code>getSystemClassloader() 
  </code></pre>
  
  <p>Also says the system classloader is used to start the application.</p>
  
  <p>So which is the third one in the hierarchy, or are the two classloaders the same?</p>