Java运行机制

本文介绍了计算机高级语言的两类——编译型和解释型,详细阐述了它们的区别。Java作为独特的语言,既包含编译过程(生成字节码),也依赖解释器(JVM)运行,实现了跨平台特性。Java程序的运行包括编写、编译和运行三个步骤,字节码文件在JVM中被解释成机器码执行。Java的这种特性使得它在效率和平台兼容性间找到了平衡。
摘要由CSDN通过智能技术生成

目录

一、计算机高级语言主要有编译型和解释型两种。

1、详细说明

2、两者区别

3、总结

二、关于java

1、概述:

2、个人理解

三、Java程序的运行过程(执行流程)分析

1、Java 程序的3 个步骤

2、文件概述

3、总结

知识总结

本章梳理


一、计算机高级语言主要有编译型和解释型两种。

1、详细说明

首先计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:编译、解释。

2、两者区别

类型

原理

优点

缺点

编译型语言

通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux等)执行的机器码(以可执行文件的形式存在)常见编译型的语言:C、C++

脱离开发环境,运行效率高。

 

与特定平台相关,一般无法移植到其他平台。

解释型语言

由专门的解释器,根据需要将部分源代码临时转换成特定平台的机器码立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。常见解释型的语言:Java、javascript、python

只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植。

解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低。

3、总结

  • 主要区别在于,前者源程序编译后即可在该平台运行,后者是在运行期间才编译。所以前者运行速度快,后者跨平台性好。
  • 前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,如C/C++等都是编译语言。
  • 而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript

二、关于java

1、概述:

Java和其他的语言不太一样。因为java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。

  • 可以说它是编译型:因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。 
  • 可以说它是解释型:因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。 
  • 现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以又是编译的。

 

2、个人理解

java是解释型的语言,因为虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 jvm的解释,才能在各个平台执行,这同时也是java跨平台的原因。所以可是说java即是编译型的,也是解释型,但是假如非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。 比如首先利用文本编辑器编写Java源程序,原文件的后缀名为.java,再利用编译器(javac)将源程序编译成字节码文件(.class)最后利用不同平台的(LinuxWindows)虚拟机解释成机器码由操作系统执行。

三、Java程序的运行过程(执行流程)分析

1Java 程序的3 个步骤

编写:

是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。

编译:

是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件,不像C语言那样生成可执行文件。

运行:

是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。

2、文件概述

  • 字节码文件:是一种和任何具体机器环境及操作系统环境无关的中间代码。它是一种二进制文件,是 Java 源文件由 Java 编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的 Java 解释器来解释执行,因此 Java 是一种在编译基础上进行解释运行的语言。
  • Java解释器:负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。
  • Java虚拟机:是运行 Java 程序的软件环境,Java 解释器是 Java 虚拟机的一部分。在运行 Java 程序时,首先会启动 JVM,然后由它来负责解释执行 Java 的字节码程序,并且 Java 字节码程序只能运行于 JVM 之上。这样利用 JVM 就可以把 Java 字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定平台的 JVMJava 程序就可以运行,而不用考虑当前具体的硬件平台、操作系统环境、字节码文件是在何种平台上生成的。

3、总结

  • JVM 把这种不同软、硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM Java 平台架构的基础,Java 的跨平台特性正是通过在 JVM 中运行 Java 程序实现的。
  • Java 语言这种“一次编写,到处运行”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。
  • 提示:Java 程序通过 JVM 可以实现跨平台特性,但 JVM 是不跨平台的。也就是说,不同操作系统之上的 JVM 是不同的,Windows 平台之上的 JVM 不能用在 Linux 平台,反之亦然。

知识总结

本章梳理

  • 首先高级语言都需要翻译成机器码才能被操作系统所识别,而翻译的过程有两种(编译、解释)。解释型就好比翻译官,精通各国语言,能即时翻译,通用性高,但是口述慢。编译型就好比出版书本,一次性翻译好,效率高,但是一本书一种语言,通用性差。
  • Java特立独行,将源码一次性编译成字节码文件,但是能通过不同平台的JVM再翻译成机器码。也就是说相当于出版书籍,但是呢,每种语言都有。个人认为其属于解释型,因为编译后的字节码文件是操作系统看不懂的,最终还需要解释成机器码。
  • Java执行流程就是先编写源码(.java),再编译好(.class),最后又JVM来运行。

博客原笔记图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值