【jvm】什么是动态编译

目录

          • [1. 说明](#1. 说明)
          • [2. 实现方式](#2. 实现方式)
          • [3. 应用场景](#3. 应用场景)
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等动态语言的特性。
相关推荐
无敌最俊朗@7 小时前
02-SQLite 为了防止多人同时乱写,把整个数据库文件“当一本账本加锁”
jvm·数据库·oracle
白露与泡影10 小时前
Spring Boot项目优化和JVM调优
jvm·spring boot·后端
Boop_wu12 小时前
[Java EE] 多线程 -- 初阶(2)
java·开发语言·jvm
Chan1614 小时前
【 Java八股文面试 | JVM篇 内存结构、类加载、垃圾回收与性能调优 】
java·jvm·spring boot·后端·spring·idea
百***926519 小时前
java进阶1——JVM
java·开发语言·jvm
虫师c19 小时前
字节码(Bytecode)深度解析:跨平台运行的魔法基石
java·jvm·java虚拟机·跨平台·字节码
坐吃山猪1 天前
第2章-类加载子系统-知识补充
jvm
百***92022 天前
java进阶1——JVM
java·开发语言·jvm
Pluchon2 天前
硅基计划6.0 柒 JavaEE 浅谈JVM&GC垃圾回收
java·jvm·数据结构·java-ee·gc
初学小白...2 天前
JVM入门知识点
java·服务器·jvm