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

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Recently uploaded (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

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