搜狗网站排名软件,iis网站属性没有asp.net,微信公众号运营规则,深圳app开发公司都有哪些到此#xff0c; 所有关于class文件格式的重要内容都已经讲解完了#xff0c; 不敢说面面俱到#xff0c; 但是敢说大部分重要的内容都包含在内了。前前后后用了9篇博客来专门讲解class文件结构#xff0c; 为什么花那么多的时间和精力来介绍class文件呢#xff1f; 简而言…到此 所有关于class文件格式的重要内容都已经讲解完了 不敢说面面俱到 但是敢说大部分重要的内容都包含在内了。前前后后用了9篇博客来专门讲解class文件结构 为什么花那么多的时间和精力来介绍class文件呢 简而言之因为它很重要。在前面的文章中 也讲到过为什么对于理解Java体系结构来说 理解class文件的格式至关重要。 其实这篇短文也不是对class文件格式细节上的总结 而是我在学习class文件和JVM的过程中的一些感悟和理解。
我们都知道JVM能够识别的只有class格式的文件 而源文件只是我们人能识别的 不能被JVM识别。 那我们要在更深的层次上理解Java语言 理解JVM 只懂源文件是不够的 因为虚拟机的很多的行为 是在class文件中定义的 而我们要理解JVM的行为 就必须也学会JVM能理解的“语言” 那就是class文件格式 。 就像我们想要深入的了解一个外国人 只站在自己的角度上是不可能了解他的 只有你学会了他的语言 才能对他更了解 因为只有你理解了他说的话 才能知道他做的事 进而了解他的行事方式和性格特点。 当然 也有另外一个方式可以让你了解外国人 那就是让他学会中国话 你们用中文交流。 但是在Java的世界里 这是不可能的 因为你不可能让JVM识别源文件 所以 只能你去学习JVM能理解的语言 ---- class文件。
理解了class文件的格式 不仅对理解JVM的行为有指导性的意义 它还能让我们对Java代码有更加清晰深刻的认识 毕竟class文件是由我们写的java代码“翻译”过来的。 明白了class文件的格式 你就能知道方法是如何表示的 字段是如何表示的 继承是如何表示的 方法体是如何表示的 等等。 所有源文件中的东西 都会在class文件中有相应的描述形式。 这样会让我们在写代码时做到胸有成竹。 当代码出了问题时 也能更快的找出原因所在因为我们可以把源码生成的class文件反编译出来 看看它内部是如何实现的。 毕竟原理明白了 源代码只是表象罢了。
此外 class文件不只是可以由Java代码生成。 其他很多基于JVM的语言 也是生成标准的class文件 然后被虚拟机执行。 如我最近正在学习的scala语言 它就是基于虚拟机的。 scalac编译器可以将scala代码编译成class文件。 这样的话 了解class文件格式 可以对学习其他基于JVM的语言起到很好的作用 你会发现 如果你对class文件和JVM足够了解的话 学习这些语言会感到非常轻松。 class文件是JVM的一个接口 不管你源文件中写的是什么代码 不管是java还是scala 只要通过一定的方式 让你写的代码可以转化成格式正确的class文件 那么JVM就能替你执行。 如果你足够牛 完全可以自己创建一门语言 实现一个针对这个语言的编译器 将之编译成class 那么虚拟机也能执行 并且ScalaGroovy等语言的设计者已经在这么干了