Java程序是如何运行的
当我们写完一个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程序是一次编译到处运行的原理。
Java程序是如何运行的相关推荐
- Java在加载阶段会加载依赖吗,Java程序编译和运行过程之 一个对象的生命之旅(类加载和类加载器)...
Java程序从创建到运行要经过两个大步骤 1:源文件(.java)由编译器编译成字节码ByteCode(.class) 2:字节码由Java虚拟机解释并运行 源文件编译成字节码,主要分成两个部分: 1 ...
- 一个Java程序是怎样运行起来的【class解析全过程】
首先编写一测试程序 public class Test {public static void main(String[] args){System.out.println("HelloWo ...
- 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序
编译运行一个java程序 Have you ever thought if it's possible to compile and run a java program from another j ...
- Java程序是怎么运行的?
文章目录 Java程序是怎么运行的? 具体流程 编译 类加载 加载 验证 准备 解析 初始化 创建对象 方法调用 解释 执行指令 多线程上下文切换 Java程序是怎么运行的? 概括来说,写好的 Jav ...
- java 程序是如何运行的?
不知大家有没有思考过,当我们使用IDE写了一个Demo类,并执行main函数打印 hello world时都经历了哪些流程么? 想通过这篇文章来分析分析Java的执行流程,或者换句话说想聊聊Java的 ...
- 一个java程序是怎样运行起来的(3)
接上一篇 一个java程序是怎样运行起来的(2),在jvm创建好后,就可以开始执行程序了.我们知道,程序执行的入口在main函数,所以我们首先得找到main函数,这得有个前提,main函数对应的类已经 ...
- java 程序编译和运行的过程
Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode) 2 ...
- java程序代码的运行机制_1.4Java程序的运行机制
Java 程序的运行必须经过编写.编译和运行 3 个步骤. 编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件. 编译:是指使用 Java 编译器 ...
- Java程序编译和运行的过程
Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode) 2 ...
最新文章
- java微信附件下载_WxJava微信开发工具包
- 点分治问题 ----------- HDU6881 Tree Cutting or 2020杭电多校第10场 [点分治+思维]
- Jenkins的卸载
- Citrix桌面及应用虚拟化系列之三:活动目录架构准备
- [前台]---js中去掉双引号或者单引号
- Nginx详解一(理论)
- HashMap与ConcurrentHashMap的测试报告
- 是做生意还是做事业,这是一个问题。
- 【经验之谈】劝退文|听说你要转AI
- 第二次作业:硬币游戏——代码分析与改进
- Battle Zone 战争地带
- iOS面试题:Socket原理
- 如何提高matlab的运算速度慢,如何提高 matlab 计算速度 运算效率
- 笔记本连接双显示屏相关问题
- layui数据表格分页简单实现
- 百度一键Root使用教程
- 04_JavaScript数据结构与算法(四)队列
- 华为数字化转型规划“三阶十二步法”
- 十三. 四轮车驱动开发之五: 由浅至深理解6轴陀螺仪姿态解算算法<中>
- vs不一致的行尾对话框怎么调出_爱喝白兰地的福建人,跟你讲讲“VS、VSOP、XO”...