Open EugeneChung opened 4 years ago
https://www.baeldung.com/java-classloaders
모든 class loader 구현은 반드시 java.lang.ClassLoader abstract class를 상속해야 한다.
[주의] Class Loader 관계는 OOP 상속 아님! 클래스 로딩 모델인 delegation 을 위해서 class loader 간의 parent/child 관계를 지정해주는 것.
구현 편의상 보통 java.net.URLClassLoader를 상속한다.
[Example] Hadoop RunJar
Let’s focus on two keywords; on-demand loading, delegation
export HADOOP_CLASSPATH=hadoop-xxxx.jar;.....;hive-....jar;... java -classpath hadoop-common.jar;..... org.apache.hadoop.util.RunJar org.apache.hive.service.server.HiveServer2
https://github.com/c9n/hadoop/blob/a315107901aebc8d0c2b9f530d191673d27922a2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java#L135-L225
cache https://blog.hargrave.io/2007/09/classforname-caches-defined-class-in.html?m=1
https://www.baeldung.com/java-classloaders
JVM Default Class Loaders
User-Defined Class Loaders
모든 class loader 구현은 반드시 java.lang.ClassLoader abstract class를 상속해야 한다.
[주의] Class Loader 관계는 OOP 상속 아님! 클래스 로딩 모델인 delegation 을 위해서 class loader 간의 parent/child 관계를 지정해주는 것.
구현 편의상 보통 java.net.URLClassLoader를 상속한다.
[Example] Hadoop RunJar
Let’s focus on two keywords; on-demand loading, delegation
On-demand Loading & Delegation
https://github.com/c9n/hadoop/blob/a315107901aebc8d0c2b9f530d191673d27922a2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java#L135-L225
More on On-demand Loading
More on Delegation
More Class Loader Hierarchy Examples
ClassLoader.loadClass Flow
cache https://blog.hargrave.io/2007/09/classforname-caches-defined-class-in.html?m=1
IBM J9