美文网首页
12.Dubbo的动态编译原理

12.Dubbo的动态编译原理

作者: 山海树 | 来源:发表于2020-09-08 07:37 被阅读0次

静态编译:源文件--->javac--->.class--->JM运行加载--->Class对象--->实例对象。
动态编译: JVM运行时把源文件javac--->.class--->Class对象--->实例对象。

在调用ServiceConfig.export()方法的时候,在生成Invoker的时候回使用到Protocol的具体实现对象,


image.png

其中getAdaptiveExtension()就回使用到动态编译技术,进入此方法


image.png
可以看到this.createAdaptiveExtension()方法回返回具体的对象
this.getExtensionClasses()就是去对应的目录下加载java文件。
image.png image.png

createAdaptiveExtensionClass()方法中,其中的code就是已经产生的源码,现在需要对code进行编译并生成Class对象通过newInstance()即可获得需要的对象。
Dubbo中使用Compiler接口来编译,其步骤与上述相同

这就是Dubbo的动态编译

相关文章

  • 12.Dubbo的动态编译原理

    静态编译:源文件--->javac--->.class--->JM运行加载--->Class对象--->实例对象。...

  • 编译原理以及什么是静态库和动态库

    为什么本人将编译原理和静态库,动态库放在一起讲.因为只有理解了编译的原理,才能真正明白什么是静态库和动态库. 1....

  • 第一章1.1动态代理-JDK

    demo 验证原理,编译会动态生成一个java类,如下:

  • iOS静态库及动态库

    2018-06-19 浅析静态库链接原理编译原理以及什么是静态库和动态库 转之: iOS 静态库和动态库(库详解)...

  • Linux下fortran编译链接

    动态库*.so的编译及使用 编译原理 so文件是动态库的集合,由f90文件编译而成,此时f90程序中一般不包含pr...

  • 1.1作用域

    第1章,作用域是什么? 1.1 编译原理 JavaScript事实上是一门动态编译语言所有执行的语句都需要编译,只...

  • 改善Java程序建议17

    建议 17: 慎用动态编译。 关于动态编译的代码: 只要静态编译能做的事情,动态编译就能实现。 动态编译时,需要注...

  • 重新学习 c 语言(4)- 库和宿主实现(二) 程序如何运行

    (二) 程序如何运行 (涉及到编译原理,操作系统,动态链接等知识 解释运行先不谈) (1) c程序的编译过程...

  • 从编译的角度来学作用域!

    作用域是什么? 思维导图 编译原理 我们都认为js是一门动态语言,但是其实是一门编译语言,但是不是提前编译的,编译...

  • javascript作用域

    编译原理:尽管通常将JavaScript归类为“动态”或者“解释执行”语言,但是实际上,它是一门编译性语言。但与传...

网友评论

      本文标题:12.Dubbo的动态编译原理

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