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();
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务