【jvm】什么是动态编译

打印 上一主题 下一主题

主题 1062|帖子 1062|积分 3186

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 说明



  • 1.在Java中,动态编译指的是在程序运行时动态地编译Java源代码,天生字节码,并加载到JVM(Java假造机)中执行。
  • 2.动态编译是在程序运行时,根据必要编译Java源代码的一种技能。
  • 3.通过Java编译器API(如javax.tools.JavaCompiler)在运行时调用编译器,将Java源代码编译成字节码,然后通过类加载器(如ClassLoader)加载到JVM中执行。
  • 4.静态编译:在程序运行前,将所有用到的Java代码都编译成字节码。这通常是通过Javac编译器或IDE的编译按钮完成的。
  • 5.动态编译:在程序运行时,根据必要动态地编译Java源代码。这提高了程序的灵活性和可扩展性,因为可以在运行时天生和加载新的代码。
2. 实现方式



  • 1.Java编译器API:javax.tools.JavaCompiler是Java提供的用于动态编译的API。它答应开发者在Java程序中调用编译器,从而在运行时天生字节码。
  • 2.JavaFileObject与JavaFileManager:JavaFileObject代表要编译的Java源代码或天生的类文件,而JavaFileManager则负责管理这些文件。
  • 3.自定义类加载器:在动态编译后,通常必要使用自定义的类加载器来加载天生的字节码。这是因为默认的类加载器通常只加载已经存在于文件体系中的类。
3. 应用场景



  • 1.代码天生:动态天生代码并编译执行,比方模板引擎。
  • 2.在线hot-swap:在不重启应用的环境下更新代码和重新加载类。
  • 3.动态数据库访问:编译运行时天生的SQL或NoSQL查询。
  • 4.安全环境:在安全沙箱中执行不受信任的代码。
  • 5.动态语言支持:支持类似Ruby、Groovy等动态语言的特性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表