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运行机制的更多相关文章

  1. Java运行机制及相关术语

    JVM java虚拟机(Java Virtual Machine)JVM可以实现java程序的夸平台运行,即运行的操作平台各不相同 JVM基本原理 java运行机制 编译型语言(如C.C++) 源文件 ...

  2. Java入土---Java运行机制及IDEA的安装使用

    Java运行机制及IDEA的安装使用 java程序运行机制 计算机高级语言分为编译型语言跟解释型语言,而java同时具有两者的特点. 可能对于新手来说,什么是编译,什么是解释; 简单来说,编译就是将代 ...

  3. JAVA运行机制

    这一篇我们来简单理解一下JAVA的运行机制 大概可以分为三大部分 1.编写程序 2.编译程序 3.运行程序 1.编写程序 编写程序就是我们前面说的源代码 这些源代码都有特殊的语法 例如main函数 他 ...

  4. HelloWorld与java运行机制

    HelloWorld 新建文件夹存放代码 新建一个java文件 文件后缀为.java Hello.java 注意文件拓展名改为java文件 编写代码 public class Hello{ #类名 p ...

  5. java运行机制、Jdk版本及Java环境变量

    一.语言特性 计算机高级语言按程序的执行方式可分为:编译型和解释型两种.编译型的语言是指使用专门的编译器,针对特定的平台(操作系统)一次性翻译成被该平台硬件执行的机器码,并包装成该平台可执行性程序文件 ...

  6. 基础知识《零》---Java程序运行机制及运行过程

    Java运行机制 Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU:对于不同的运行平台,有不同的虚拟机:Java虚拟机机制屏蔽了底层运 ...

  7. Java基础介绍运行机制笔记

    1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线 ...

  8. java运行环境和运行机制

    先来介绍三个概念: JVM----JAVA virtual machine      java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runt ...

  9. 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM

    1. 运行机制 Java源文件(*.java)-----使用javac编译----编译成*.class文件----使用java解释执行----特定平台的机器码 2. 原理 负责解释执行字节码文件的就是 ...

随机推荐

  1. 恶意代码检测工具 -- Mathematics Malware Detected Tools

    Mathematics Malware Detected Tools 重要:由于缺少测试数据,部分结论可能不正确.更多更准确的结论,还需要进行大量实验. 概述 mmdt(Mathematics Mal ...

  2. Linux x64 Hadoop-2.4.1配置-解决错误Unable to load native-hadoop library for your platform

    网上配置hadoop的教程一堆,各不尽相同,但没有一个是完整系统的. 下面给出遇到的错误的解决方法,相信能解决很多人的问题. 错误:Exception in thread "main&quo ...

  3. Leetcode Tags(3)String(TODO)

    一.Easy 696 Count Binary Substrings Input: "00110011" Output: 6 Explanation: There are 6 su ...

  4. Java多线程编程(一)Java多线程技能

    一.进程和多线程的概念以及线程的优点 打开Windo任务管理器可以看到很多正在运行着的exe程序,完全可以将运行在内存中的exe文件理解成进程,进程是受操作系统管理的基本运行单元. 线程可以理解成在进 ...

  5. 如何用好redis pipeline

    编者注:pipeline是Redis的一个提高吞吐量的机制,适用于多key读写场景,比如同时读取多个key的value,或者更新多个key的value.工作过程中发现挺多小伙伴都对pipeline多少 ...

  6. 使用pyquery

    简单举例 from pyquery import PyQuery as pq html = ''' <div> <ul> <li class="item-O&q ...

  7. 记录一些html5和css3的一部分属性

    html5 标签1 video:视频 属性: src:视频的url autoplay:视频在就绪后马上播放 controls:向用户显示控件2 audio:音频 属性类似于video3 属性:drag ...

  8. 深入理解java虚拟机系列初篇(一):为什么要学习JVM?

    前言 本来想着关于写JVM这个专栏,直接写知识点干货的,但是想着还是有必要开篇讲一下为什么要学习JVM,这样的话让一些学习者心里有点底的感觉比较好... 原因一:面试 不得不说,随着互联网门槛越来越高 ...

  9. 创建linux系统下的虚拟机

    1.打开VMware软件 2.创建新的虚拟机 3.下一步 4.点击 稍后安装操作系统——下一步 5.选择   其中版本 我的镜像是这个版本所以选择这个 6.下一步  设置虚拟机名称  要保存的位置 7 ...

  10. git 合并代码

    分支 dev 及衍生分支 dev-ctj 一.rebase 1.git checkout dev-ctj 2.git rebase -i head~num[num 是本分支的提交数,多个提交数先合并为 ...