美文网首页
java运行原理、静态代理和动态代理区分

java运行原理、静态代理和动态代理区分

作者: 一乐乐 | 来源:发表于2022-03-10 11:09 被阅读0次

    1、java的编译和运行原理:

    ■ 编译:将源文件 .java 文件,通过编译器(javac 命令) 编译成 字节码文件 .class 文件。

    ■ 运行,通过类加载器(以二进制流形式)把字节码加载进JVM,通过java解析器(java 命令) 进行运行程序。

    先将java源文件进行编译生成字节码文件,然后通过类加载器ClassLoader (以二进制流形式) 加载进虚拟机,然后通过java解析器或即使编译器进行运行。

    图片.png


    2、静态代理和动态代理:

    ■ 静态代理:(经历了编译和运行)

    在程序运行前就已经存在代理类的字节码文件(因为通过了编译阶段),代理对象和真实对象的关系在运行前就确定了(因为通过了编译阶段)。

    ■ 动态代理:(只经历了运行,咱通过某种手段得到的字节码【遵循字节码格式和结构】)

    动态代理类是在程序运行期间由jvm通过反射等机制动态生成的,所以不存在代理类的字节码文件(因为没有经历编译阶段),代理对象和真实对象的关系是在程序运行期间才确定的

    ● 如何动态创建一份字节码?(实现了在代码中动态创建一个类的能力)

    通过java的编译和运行原理,可以看到:在运行时期,是jvm通过字节码的二进制信息来加载类的

    所以,当我们在运行时期,通过java编译系统组织.class文件的格式和结构,生成相应的二进制数据,然后再把这个二进制数据加载转换成对应的类


    写在后面的话

           如果你觉得一乐的文章给您带来了一些收获,可以给个三连❤️ ,一乐会一如既往地更新有价值的博客。如果文章存在错误,也欢迎大家指出。还有,如果大家有什么好的学习技巧、学习感悟,也非常欢迎大家在评论区一起交流~

    最后感谢大家的支持,谢谢~

    相关文章

      网友评论

          本文标题:java运行原理、静态代理和动态代理区分

          本文链接:https://www.haomeiwen.com/subject/rhvqrrtx.html