CoreModTutor
  • 源代码仓库(求star)
  • 目录
  • 0 绪论
  • 1 简介
    • CoreMod
    • Minecraft混淆方式
  • 2 Java虚拟机
    • ClassLoader类加载器
    • ByteCode字节码
  • 3 原版 CoreMod
    • 直接修改class文件
    • JavaAgent
    • LaunchWrapper
    • ModLauncher
  • 4 FML CoreMod
    • 1.3.2-1.5.2
    • 1.6.1-1.12.2
    • 1.13.2-1.15.2
  • 5 Mixin
    • 配置
    • 引导
    • 注入
    • 修改
    • 定位
    • 融合
    • 扩展
    • 调试
  • 6 ASM
  • 附录
    • 附录A 相关工具下载
    • 附录B 常见Java字节码指令表
    • 附录C 参考资料
Powered by GitBook
On this page
  • Java 字节码(Java Bytecode)
  • JVM 语言

Was this helpful?

2 Java虚拟机

众所周知,Java 是一门运行在虚拟机上的语言。虚拟机就是一个虚拟的计算机,是 Java 语言的运行环境,它使得代码与操作系统无关,只和虚拟机有关。这个特性使得 Java 程序员不需要关注不同平台的差异,可以专心书写代码。

Java虚拟机(JVM)有以下核心的知识点:

  • 类加载机制

  • 内存结构

  • 垃圾回收(GC)

其中,类加载机制是 CoreMod 编写的核心内容,我们需要详细了解一个 class 文件是如何加载进内存的,并掌握基本的 class 文件结构与字节码以便对其进行修改。 Java 虚拟机规范(JVMS)并没有对内存结构和垃圾回收进行明确规定,具体操作方式由 Java 虚拟机自行决定,差异较大。

Java 字节码(Java Bytecode)

Java语言会经过编译,被翻译成 Java 虚拟机可以识别的字节码。此时 Java 虚拟机会认得这些字节码,并且运行它。字节码就像是其他程序编译完的机器码,都是可以直接运行在机器/虚拟机上的。 一开始,Java 字节码只会在运行时被 Java 虚拟机解释执行,后来 Sun 公司(现已被 Oracle 收购)开发了著名的 Java 虚拟机 Hotspot ,会将热点代码通过即时编译器(JIT)编译成本地机器码并缓存,通过编译执行与解释执行相结合的方式,极大加快了 Java 的运行效率。

JVM 语言

由于 Java 的代码通过翻译成字节码来在 Java 虚拟机上运行的,那么我们把其他语言翻译成字节码也就可以在 Java 虚拟机上运行。比如 Scala 、Kotlin 。

PreviousMinecraft混淆方式NextClassLoader类加载器

Last updated 5 years ago

Was this helpful?