大家好,又见面了,我是你们的朋友全栈君。
当我们写完一个Java源程序的时候,他是怎么被计算机运行的呢?本篇文章就来介绍下Java程序是如何运行的。
一、java技术体系 传统意义上来讲Java技术体系包含下边几个部分: Java程序设计语言 各种硬件平台上的虚拟机 class文件格式 Java API类库 来自商业机构和开源社区的第三方Java类库
jdk:Java语言开发工具包。包括Java程序设计语言,Java虚拟机,Java API类库三个部分。 jre:Java程序运行时环境。Java SE API类库中的子集合Java虚拟机。 jvm:执行Java程序的核心组件,是jre中的一部分
Java技术体系包含的内容如图:
当你不需要编写Java源程序的时候,你的电脑上是不需要安装jdk的,只需要安装jre即可。当我们需要编写Java源代码的时候,那么就需要安装jdk了。jdk中带有jre,但也可以单独安装jre。
二、Java是一个什么类型的语言?
编程语言分为编译型和解释型。那么什么是编译型和解释型呢?先来引用大牛的一个举例,我感觉说的特别好。
举个例子:你现在JVM技术特别牛逼,受邀请去哈佛大学做一次主题演讲,自然,这要求你有很好的英语水平,如果你很不幸,和我一样,英语水平渣的一B,但是又不想放弃这次机会,你又如下两个选择: 第一种方式: 带一个优秀的翻译伙伴,你演讲的时候说一句话,翻译伙伴帮你翻译成英文。好处:你可以畅所欲言;缺点:会拖延你的演讲时间。因为你说的每一句话,都必须等待翻译完才能继续。 第二种方式:先将演讲稿写好,翻译成英文。如 Hello,Good Morning(哈喽,骨的猫宁)。好处:不会拖延你的演讲时间,你演讲也比较流畅、快速的进行;缺点:不能自由发挥,如你的演讲本来是上午,改为下午了,你就不在使用Hello,Good Morning(哈喽,骨的猫宁)了。
好了,通过上边的例子,我们来总结下什么是编译型语言和解释型语言。
编译型语言:对应的是上边例子的第二种情况。是需要将程序源码直接放在特定的操作系统上,编译成可被特定操作系统所识别的字节码,然后在操作系统上运行的语言。像C,C++都是编译型语言。他们运行时,都是需要放在不同的操作系统上编译,然后再运行。优点是执行速度快缺点是可扩展性不强
解释型语言:对应上边第一种情况。不需要提前编译好,只需要在运行的时候,由解释器来逐行解释运行即可。优点是可扩展性强缺点是运行速度慢。
那么来看Java到底是哪种类型的语言呢?我们都知道Java源程序需要先由javac编译成可被Java虚拟机所识别的字节码,然后再由Java虚拟机运行。所以Java是编译型和解释型语言的结合。
三、运行过程 运行过程: ①Java 源文件—->编译器—->字节码文件 ② 字节码文件—->JVM—->机器码
Java源程序先通过javac编译器编译成可被Java虚拟机所识别的字节码文件。之后Java虚拟机就会将class文件加载到内存,然后运行。其中Java虚拟机就充当了class文件与操作系统之间的解释器。所以如果需要在不同的平台上运行文件,那么只需要在操作系统上安装相应版本的Java虚拟机即可。这也就是为什么Java程序是一次编译到处运行的原理。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157072.html原文链接:https://javaforall.cn