SlideShare a Scribd company logo
1 of 52
Copyright © 2004 Samsung SDS Co.,Ltd. All rights reserved  |  Confidential ClassLoader  개요 강 명 철 2006.11 Core Java
Copyright © 2004 Samsung SDS Co.,Ltd. All rights reserved  |  Confidential 목차 ,[object Object],[object Object],[object Object]
[object Object],1. JVM Architecture
[object Object],[object Object],[object Object],[object Object],2. How Classes are Loaded ?
3. Class Class in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4. Class Loading ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
5. Class Loaders in JVM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6. Class Loaders Rules ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6. Visibility  ,[object Object]
6. Visibility  실습 ,[object Object],[object Object],public class Dummy { public static int staticCount = 0; public Dummy(){ staticCount++; System.out.println("Instance #" + staticCount + " constructed."); } } public class StaticTest { public static void main(String[] args) { new Dummy(); new Dummy(); new Dummy(); new Dummy(); new Dummy(); } } Instance #1 constructed. Instance #2 constructed. Instance #3 constructed. Instance #4 constructed. Instance #5 constructed.
6. Visibility  실습 ,[object Object],[object Object],public class Dummy { public static int staticCount = 0; public Dummy(){ staticCount++; System.out.println("Instance #" + staticCount + " constructed."); } } public class StaticTestClassLoader { public static void main(String[] args) throws Exception { URL[] url = {new File("../target/bin").toURL()}; URLClassLoader cl1 = new URLClassLoader(url); URLClassLoader cl2 = new URLClassLoader(url); URLClassLoader cl3 = new URLClassLoader(url); cl1.loadClass("Dummy").newInstance(); cl2.loadClass("Dummy").newInstance(); cl3.loadClass("Dummy").newInstance(); } } Instance #1 constructed. Instance #1 constructed. Instance #1 constructed.
7. Delegation Model ,[object Object],class NetworkClassLoader extends ClassLoader { String host; int port; public Class findClass(String name) { byte[] b = loadClassData(name); return defineClass(name, b, 0, b.length); } private byte[] loadClassData(String name) { // load the class data from the connection  . . . } }
7. Delegation Model ,[object Object]
7. Delegation Model  실습 ,[object Object],[object Object],public class TestClassLoader extends ClassLoader { protected Hashtable m_classes  = new Hashtable(); protected boolean  m_cacle  = false; protected byte[] loadClassBytes(String name)  throws  ClassNotFoundException{ byte[] result = null; try{ FileInputStream in =  new FileInputStream("../Target/bin/" + name.replace('.', '/') + ".class"); ByteArrayOutputStream data =  new ByteArrayOutputStream(); int ch; while((ch = in.read()) != -1) data.write(ch); result = data.toByteArray(); } catch (Exception e){ throw new ClassNotFoundException(name); } return result; } protected synchronized Class loadClass (String name, boolean resolve)  throws ClassNotFoundException{ System.out.println(" 요청된  Class : " + name); Class result = (Class)m_classes.get(name); try{ if(result==null) return super.findSystemClass(name); else return result; } catch(Exception e) {} System.out.println("TestClassLoader Loading Class : "  + name); byte bytes[] = loadClassBytes(name); result = defineClass(name, bytes, 0, bytes.length); if(result == null)  throw new ClassNotFoundException(name); if(resolve) resolveClass(result); m_classes.put(name, result); return result; } }
7. Delegation Model  실습 ,[object Object],[object Object],public class TestClassLoader extends ClassLoader { protected byte[] loadClassBytes(String name)  throws  ClassNotFoundException{ byte[] result = null; try{ FileInputStream in =  new FileInputStream("../Target/bin/" + name.replace('.', '/') + ".class"); ByteArrayOutputStream data =  new ByteArrayOutputStream(); int ch; while((ch = in.read()) != -1) data.write(ch); result = data.toByteArray(); } catch (Exception e){ throw new ClassNotFoundException(name); } return result; } protected Class findClass(String name)  throws ClassNotFoundException{ System.out.println(" 요청된  Class : " + name); System.out.println("TestClassLoader Loading Class : "  + name); byte bytes[] = loadClassBytes(name); return defineClass(name, bytes, 0, bytes.length); } }
//java.lanag.ClassLoader  일부 protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { // First, check if the class has already been loaded Class c = findLoadedClass(name); if (c == null) {   try { if (parent != null) {   c = parent.loadClass(name, false); } else {   c = findBootstrapClass0(name); }   } catch (ClassNotFoundException e) {   // If still not found, then invoke findClass in order   // to find the class.   c = findClass(name);   } } if (resolve) {   resolveClass(c); } return c; } 7. Delegation Model  실습 ,[object Object],[object Object]
8. Standard Class Loader ,[object Object],[object Object]
8. Standard Class Loader ,[object Object],[object Object]
 
public class ClassLoaderTree { public static void printClassLoaderTree(ClassLoader l) { if(l== null){ System.out.println(&quot;BootStrap ClassLoader&quot;); return; } ClassLoader p = l.getParent(); if ( p!= null) { printClassLoaderTree(p); } else { System.out.println(&quot;BootStrap ClassLoader&quot;); } String u = &quot;&quot;; if ( l instanceof URLClassLoader) { u = getURLs(  ((URLClassLoader)l).getURLs()); } // end of if () System.out.println(&quot;|&quot;+l+&quot; &quot; +u); }  8. Standard Class Loader ,[object Object],[object Object],public static String getURLs(URL[] urls) { if ( urls == null) { return &quot;{}&quot;; } // end of if () StringBuffer b = new StringBuffer(&quot;{&quot;); for ( int i = 0;i<urls.length;i++) { b.append( urls[i] ).append(&quot;:&quot;); } // end of for () b.append(&quot;}&quot;); return b.toString(); } public static void main(String[] args) { ClassLoaderTree.printClassLoaderTree (ClassLoaderTree.class.getClassLoader()); } }
[object Object],[object Object],[object Object],8. Standard Class Loader ,[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Summary ,[object Object],[object Object],ClassLoader-A Class-X ClassLoader-B ClassLoader-C Class-Y Class-Z Class-Z
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Database Remote Server File system ClassLoader-A Class-X ClassLoader-B ClassLoader-C Class-Y Class-Z Class-R Class-D Summary ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],Bootstrap   ClassLoader Extensions   ClassLoader JVM Application Shared Lib System ClassLoader ,[object Object],[object Object],[object Object],[object Object],[object Object],JAR Summary ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],JVM Class Loader A MyClass Class Loader B Class Loader C System ClassLoader Bootstrap ClassLoader Extension ClassLoader Summary ,[object Object],[object Object]
Copyright © 2004 Samsung SDS Co.,Ltd. All rights reserved  |  Confidential 목차 ,[object Object],[object Object],[object Object]
1. Java  내부의  ClassLoader ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
public static void main(String[] args) throws Exception { URL[] urlArray = { //new java.io.File(&quot;subdir.jar&quot;).toURL() // For loading-from-subdir.jar, uncomment the // above line and comment out the below line new java.io.File(&quot;subdir/&quot;).toURL() // For loading-from-subdirectory-subdir, // comment out the first line and uncomment // out this one }; URLClassLoader ucl = new URLClassLoader(urlArray); Object obj =  ucl.loadClass(&quot;Hello&quot;).newInstance(); // Hello should print &quot;Hello&quot; to the System.out stream } 1.URLClassLoader  사용 예 ,[object Object],[object Object]
public static void main(String[] args) throws Exception { URL[] urlArray = { new URL(&quot;http&quot;, &quot;www.javageeks.com&quot;, &quot;/SSJ/examples/&quot;) }; URLClassLoader ucl = new URLClassLoader(urlArray); Object obj =  ucl.loadClass(&quot;com.javageeks.util.Hello&quot;).newInstance(); // Hello should print &quot;Hello from JavaGeeks.com!&quot; to the // System.out stream } 1.URLClassLoader  사용 예 ,[object Object],[object Object]
public static void main(String[] args) throws Exception { URL[] urlArray = { new URL(&quot;ftp&quot;, &quot;reader:password@www.javageeks.com&quot;,  &quot;/examples&quot;) }; URLClassLoader ucl = new URLClassLoader(urlArray); Object obj =  ucl.loadClass(&quot;Hello&quot;).newInstance(); } 1.URLClassLoader  사용 예 ,[object Object],[object Object]
2. Why write a ClassLoader ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3. Class Loader  확장 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],protected Class findClass(String name)  throws ClassNotFoundException { throw new ClassNotFoundException(name); } protected URL findResource(String name) { return null; } protected String findLibrary(String libname) { return null; }
4. Class Loader  실습 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],java -classpath ./bin -Dloader.dir=./bin/ FileSystemClassLoader
4. Class Loader  실습 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],java -classpath ./bin CCLRun Foo aaa bbb
4. Class Loader  실습 ,[object Object],[object Object],java -classpath ./bin athena.loader.PointClient
4. Class Loader  실습 ,[object Object],[object Object],java -classpath ./bin DynamicLoader Echo aaa aaa aaa java -Djava.ext.dirs=./jar -classpath ./bin DynamicLoader Echo aaa aaa aaa java -Djava.ext.dirs=./jar -classpath ./bin FixedDynamicLoader Echo aaa aaa aaa
Copyright © 2004 Samsung SDS Co.,Ltd. All rights reserved  |  Confidential 목차 ,[object Object],[object Object],[object Object]
1. Class Not Found ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],EJB JAR STRUTS.JAR WAR B AppBForm WAR A AppAForm
[object Object],[object Object],[object Object],[object Object],2. Class Cast ,[object Object],EJB JAR public void utilityMethod (Object o) { ((Apple)o).doSomething(); } WAR B Apple WAR A Apple Apple CLASSCASTEXCEPTION
[object Object],[object Object],[object Object],[object Object],C:gt;java -Xbootclasspath:C:ebug;j2sdk1.4.2_03reibt.jar  … [all other boot.class.path jars] app.java 3. Getting Diagnostic Info. ,[object Object]
import java.io.File; import java.net.MalformedURLException; import java.net.URLClassLoader; import java.net.URL; import demo.Rabbit; /** * Instantiates and displays a Rabbit. */ public class TopHat { public static void main (String args[]) { try { // Create a ClassLoader that knows where to find demo. Rabbit URL rabbitURL = new File(&quot;rabbit.jar&quot;).toURL(); URL[] urls = new URL[]{rabbitURL}; URLClassLoader rabbitClassLoader = new URLClassLoader(urls,Thread.currentThread().getContextClassLoader()); // Set the ContextClassLoader for the current Thread so that it can find Rabbit.class Thread.currentThread().setContextClassLoader(rabbitClassLoader); // Make a Rabbit appear. System.out.println(new Rabbit());  } catch (MalformedURLException malformedURLException) {   malformedURLException.printStackTrace();   }  } } ,[object Object],3.  실습 ,[object Object]
package demo; public class Rabbit { } Rabbit.java rabbit.jar C:gt; jar tf rabbit.jar demo/ demo.Rabbit.class   C:gt; javac –classpath rabbit.jar TopHat.java C:gt; java –classpath ./bin TopHat Command Line Compilation ,[object Object],3.  실습 ,[object Object]
[object Object],[object Object],[object Object],[object Object],Actual Behavior C:gt;java TopHat Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: demo/Rabbit at TopHat.main(TopHat.java:23) Desired Behavior ,[object Object],3.  실습 ,[object Object]
// Create a ClassLoader that knows where to find demo. Rabbit URL rabbitURL = new File(&quot;rabbit.jar&quot;).toURL(); URL[] urls = new URL[]{rabbitURL}; URLClassLoader rabbitClassLoader = new URLClassLoader(urls,Thread.currentThread().getContextClassLoader()); System.out.println(&quot;---> ClassLoader for TopHat: &quot; + TopHat.class.getClassLoader());  System.out.println(&quot;---> Before setting a custom ContextClassLoader, ContextClassLoader is: “); System.out.println( Thread.currentThread().getContextClassLoader()); // Set the ContextClassLoader for the current Thread so that it can find // Rabbit Thread.currentThread().setContextClassLoader(rabbitClassLoader); System.out.println(&quot;---> After setting a custom ContextClassLoader ContextClassLoader is: &quot;); System.out.println( Thread.currentThread().getContextClassLoader());  // Make a Rabbit appear. System.out.println(new Rabbit());   ,[object Object],3.  실습 ,[object Object]
C:gt;java TopHat ---> ClassLoader for TopHat: sun.misc.Launcher$AppClassLoader@e80a59 ---> Before setting a custom ContextClassLoader, ContextClassLoader is: sun.misc.Launcher$AppClassLoader@e80a59 ---> After setting a custom ContextClassLoader, ContextClassLoader is: [email_address] Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: demo/Rabbit at TopHat.main(TopHat.java:28) ,[object Object],3.  실습 ,[object Object]
protected Class findClass(final String name) throws ClassNotFoundException { try { return (Class)   AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws ClassNotFoundException {   String path = name.replace('.', '/').concat(&quot;.class&quot;);   Resource res = ucp.getResource(path, false);   if (res != null) {   try {   return defineClass(name, res);   } catch (IOException e) {   throw new ClassNotFoundException(name, e);   }   } else { System.out.println(“--   Looked in:”);   URL[] urls = getURLs();   for (int i = 0;i<urls.length;i++) {   System.out.println(urls[i]);     }   throw new ClassNotFoundException(name);   }   } }, acc); } catch (java.security.PrivilegedActionException pae) {   throw (ClassNotFoundException) pae.getException(); } } ,[object Object],3.  실습 ,[object Object]
protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { Class c = findLoadedClass(name); if (c == null) {   try {   if (name.equals(&quot;demo.Rabbit&quot;))    System.out.println(&quot;---> &quot; + this + &quot;is asking parent (&quot; + parent + &quot;) to try to load &quot; + name + &quot;.&quot;);   if (parent != null) {   c = parent.loadClass(name, false); } else {   c = findBootstrapClass0(name); }   } catch (ClassNotFoundException e) {   // If still not found, then call findClass in order   // to find the class.   if (name.equals(&quot;demo.Rabbit&quot;))    System.out.println(&quot;---> &quot; + name + &quot; was not found by parent (&quot; + parent + &quot;), so &quot; + this +  &quot; will try.&quot;);   c = findClass(name);   } } if (resolve) {   resolveClass(c); } return c; }  void addClass(Class c) { if (c.toString().equals(&quot;class demo.Rabbit&quot;))    System.out.println(&quot;---> &quot; + this + &quot;loaded &quot; + c); classes.addElement(c); } private synchronized Class loadClassInternal(String name)throws ClassNotFoundException { if (name.equals(&quot;demo.Rabbit&quot;)) { System.out.println(&quot;JVM is requesting that &quot; +  this +&quot; load &quot;+ name);  }   return loadClass(name); } ,[object Object],3.  실습 ,[object Object]
---> JVM is requesting that sun.misc.Launcher$AppClassLoader@e80a59 load demo.Rabbit --->  sun.misc.Launcher$AppClassLoader@e80a59  is asking parent (sun.misc.Launcher$ ExtClassLoader@1ff5ea7) to try to load demo.Rabbit. --->  sun.misc.Launcher$ExtClassLoader@1ff5ea7  is asking parent (null) to try to load demo.Rabbit. ---> demo.Rabbit was not found by parent (null), so sun.misc.Launcher$ExtClassLoader@1ff5ea7 will try. --> Looked in: file:/C:/j2sdk1.4.2_03/jre/lib/ext/dnsns.jar file:/C:/j2sdk1.4.2_03/jre/lib/ext/ldapsec.jar file:/C:/j2sdk1.4.2_03/jre/lib/ext/localedata.jar file:/C:/j2sdk1.4.2_03/jre/lib/ext/sunjce_provider.jar ---> demo.Rabbit was not found by parent (sun.misc.Launcher$ExtClassLoader@1ff5ea7), so sun.misc.Launcher$AppClassLoader@e80a59 will try. --> Looked in: file:/C:/ Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: demo/Rabbit at TopHat.main(TopHat.java:28) ,[object Object],3.  실습 ,[object Object],java -Xbootclasspath/p:D:lassloadertilin -classpath ./bin TopHat
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],3.  실습 ,[object Object]
ClassLoader loader = Thread.currentThread().getContextClassLoader(); loader.loadClass(“demo.Rabbit”).newInstance(); ClassLoader loader = Thread.currentThread().getContextClassLoader(); Class.forName(“demo.Rabbit”,true, loader).newInstance(); –  or – ,[object Object],3.  실습 ,[object Object]
--->  [email_address]  is asking parent (sun.misc.Launcher$AppClassL oader@e80a59) to try to load demo.Rabbit. --->  sun.misc.Launcher$AppClassLoader@e80a59  is asking parent (sun.misc.Launcher$ ExtClassLoader@1ff5ea7) to try to load demo.Rabbit. --->  sun.misc.Launcher$ExtClassLoader@1ff5ea7  is asking parent (null) to try to  load demo.Rabbit. ---> demo.Rabbit was not found by parent (null), so sun.misc.Launcher$ExtClassLo ader@1ff5ea7 will try. --> Looked in: file:/C:/j2sdk1.4.2_03/jre/lib/ext/dnsns.jar file:/C:/j2sdk1.4.2_03/jre/lib/ext/ldapsec.jar file:/C:/j2sdk1.4.2_03/jre/lib/ext/localedata.jar file:/C:/j2sdk1.4.2_03/jre/lib/ext/sunjce_provider.jar ---> demo.Rabbit was not found by parent (sun.misc.Launcher$ExtClassLoader@1ff5e a7), so sun.misc.Launcher$AppClassLoader@e80a59 will try. --> Looked in: file:/C:/ ---> demo.Rabbit was not found by parent (sun.misc.Launcher$AppClassLoader@e80a5 9), so java.net.URLClassLoader@defa1a will try. --->  [email_address]  loaded class demo.Rabbit [email_address] ,[object Object],3.  실습 ,[object Object]
감사합니다 . Copyright © 2004 Samsung SDS Co.,Ltd. All rights reserved  |  Confidential 대표전화 : +82-2-6484-0930 E-mail: chris_lee@samsung.com http://www.sds.samsung.co.kr

More Related Content

What's hot

Java programming basics
Java programming basicsJava programming basics
Java programming basicsHamid Ghorbani
 
Java Interview Questions Answers Guide
Java Interview Questions Answers GuideJava Interview Questions Answers Guide
Java Interview Questions Answers GuideDaisyWatson5
 
Intro to Testing in Zope, Plone
Intro to Testing in Zope, PloneIntro to Testing in Zope, Plone
Intro to Testing in Zope, PloneQuintagroup
 
Bytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASMBytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASMashleypuls
 
The definitive guide to java agents
The definitive guide to java agentsThe definitive guide to java agents
The definitive guide to java agentsRafael Winterhalter
 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modulesRafael Winterhalter
 
More topics on Java
More topics on JavaMore topics on Java
More topics on JavaAhmed Misbah
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotationjavatwo2011
 
Threads v3
Threads v3Threads v3
Threads v3Sunil OS
 
Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Anton Arhipov
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemRafael Winterhalter
 
Code generation for alternative languages
Code generation for alternative languagesCode generation for alternative languages
Code generation for alternative languagesRafael Winterhalter
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
 
Advance Java Programs skeleton
Advance Java Programs skeletonAdvance Java Programs skeleton
Advance Java Programs skeletonIram Ramrajkar
 
Java Serialization Deep Dive
Java Serialization Deep DiveJava Serialization Deep Dive
Java Serialization Deep DiveMartijn Dashorst
 

What's hot (20)

Java programming basics
Java programming basicsJava programming basics
Java programming basics
 
Java Interview Questions Answers Guide
Java Interview Questions Answers GuideJava Interview Questions Answers Guide
Java Interview Questions Answers Guide
 
Java 10, Java 11 and beyond
Java 10, Java 11 and beyondJava 10, Java 11 and beyond
Java 10, Java 11 and beyond
 
Intro to Testing in Zope, Plone
Intro to Testing in Zope, PloneIntro to Testing in Zope, Plone
Intro to Testing in Zope, Plone
 
Bytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASMBytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASM
 
Basic java for Android Developer
Basic java for Android DeveloperBasic java for Android Developer
Basic java for Android Developer
 
The definitive guide to java agents
The definitive guide to java agentsThe definitive guide to java agents
The definitive guide to java agents
 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modules
 
More topics on Java
More topics on JavaMore topics on Java
More topics on Java
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Java
JavaJava
Java
 
Threads v3
Threads v3Threads v3
Threads v3
 
Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystem
 
Byte code field report
Byte code field reportByte code field report
Byte code field report
 
Code generation for alternative languages
Code generation for alternative languagesCode generation for alternative languages
Code generation for alternative languages
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVM
 
Advance Java Programs skeleton
Advance Java Programs skeletonAdvance Java Programs skeleton
Advance Java Programs skeleton
 
Java Serialization Deep Dive
Java Serialization Deep DiveJava Serialization Deep Dive
Java Serialization Deep Dive
 
Java Programming - 06 java file io
Java Programming - 06 java file ioJava Programming - 06 java file io
Java Programming - 06 java file io
 

Similar to Class loader basic

Introduction of Object Oriented Programming Language using Java. .pptx
Introduction of Object Oriented Programming Language using Java. .pptxIntroduction of Object Oriented Programming Language using Java. .pptx
Introduction of Object Oriented Programming Language using Java. .pptxPoonam60376
 
Advanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAdvanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAVINASH KUMAR
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaCPD INDIA
 
Object Oriented Programming - Java
Object Oriented Programming -  JavaObject Oriented Programming -  Java
Object Oriented Programming - JavaDaniel Ilunga
 
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUCDevelopment of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUCInfinIT - Innovationsnetværket for it
 
Learning Java 1 – Introduction
Learning Java 1 – IntroductionLearning Java 1 – Introduction
Learning Java 1 – Introductioncaswenson
 

Similar to Class loader basic (20)

Introduction of Object Oriented Programming Language using Java. .pptx
Introduction of Object Oriented Programming Language using Java. .pptxIntroduction of Object Oriented Programming Language using Java. .pptx
Introduction of Object Oriented Programming Language using Java. .pptx
 
Adv kvr -satya
Adv  kvr -satyaAdv  kvr -satya
Adv kvr -satya
 
Inheritance
InheritanceInheritance
Inheritance
 
Advanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAdvanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sir
 
Sonu wiziq
Sonu wiziqSonu wiziq
Sonu wiziq
 
Class
ClassClass
Class
 
Class
ClassClass
Class
 
Class
ClassClass
Class
 
Diving into Java Class Loader
Diving into Java Class LoaderDiving into Java Class Loader
Diving into Java Class Loader
 
Lecture 6.pptx
Lecture 6.pptxLecture 6.pptx
Lecture 6.pptx
 
inheritance.pptx
inheritance.pptxinheritance.pptx
inheritance.pptx
 
Scala presentationjune112011
Scala presentationjune112011Scala presentationjune112011
Scala presentationjune112011
 
Packages and interface
Packages and interfacePackages and interface
Packages and interface
 
Java Reflection
Java ReflectionJava Reflection
Java Reflection
 
Java Class Loading
Java Class LoadingJava Class Loading
Java Class Loading
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in java
 
Object Oriented Programming - Java
Object Oriented Programming -  JavaObject Oriented Programming -  Java
Object Oriented Programming - Java
 
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUCDevelopment of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
Development of Java tools using SWT and WALA af Hans Søndergaard, ViaUC
 
Learning Java 1 – Introduction
Learning Java 1 – IntroductionLearning Java 1 – Introduction
Learning Java 1 – Introduction
 
Object oriented concepts
Object oriented conceptsObject oriented concepts
Object oriented concepts
 

Recently uploaded

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

Class loader basic

  • 1. Copyright © 2004 Samsung SDS Co.,Ltd. All rights reserved | Confidential ClassLoader 개요 강 명 철 2006.11 Core Java
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.  
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52. 감사합니다 . Copyright © 2004 Samsung SDS Co.,Ltd. All rights reserved | Confidential 대표전화 : +82-2-6484-0930 E-mail: chris_lee@samsung.com http://www.sds.samsung.co.kr