
Java的平台无关性
Hello,各位小伙伴是不是对于Java面试很头疼呢?
我以前跟你们一样也是如此,今天我给大家分享一些经验与技巧。
首先回顾一下,上一篇文章,我们说到了对JAVA的理解,那么这一节课开始我们将重点分析第一点,也就是什么是JAVA的平台无关性,说到这个平台无关性,小伙伴们是不是很懵逼呢?这句话的意思是, 一次编译,到处运行。那我们先看看Java程序如何被创建。

Java程序的创建和运行
首先我们也知道一个命令Javap,这个是Java自带的反解析编译器,可以查看Java编译器生成的字节码。那我们说说Java的运行过程。
1.Java源文件被编译器编译成字节码文件。
2.JVM将字节码文件编译成相应的操作系统机器码。
3.机器码调用相应操作系统的本地方法库执行相应的方法。
也就是说我们的Java源文件,通过 javac 命令编译生成字节码 . class文件 ,之后 .class文件又被JVM中的解释器编译成机器码,运行在不同的操作系统上(windows, linux , unix ,mac等)运行。每种操作系统的解释器都是不同的,但基于解释器实现的 虚拟机 是相同的,这也是Java能够跨平台的 愿因 了。
需要注意的一点是:在一个Java进程开始运行或,虚拟机就开始实例化了,有多个进程就会启动多个虚拟机实例。进程退出或关闭,则虚拟机实例就会消亡,在多个虚拟机实例之间不能共享数据。
接下来我们留一个作业。
为什么要先编译成字节码再解析成机器码,而JVM不直接将字节码解析成机器码呢?
好了这节就到这里,我们下节分析这个问题。
欢迎关注,转发与评论。