flash网站源码下载,商务网站策划 网站目标与经营模式定位,多个链接的网站怎么做,网站建设深无痛快速学习JVM#xff0c;欢迎订阅本免费专栏 JVM
Java的特性就是程序员一次编写#xff0c;到处运行#xff0c;意思是我们只需要写一份代码#xff0c;就可以在不同的操作系统#xff08;windows、Linux、Mac OS等#xff09;中运行。但是不同的操作系统能看懂的指令… 无痛快速学习JVM欢迎订阅本免费专栏 JVM
Java的特性就是程序员一次编写到处运行意思是我们只需要写一份代码就可以在不同的操作系统windows、Linux、Mac OS等中运行。但是不同的操作系统能看懂的指令是不同的所以实现方式就是给每个操作系统开发一个Java虚拟机JVM。
JVM运行的过程是把我们代码编译后的字节码翻译成系统能识别的机器语言不同的系统有不同的JVM所以就实现了跨平台的特性。
字节码
或许我们会有疑问为什么源代码需要先编译成字节码呢JVM为什么不直接翻译源代码呢
其实这里主要是出于性能的考虑因为Java是高级编程语言所谓高级就是更贴合人类的语言习惯高级的代价就是更远离机器语言从代码到机器语言这个转换过程变长导致效率低。先由编译器将源代码转换为一种简单的中间形式即字节码然后再由 JVM 来执行这个中间形式是一个更为高效的设计方案。
除性能外字节码还有一个强大之处就是可以兼容多种语言比如我们如果把 Kotlin 语言的代码也编译成字节码那么当然也可以在 JVM 上运行。
Java 源代码通过 javac 编译器被编译成字节码文件命令是javac HelloWorld.java如果我们是在开发环境中工作如 Eclipse 或 IntelliJ IDEA那么这些 IDE 会自动为我们处理编译过程。
编译和解释共存
假设我们是机器只能看懂中文我们阅读英文小说有两种方式一种是直接阅读中文译本另一种是请个能看懂英文的人坐在我们旁边一句一句的解释给我们听但是肯定是第一种方式效率高这第一种方式就是“编译”第二种方式就是“解释”。
Java是编译和解释共存的语言编译发生在源代码编译成字节码时期解释发生在JVM把字节码解释给操作系统运行的时期。但是如果仅仅是这样那Java的运行效率还是低因为字节码还是一行一行解释运行的所以为了提高效率JVM 中还有一个非常重要的技术叫做 ****JITJust-In-Time 。
JIT编译器可以在程序运行时动态地识别出哪些代码段是最常被执行的“热点代码”然后把这些代码编译成机器语言存储在代码缓存区以提高运行效率。JIT 编译器并不是一开始就对所有代码进行编译而是根据代码的执行频率和重要性来决定何时进行编译。所以我们的Java项目启动后第一次运行代码的时候可能会相对以后运行较慢。