Java有一个其他语言都没有特点,那就是跨平台。
跨平台是什么意思呢?
我们首先来看看平台是指什么。
平台就是指我们计算机的操作系统,例如:Windows、Linux、Mac等操作系统。
跨平台的意思就是Java程序,在一次编译后,在这些平台上都可以运行。有其他编程语言基础的朋友应该知道,其他语言没有这个特性,例如c语言在Windows上编译的文件,放到Linux系统上运行,可能就有不兼容问题。
那么问题来了,Java语言的跨平台是怎么做到的呢?
我们先来看这样一个场景:
老王需要出差去美国,与美国人谈论一个项目需求,但老王不会讲英语,那个美国人也不懂我们中文,那怎么办呢?很明显,老王需要找一个翻译(这里取个名字,就叫A吧),这个翻译需要既会普通话,又会英语,做他们沟通的一个桥梁。与美国人谈完之后,老王还需要与日本人继续谈另外一个项目,很明显,老王还需要一个懂普通话和日语的人(这里取个名字,就叫B吧)。
假设我们的翻译A只懂普通话和英语,不懂日语,那么我们的翻译B就得另外找一个人了,也就是翻译A和翻译B不是同一个人。
朋友可能不耐烦了:不是要跟我讲Java跨平台的原理吗,怎么跟我扯这些呢?下面,重点就来了
我们知道,Java程序是运行在JVM上面的,我们Windows上编写的Java程序,在我们window上的JVM运行,当我们把程序放到Linux系统上面的时候,就在我们的Linux系统上运行,有过发布部署项目经验的朋友,就会很清楚,我们window和Linux上的JVM是不一样的。没有经验的朋友也可以在oracle官网上看到jdk有以下平台版本信息:
也就是不同的操作系统,oracle公司有专门的JVM支持。
到这里,朋友们大概明白了吧
Java程序就相当于是老王,操作系统相当于美国人或日本人,翻译就相当于JVM,通过不同JVM实现Java程序的跨平台。
window系统有专门的JVM,Linux也有专门的JVM,所以Java编译后的程序,能在这些操作系统上运行,得益于这些JVM的“翻译”工作。