Java学习 1.1——Java为什么能够跨平台?
程序员文章站
2022-04-10 14:35:15
首先介绍一下Java的各个层级,先放一张图: 硬件,操作系统和操作系统接口:这三级不说大家都知道,操作系统有很多种,比如Windows,Linux。Windows又分为win7,win10,win xp等等;Linux有Ubuntu,CentOS;操作系统接口就是系统为开发者预留的,方便调用从而控制 ......
首先介绍一下java的各个层级,先放一张图:
硬件,操作系统和操作系统接口:这三级不说大家都知道,操作系统有很多种,比如windows,linux。windows又分为win7,win10,win xp等等;linux有ubuntu,centos;操作系统接口就是系统为开发者预留的,方便调用从而控制操作系统的硬件,它不需要让程序员知道是怎么实现的,只需要知道参数即可。但是不同的系统肯定有不同的接口,甚至同一系列的操作系统之间,接口也有所不同,就比如win7与win10之间,操作系统接口肯定有差异。记住这一点,我们继续往下看:
我们知道各个系统之间的接口不同,如果想在不同的操作系统上实现同样的功能,势必要做一些改变才行,甚至两个操作系统差别很大,要在不同平台实现同样的功能就代表要做两套程序出来。但是java程序为什么能够不在乎这样的差别,做一个程序就可以面向所有操作系统呢?这就是jvm的作用了。
jvm即java虚拟机,它的主要作用就是相当于一个翻译官,jvm来向下关联所有操作系统,他能操作所有操作系统,向上提供统一接口,也就是javaapi,程序员只要面向jvm编程,将想要让操作系统做的告诉jvm,它就会去跟操作系统转达,至于到底怎么转达的,这个完全不用去考虑。这样一来,只要面向jvm编程,就可以做到一个程序在所有平台上都能运行。java语言和平台无关,这就是java能够跨平台的原因。
顺便提一嘴:跨平台会造成什么呢?java通过jvm翻译,c/c++没有这样的过程,所以可以肯定的一点是java运行速度不如c/c++的速度。但是随着jvm虚拟机的技术和系统硬件的发展,以后说不定java的速度就能赶超c/c++了。