关于Java运行机制
Java既是编译型语言,也是解释型语言。
首先先查找关于两种语言的特性及运行机制。
编译型语言与解释型语言的区别
编译型语言
什么是编译呢?通过查找资料,大概就是使用专门的编译器,针对特定的平台将高级语言源代码一次性“翻译”成可以被该平台及其执行的机器码,并包装成该平台能够识别的可执行程序的格式。ps:计算机当然只能看不懂我们敲得代码。
解释型语言
解释则是通过专门的解释器对源程序解释成平台需要的机器码并且立即执行,也就是每次执行之前,都需要解释一遍。
细数两者之差别
- 编译生成的可执行程序可以脱离开发环境,(但是如果要移到另外一个平台上,则需要将源码复制另外平台,并重新编译),而解释型语言程序不能脱离解释器独立运行,但跨平台容易。
- 编译型语言的执行速度那是相当的快,因为之前高级程序已经被编译成机器语言文件,比如
windows下的exe文件,运行可执行程序的时候就不需要再进行编译了,而是直接运行。而解释型语言编写的程序每执行一次,就要翻译一次,效率偏低。 - 编译型程序可以访问内存的任何区域,相对不安全,而解释型当然在这方面就很安全,很贴心。
- 编译型程序运行消耗的内存比解释型少一点,而编译器在运行之前要先开相关的解释器,而且会进行许多代码优化,安全检查,消耗资源,占用内存。
- 但是编译型代码真的好难好难,c语言就是典型的编译型语言,而解释器毕竟智能,你懂我意思吧。
C,C++,Objective-C,Pascal等高级语言都是编译型语言。
Ruby,Python等语言都是解释型语言。
而Java就很奇怪,真的很怪,又编译,又解释。
Java的奇怪之处
Java的编译
Java的编译并不会生成特定平台的机器码,而是与平台无关的字节码,也就是.class文件。
Java的解释
.class文件通过Java虚拟机,即JVM(Java Virtual Machine)翻译成本地的机器码才能执行,这就是解释的过程。
具体机制
经过编译生成的字节码不面向平台,而是JVM,JVM作为一个交换器把一份字节码分别翻译成不同平台所需要的,这就是Java跨平台性体现的关键之处。
下图为执行Java程序的步骤:

JDK中的JRE(Java Runtime Environment)提供了
javac.exe对编写的.java文件进行编译,形成字节码文件,以及Java.exe加载Java类文件,并逐步对字节码文件进行编译。
在此鸣谢:
关于Java运行机制的更多相关文章
- Java运行机制及相关术语
JVM java虚拟机(Java Virtual Machine)JVM可以实现java程序的夸平台运行,即运行的操作平台各不相同 JVM基本原理 java运行机制 编译型语言(如C.C++) 源文件 ...
- Java入土---Java运行机制及IDEA的安装使用
Java运行机制及IDEA的安装使用 java程序运行机制 计算机高级语言分为编译型语言跟解释型语言,而java同时具有两者的特点. 可能对于新手来说,什么是编译,什么是解释; 简单来说,编译就是将代 ...
- JAVA运行机制
这一篇我们来简单理解一下JAVA的运行机制 大概可以分为三大部分 1.编写程序 2.编译程序 3.运行程序 1.编写程序 编写程序就是我们前面说的源代码 这些源代码都有特殊的语法 例如main函数 他 ...
- HelloWorld与java运行机制
HelloWorld 新建文件夹存放代码 新建一个java文件 文件后缀为.java Hello.java 注意文件拓展名改为java文件 编写代码 public class Hello{ #类名 p ...
- java运行机制、Jdk版本及Java环境变量
一.语言特性 计算机高级语言按程序的执行方式可分为:编译型和解释型两种.编译型的语言是指使用专门的编译器,针对特定的平台(操作系统)一次性翻译成被该平台硬件执行的机器码,并包装成该平台可执行性程序文件 ...
- 基础知识《零》---Java程序运行机制及运行过程
Java运行机制 Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU:对于不同的运行平台,有不同的虚拟机:Java虚拟机机制屏蔽了底层运 ...
- Java基础介绍运行机制笔记
1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线 ...
- java运行环境和运行机制
先来介绍三个概念: JVM----JAVA virtual machine java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runt ...
- 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM
1. 运行机制 Java源文件(*.java)-----使用javac编译----编译成*.class文件----使用java解释执行----特定平台的机器码 2. 原理 负责解释执行字节码文件的就是 ...
随机推荐
- 一文读懂Java类加载机制
Java 类加载机制 Java 类加载机制详解. @pdai Java 类加载机制 类的生命周期 类的加载:查找并加载类的二进制数据 连接 验证:确保被加载的类的正确性 准备:为类的静态变量分配内存, ...
- (五)Unity插件生成
1)新建空的AndroidStudio工程,但是新建过程时最小SDK版本要与unity一致,如下图所示,本次操作均为api16 2)创建Library,如下图所示,新建module,然后选择Andro ...
- incompatible implicit declaration of built-in function 'fabs'
形如: float a = -3.0; float b = fabs(a); 形参数据类型和实参数据类型完全一致,却还报警告: incompatible implicit declaration of ...
- char 、signed char、unsigned char
看如下代码: char c = -1; signed char sc = -1; unsigned char uc = -1; printf("c=%d, sc=%d, uc=%d, cx= ...
- ThinkCMF X1.6.0-X2.2.3框架任意内容包含漏洞分析复现
ThinkCMF X1.6.0-X2.2.3框架任意内容包含漏洞分析复现 一.ThinkCMF简介 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理系统框架,底层采用ThinkPHP3. ...
- intellij idea - Project Structure 项目结构详解(简单明了)
IDEA Project Structure 设置 可以点击 按钮,或者使用快捷键 Ctrl + Shift + Alt + S 打开 Project Structure .如下如所示: 项目的左 ...
- VBoxManage.exe: error: Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, CL SID_VirtualBox w/ IUnknown works.
我先把vagrantbox卸载了 重新装了一个 然后提示这个错误 当时我一脸蒙逼 后来经过百度 1, win+r 快捷键打开 “运行”,输入regedit 打开注册表 2,找到 HKEY_CLASSE ...
- Android_Fragment
(一) Faragment有自己的生命周期 Fragment依赖于Activity Fragmen通过getActivity()可以获取所在Activity:Activity通过FragmentMan ...
- jdk基础配置
今遇到一事,tomcat启动是报错,将jdk位数错误,有问题,32位和64位的问题 cmd java -verison 显示的确实是jdk 64位,又跑到 环境变量看了下java_home的配置 这里 ...
- (大模拟紫题) Luogu P1953 易语言
原题链接:P1953 易语言 (我最近怎么总在做大模拟大搜索题) 分别处理两种情况. 如果只有一个1或0 直接设一个cnt为这个值,每次输入一个新名字之后把数字替换成cnt,最后cnt++即可. 注意 ...