首先介绍一下Java的各个层级,先放一张图:java
硬件,操做系统和操做系统接口:这三级不说你们都知道,操做系统有不少种,好比Windows,Linux。Windows又分为win7,win10,win xp等等;Linux有Ubuntu,CentOS;操做系统接口就是系统为开发者预留的,方便调用从而控制操做系统的硬件,它不须要让程序员知道是怎么实现的,只须要知道参数便可。可是不一样的系统确定有不一样的接口,甚至同一系列的操做系统之间,接口也有所不一样,就好比win7与win10之间,操做系统接口确定有差别。记住这一点,咱们继续往下看:程序员
咱们知道各个系统之间的接口不一样,若是想在不一样的操做系统上实现一样的功能,势必要作一些改变才行,甚至两个操做系统差异很大,要在不一样平台实现一样的功能就表明要作两套程序出来。可是java程序为何可以不在意这样的差异,作一个程序就能够面向全部操做系统呢?这就是JVM的做用了。编程
JVM即Java虚拟机,它的主要做用就是至关于一个翻译官,JVM来向下关联全部操做系统,他能操做全部操做系统,向上提供统一接口,也就是JavaAPI,程序员只要面向JVM编程,将想要让操做系统作的告诉JVM,它就会去跟操做系统转达,至于到底怎么转达的,这个彻底不用去考虑。这样一来,只要面向JVM编程,就能够作到一个程序在全部平台上都能运行。Java语言和平台无关,这就是Java可以跨平台的缘由。spa
顺便提一嘴:跨平台会形成什么呢?Java经过JVM翻译,C/C++没有这样的过程,因此能够确定的一点是Java运行速度不如C/C++的速度。可是随着JVM虚拟机的技术和系统硬件的发展,之后说不定Java的速度就能赶超C/C++了。操作系统