入门 - 07 - Java程序运行机制

入门 - 07 - Java程序运行机制

一、编译型和解释型


在计算机的高级编程类型分为两种:


编译型(compile)

需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件

  • 通俗来讲:就像一本书直接翻译成另一种语言

  • Java通过编译程序直接编译成.class字节码文件

  • 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行

  • 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件

  • 例子/主要语言:C / C++等


解释型

解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译

  • 通俗来讲:就像一个翻译官一句话一句话给你翻译,文章被修改时,就把修改的再翻译
  • 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护
  • 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言
  • 例子/主要语言:Java、Java Script、Python等

二、动态语言和静态语言


通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言 在我看来,动态语言和静态语言指的还是编译型和解释型

  1. 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。PythonRuby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
  2. 静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#JAVA等。

对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamictyping when needed


三、两种类型的小总结

  1. 这两个词听起来都有翻译的意思,但是它们两个有区别:时机不同。就是什么时候去翻译
  2. java既有编译型的特点,也有解释型的特点
  3. 解释型的性能不如编译型语言,但电脑硬件方面在提升,现在买个电脑,内存都有16G,32G之类的,所以现在而言编译型也是很快的

四、程序运行机制

源程序(.java文件)通过编译器–>字节码(.class文件)–>类装载器–>字节码校验器–>解释器–>操作系统平台

程序运行机制


五、一个面试题——编译运行过程

  1. 编译期:.java源文件,经过编译,生成``.class`字节码文件

  2. 运行期:JVM加载.class并运行``.class`

    特点:跨平台、一次编程到处使用——Write Once, Use Anywhere


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值