JAVA不同于C语言,是在JAVA虚拟机中运行的。JAVA虚拟机的百度解释如下。虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

我开始上班的时候有很多声音是虚拟机运行比较慢,天然不如C语言运算快。就是所谓的程序员鄙视链,C天然鄙视JAVA。后来随着了解的多了,感觉JAVA虚拟机是添加中间层的想法。就是封装。

程序最开始是机器编码,一个符号代表一种操作。

后来是汇编,可以让程序员不需要记住二进制命令了,汇编的一条指令和机器代码的一条指令是一一对应的。只是为了让我们更好的记忆。

后来是C语言这种高级程序语言,C语言是汇编语言的抽象,他会编译成汇编语言,然后编程可执行文件。C语言让程序员可以不需要理解什么寄存器了,PC了。反正就是编程变得简单了,更需要注重业务。有了C语言以后,大型程序才有可能被开发出来,使用汇编语言来写一个大的项目,无论从学习成本(上学的时候汇编就没学好)还是合作成本,各个方便都不适合写出大型程序。

但是C语言又存在移植性的问题,每个CPU的指令级不一样,不同的操作系统变量还有大小端也存在不同。程序的迁移就很麻烦,需要使用源代码到不同的机器上进行编译,然后才能执行。但是也会存在一些执行的差异。

引用一句话“计算机里面没有什么问题都可以通过添加中间件来解决。”

我觉得JAVA就是通过这个思想诞生的,一处编写,到处运行。

JAVA不在针对CUP执行级以及操作系统来编写程序了,而是针对虚拟机(中间件),不同的操作系统,我再通过虚拟机去适应。这样程序就和操作系统解耦了。两个不互相依赖。DI,IOC也是这种思想吧。如果是DI这种思想是对的,那么JAVA就是更好的一种语言。

C->操作系统

JAVA->虚拟机

java虚拟机通俗_JAVA虚拟机的通俗解释相关推荐

  1. java虚拟机功能_Java虚拟机介绍

    Java虚拟机介绍 引导语:虚拟机指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统.那么Java语言的虚拟机又是怎样的呢?以下是百分网小编分享给大家的Java虚拟机介绍 ...

  2. java虚拟机进程_Java虚拟机详解(七)------虚拟机监控和分析工具(1)——命令行...

    通过前面的几篇博客,我们介绍了Java虚拟机的内存分配以及内存回收等理论知识,了解这些知识对于我们在实际生产环境中提高系统的运行效率是有很大的帮助的.但是话又说回来,在实际生产环境中,线上项目正在运行 ...

  3. java 虚拟机规范_Java虚拟机规范----Java虚拟机结构

    Java体系和一些基本概念 Java平台的结构图: JVM与JRE.JDK关系? JVM:Java Virtual Machine(Java虚拟机),负责执行符合规范的Class文件 JRE: Jav ...

  4. java tostring方法_Java虚拟机如执行方法调用的(二)?

    虚方法调用 Java里所有非私有实例方法调用都会被编译成invokevirtual指令. 接口方法调用都会被编译成invokeinterface指令.这两种指令都属于Java虚方法的调用. 在大多数情 ...

  5. java帧结构_Java虚拟机运行时栈帧结构--《深入理解Java虚拟机》学习笔记及个人理解(二)...

    Java虚拟机运行时栈帧结构(周志明书上P237页) 栈帧是什么? 栈帧是一种数据结构,用于虚拟机进行方法的调用和执行. 栈帧是虚拟机栈的栈元素,也就是入栈和出栈的一个单元. 2018.1.2更新(在 ...

  6. java 虚拟机 初始化_Java虚拟机 类初始化 阶段

    Java虚拟机使用某个类的过程,可分为七个阶段: 加载 - 验证 - 准备 - 解析 - 初始化 - 使用 - 卸载 本文只介绍在什么情况下对类进行初始化. Java虚拟机规范对何时进行类的初始化做了 ...

  7. java pc计数器_java虚拟机-程序计数器PC Register

    什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 :在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解 ...

  8. java虚拟机编码格式_Java虚拟机(JVM)默认字符集详解

    Java中对字符串等进行转换字节数组时, 需要根据字符集编码来进行转换, 当不显示的指定字符集编码时(如: "测试".getBytes()), 会使用Charset.default ...

  9. java 看虚拟机内存_java 虚拟机内存介绍

    已经入行快有两年了,然而没有认真看过java虚拟机内存的介绍,下面把自己看的关于java虚拟机内存的介绍写下来,分享给大家. java 虚拟机在运行时将内存分为几个区域,分别为程序记数区,java虚拟 ...

最新文章

  1. 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式
  2. 第16章:MongoDB-聚合操作--聚合管道--$project
  3. 如何查看电脑显卡配置_无需软件!直接查看电脑配置方法
  4. 用laravel开发php,使用 PhpStorm开发Laravel项目
  5. java图片循环_java – 如何实现无限图像循环?
  6. 对注册会计师CPA的简单了解
  7. 【语音增强论文解读 03】TCNN: TEMPORAL CONVOLUTIONAL NEURAL NETWORK FOR REAL-TIME SPEECHENHANCEMENT IN THE TIME
  8. 新型城镇化红利,碧桂园的确定性在哪里?
  9. Mariadb 设置远程访问
  10. 带你了解微信代运营公众号到底怎么做
  11. 乐视手机恢复出厂设置后卡账户登录页面,刷入miui系统后妥妥的开发手机
  12. jzoj5331 【NOIP2017提高A组模拟8.23】壕游戏
  13. AURIX™ Development Studio 安装使用
  14. 手动挡五个档位示意图_手动挡车档位介绍,手动挡挡位示意图
  15. 【直播聊天室】Android开发源码
  16. esp8266驱动四脚oled显示文字和图片
  17. u盘文件名乱码的恢复方法
  18. HDU1114 存钱罐 完全背包
  19. Java ASCLL编码表
  20. c语言专业导论论文,专业导论课程毕业论文.doc

热门文章

  1. Python描述性统计示例
  2. 我的世界java和网易能联机吗_网易我的世界单机怎么转联机
  3. Homepage Machine Learning Algorithm 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning
  4. caffe学习笔记18-image1000test200数据集分类与检索完整过程
  5. 用python简单处理图片(1):打开\显示\保存图像
  6. Linux设备驱动之UART驱动结构
  7. HTML5 之 新特性 + 新对象
  8. Java并发编程(一)线程的各种创建方式
  9. 基于query语句解析mysql工作原理
  10. Socket请求获取数据