当我们写完一个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程序是如何运行的相关推荐

  1. Java在加载阶段会加载依赖吗,Java程序编译和运行过程之 一个对象的生命之旅(类加载和类加载器)...

    Java程序从创建到运行要经过两个大步骤 1:源文件(.java)由编译器编译成字节码ByteCode(.class) 2:字节码由Java虚拟机解释并运行 源文件编译成字节码,主要分成两个部分: 1 ...

  2. 一个Java程序是怎样运行起来的【class解析全过程】

    首先编写一测试程序 public class Test {public static void main(String[] args){System.out.println("HelloWo ...

  3. 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序

    编译运行一个java程序 Have you ever thought if it's possible to compile and run a java program from another j ...

  4. Java程序是怎么运行的?

    文章目录 Java程序是怎么运行的? 具体流程 编译 类加载 加载 验证 准备 解析 初始化 创建对象 方法调用 解释 执行指令 多线程上下文切换 Java程序是怎么运行的? 概括来说,写好的 Jav ...

  5. java 程序是如何运行的?

    不知大家有没有思考过,当我们使用IDE写了一个Demo类,并执行main函数打印 hello world时都经历了哪些流程么? 想通过这篇文章来分析分析Java的执行流程,或者换句话说想聊聊Java的 ...

  6. 一个java程序是怎样运行起来的(3)

    接上一篇 一个java程序是怎样运行起来的(2),在jvm创建好后,就可以开始执行程序了.我们知道,程序执行的入口在main函数,所以我们首先得找到main函数,这得有个前提,main函数对应的类已经 ...

  7. java 程序编译和运行的过程

    Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode)  2 ...

  8. java程序代码的运行机制_1.4Java程序的运行机制

    Java 程序的运行必须经过编写.编译和运行 3 个步骤. 编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件. 编译:是指使用 Java 编译器 ...

  9. Java程序编译和运行的过程

    Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode)  2 ...

最新文章

  1. java微信附件下载_WxJava微信开发工具包
  2. 点分治问题 ----------- HDU6881 Tree Cutting or 2020杭电多校第10场 [点分治+思维]
  3. Jenkins的卸载
  4. Citrix桌面及应用虚拟化系列之三:活动目录架构准备
  5. [前台]---js中去掉双引号或者单引号
  6. Nginx详解一(理论)
  7. HashMap与ConcurrentHashMap的测试报告
  8. 是做生意还是做事业,这是一个问题。
  9. 【经验之谈】劝退文|听说你要转AI
  10. 第二次作业:硬币游戏——代码分析与改进
  11. Battle Zone 战争地带
  12. iOS面试题:Socket原理
  13. 如何提高matlab的运算速度慢,如何提高 matlab 计算速度 运算效率
  14. 笔记本连接双显示屏相关问题
  15. layui数据表格分页简单实现
  16. 百度一键Root使用教程
  17. 04_JavaScript数据结构与算法(四)队列
  18. 华为数字化转型规划“三阶十二步法”
  19. 十三. 四轮车驱动开发之五: 由浅至深理解6轴陀螺仪姿态解算算法<中>
  20. vs不一致的行尾对话框怎么调出_爱喝白兰地的福建人,跟你讲讲“VS、VSOP、XO”...

热门文章

  1. 罗斯公司理财第11版笔记和课后习题答案
  2. [Android] 如何制作手电筒程序
  3. 头文件中能否进行函数的定义
  4. [机器学习算法]支持向量机SVM原理简介
  5. niosii spi 外部_转载:NIOS II spi详解
  6. 国企银行秋招不完全指南
  7. Educode--机器学习基础模型与算法测试闯关实验
  8. iOS 生成二维码 原生代码
  9. DataSet与DataType
  10. Spring Boot 2.0 配置图文教程