那Java是怎么做到的呢这个大功臣就是我们的JVM了。与其他语言不同Java代码编译之后并不是直接编译成机器码而是编译成只有JVM才能识别的一种字节码。不论Java程序在那个环境运行。只要JVM能装Java程序就可以直接运行。JVM承担的就是一个翻译工作动态的将Java代码编译成操作系统可以识别的机器码。这样一来Java就实现了「Write OnceRun Anywhere」的伟大愿景了。一次编译、处处运行「Write OnceRun Anywhere」很多同学会有一个疑惑就像当年的C语言或者说如今的Go语言打包成各个平台的软件包也不是一件很麻烦的事情。我总不至于为了这一个特性就直接切换到Java语言吧。这句话实际上也只是一句口号直到如今Java程序跑在不同的平台上也会遇到不同的一些问题。Java能火起来实际上包含了很多的因素比如语法简单容易入门、生态开放性、语言本身的扩展性、稳定性还有一些运气的成分等等跨平台只是其中的一个小点而已。很多初学者对于JVM也会存在一个误区觉得只有Java语言才能运行在JVM上。但实际上Java虚拟机运行的是字节码文件。换句话说你如果写一段JavaScript代码只要能通过编译器编译成字节码文件那Java虚拟机也能够运行。这也不是开玩笑现在Java虚拟机确实可以运行JS代码了。虽然名字是Java虚拟机但是和Java语言并没有什么强关联。它只是按照Java虚拟机规范去读取Class文件解析执行仅此而已了如果你对JVM足够了解足够深入你完全可以自己写一门语言只要能编译成规范的字节码就运行在JVM虚拟机之上了。这种语言也有很多比如Scala、Kotlin等等都是同一个思路。关于JVM的介绍我们就聊到这下一集讲带领大家走进JVM的世界