阅读本文约“2分钟”

熟悉Java的朋友都知道虚拟机还有编译器,那么它们各自主要的功能是什么?谁比较重要呢?让我们来了解一下这两位美女的故事。

虚拟机可以说就是Java,她能让程序运行起来。

但是编译器却能产生文件,毕竟java是直译语言,如果需要一边运行一边解译纯文字是不能运行得快速的,而我们程序员也不可能直接写二进制代码给虚拟机,而需要编译器帮我们生成二进制文件。

还有就是编译器会报错!Java是强类型语言,编译器不允许变量保存类型的数据,这是很关键的类型安全性功能,编译器会提前抓出问题。

但也不是所有问题都抓出来,虚拟机运行中依旧会遇到错误类型的数据塞进数组中,而不得不抛出的异常等等

而这些类似的问题,在运行中发生,其实是为了容许动态绑定的功能,Java可以在执行期引用连程序员也没有预期会碰到的类型,所以编译器保留了一些运用性。编译器的工作是要确保铁定不能跑的东西不会过关。

虚拟机呢?好像这么一说就没什么用了?其实不然,一些真正的Boss也是要虚拟机来处理的,比如存取权限的安全问题。

编译器作为安全的第一线,能防止人们动不到不可以碰的程序代码与其他类的重要数据。

而虚拟机也能确保不会有人在执行前修改二进制代码

.......

.......

说起来,好像还有很多很多点能提及,那就等下次再聊吧!

转载于:https://www.cnblogs.com/UncleCatMySelf/p/9142784.html

JSJ—编译器与虚拟机哪个重要?相关推荐

  1. 从虚拟机架构到编译器实现导引【一本书的长度】

    i春秋作家:immenma 原文来自:从虚拟机架构到编译器实现导引[一本书的长度] 在说些什么实现的东西之前,笔者仍然想话唠唠叨下虚拟机这个话题,一是给一些在这方面不甚熟悉的读者简单介绍下虚拟机的作用 ...

  2. mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)

    对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...

  3. Java 虚拟机总结给面试的你(中)

    本篇博客主要针对Java虚拟机的类加载机制,虚拟机字节码执行引擎,早期编译优化进行总结,其余部分总结请点击Java虚拟总结上篇 . 一.虚拟机类加载机制 概述 虚拟机把描述类的数据从Class文件加载 ...

  4. 虚拟机及VmBasic编译引擎实现

    虚拟机及VmBasic编译引擎说明   1.关于虚拟机及其编译器的说明 2.VmBasic开发/调试环境的介绍及说明 3.关于其他 下载地址一 源程序下载 下载地址二 设计说明书 关于虚拟机及其编译器 ...

  5. 基于栈和基于寄存器的Java虚拟机

    基于栈和基于寄存器的虚拟机区别:存放操作数的位置(操作数栈/寄存器)----操作数栈即求值栈 JVM通常将操作数栈放到方法调用栈帧,Dalvik则将部分操作数放入虚拟寄存器. 字节码只能看到操作数栈/ ...

  6. 【JVM】javap命令行分析揭示boolean的本质的虚拟机指令

    源代码 public class BooleanTest {public static void main(String[] args) {boolean a = true;boolean b = f ...

  7. 虚拟机系列 | 执行引擎和垃圾回收

    一.执行引擎 应用程序经过编译,转换为字节码文件,字节码加载到内存空间并不能直接在操作系统上执行,执行引擎作为Java虚拟机核心的组成部分,作用就是将字节码指令解释/编译为对应系统平台上的本地机器指令 ...

  8. java虚拟机教程图解_深入拆解JAVA虚拟机学习教程

    搞JAVA的深入下去java虚拟机是必须掌握的知识,最近发现个不错的视频教程,学习了几篇讲得非常不错,推荐给大家.废话不多说,大看直接看目录吧. PS:主讲人是Oracle 高级研究员,计算机博士 郑 ...

  9. Java虚拟机(十一)——执行引擎

    文章目录 执行引擎 执行引擎概述 作用 工作过程 为什么说Java是半编译型半解释型语言? 机器码.指令.汇编语言 机器码 指令 指令集 汇编语言 高级语言 解释器 字节码 解释器 分类 现状 JIT ...

最新文章

  1. 模拟linux磁盘满,linux 磁盘满了简单处理一下
  2. 利用inotifywait监控主机文件和目录
  3. ixf文件 mysql导入,控制 PC/IXF 文件导入数据库的一般规则
  4. Linux 安装Resin4.0.40
  5. ES5-7 立即执行函数、闭包深入、逗号运算符
  6. android包名更换后升级方案,Android增量升级方案
  7. ipv4转换ipv6工具_IPv4与IPv6的区别,不仅仅是地址变长而已
  8. Upload LABS Pass-11
  9. 如何制作多合一Windows镜像
  10. 2022年高处安装、维护、拆除理论题库及模拟考试
  11. 阿拉丁指数丨《2021 年度小程序互联网发展白皮书》4.5 亿+DAU 小程序的 6 大发展趋势
  12. 使用 border 属性制作三角形
  13. 生成权重 transorflow:Early stoppting conditioned on metric `val_accuracy` which is not available
  14. 扒谱大杂烩-都是前辈写的
  15. Predictive State Temporal Difference Learning 原文翻译预测状态时间差分学习
  16. NodeBB论坛搭建
  17. App Inventor学习环境搭建
  18. Python写银行系统
  19. docker 问题集
  20. 单片机、ARM、MUC、DSP、FPGA、嵌入式

热门文章

  1. firefox打开不能上网怎么回事 firefox 不能上网
  2. android 渠道号怎么写,android无渠道号推广的细分统计
  3. 第2节:英语中的形容词,副词,动词,动名词,动词不定式
  4. 微信小程序界面设计的好方法
  5. Floodlight 入门 之 起步篇 - 如何处理PacketIN消息
  6. 【python基础】python数据类型整理--不可变类型
  7. iOS自带图片大小压缩
  8. 浏览器加载图片错误解决方案
  9. 暗影精灵5风扇怎么调_惠普暗影精灵5super散热改装
  10. tomcat打包war,jar部署