阅读本文约“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. 关于NLP相关技术全部在这里:预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...
  2. python编程入门 电子书-Python编程从入门到实践PDF电子书
  3. JavaSE(一)——HelloWorld
  4. 微软Azure云之企业Exchange 2016部署12—配置负载平衡
  5. Java面向对象知识总结
  6. VS编译NPAPI:error C2733:不允许重载函数 “NP_Initialize的第二个参数
  7. C# List 深复制
  8. 求和函数计算机语言,在 Excel 中,计算求和的函数是 ____。
  9. UltraEdit 25注册机及免费破解注册教程(附带工具)
  10. Weblogic的下载、安装、使用
  11. Java开发就业前景,2017java开发就业前景分析
  12. 怎样通过计算机修改蓝牙音箱,有线音箱怎么改蓝牙无线音箱 有线音箱改无线音箱方法介绍【详解】...
  13. leetcode 376. 摆动序列(三种解法)
  14. MSP430F149的TIMERA定时中断理解
  15. 颈椎护理小助手,轻松缓解颈部酸痛,宾多康智能颈枕按摩器体验
  16. 简单面试题,但是容易忘记
  17. 问卷调查小程序功能清单
  18. 二.MUI框架 开始体验MUI
  19. LINUX学习网址精选
  20. 幻影显示连接不到服务器,幻影纹章怎么进不去 无法连接服务器及解决方案

热门文章

  1. 结构建模设计——Solidworks软件之装配体操作基本总结二(装配体内编辑零件、新建零件、标准配合操作)
  2. PHP使用openoffice实现word,ppt,Excel在线转PDF浏览。windows和linux系统不同的解决方案
  3. 安娜Anna:世界最快的超级伸缩的KVS, 秒杀Redis
  4. linux操作系统有什么好处?
  5. python中axes什么意思_matplotlib中的axes.flat是做什么的?/p precodefor i, ax in enumerate(axes.flat): /code...
  6. RSI+ROC短期指标组合怎么使用?
  7. ISME Comm | 机器学习和深度学习在微生物组研究中的应用
  8. ListView的长按事件和点击事件冲突的解决办法
  9. 使用c语言测试大端和小端,C语言*符号使用及大端法小端法测试
  10. 强制将int转化为float