01 JVM
java语言跨平台
c语言
c语言针对不同的操作系统要将头文件编译成不同的机器码。
java
java先将文件编译成class文件,然后交给jvm解释为机器码,jvm屏蔽了操作系统的差异性。
类加载过程
类加载机制:双亲委派机制
写一个自定义类加载器
public class SelfClassLoader extends ClassLoader {
private String path;
private String classLoaderName;
public SelfClassLoader(String path, String classLoaderName) {
this.path = path;
this.classLoaderName = classLoaderName;
}
public SelfClassLoader() {
}
@Override
public Class findClass(String name) {
byte[] b = loadClassData(name);
return defineClass(name, b, 0, b.length);
}
private byte[] loadClassData(String name) {
name = path+name.replace(".","\\")+".class";
InputStream in = null;
ByteArrayOutputStream out = null;
try {
in = new FileInputStream(new File(name)) ;
out = new ByteArrayOutputStream();
int i=0;
while ((i=in.read())!=-1){
out.write(i);
}
}catch (Exception e){
e.printStackTrace();
}finally {
//TODO
}
return out.toByteArray();
}
}
