前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java底层-揭开JVM的面纱

Java底层-揭开JVM的面纱

作者头像
每天学Java
发布2020-06-12 17:55:44
1.3K0
发布2020-06-12 17:55:44
举报
文章被收录于专栏:每天学Java每天学Java

JVM(Java Virtual Machine:Java虚拟机)对于每一位Java开发人员来说都是再熟悉不过的名词,很多公司在招Java开发时,其招聘要求往往会有一条:掌握JVM。这一篇文章目的是为了解释JVM对于Java而言到底意味着什么。

关于JVM

在计算机世界里,程序执行的实质是通过高低电位来触发电子元件的(数字电路的知识), 而高低电位可以认为是我们所说的二进制编码,所以最开始的编程其实就是写0、1组合。这种方式编写程序对于人而言太不友好,所以为了更容易编写程序,后面使用字母、单词来代替一个特定的指令来编程,也就是汇编语言,这种编程方式比直接输入二进制要容易理解,汇编之后,出现更加适合人们理解的语言, 像C语言,以C为基础引入面向对象的的C++,Java等等。

汇编语言是用字母、单词替代特定的指令,所以执行汇编语言的程序就需要进行编译,编译过程是将其字母、单词转为二进制指令, 而C/C++ 这些语言也是一样的,他们也需要通过编译器将C/C++语言编写的 程序转为可执行的指令,像最开始C语言编译器就是使用汇编语言来实现的。

但是Java和C/C++又有一些不同,首先编译器编译C/C++ 程序后,其指令可以直接面向硬件,所以他们执行效率很高,基本上可以随意操控硬件,但是Java通过编译器(javac编译器)编译之后其形成的二进制代码是提供给JVM,由JVM来将二进制文件代码转为 与机器适配的机器码,且该机器码不是直接应用到硬件上的,而是应用到操作系统层面的,所以Java的执行效率是比C/C++低的,虽然Java可以绕过JVM来调用本地接口,但是并不推荐

注:操作系统和JVM实际上也是使用计算机语言写出来,比如Linux、WINDOWS系统内核都以C语言为主来编写的,而JVM跟操作系统很类似,它通常是用汇编、C、C++ 语言混合实现的。

上面说到Java是面向操作系统的,这决定Java语言是无法直接操控硬件,而是需要JVM通过调用操作系统提供的API,再由操作系统去调用驱动实现对硬件的操控(驱动程序通常也是由汇编、C、C++ 实现),这样一来通过JVM就隔离了物理机器、底层操作系统与Java语言规范实现。所以我们也可以认为Java虚拟机是操作系统和Java语言实现的中间层,或者说适配器,它屏蔽了与具体平台相关的信息,使得我们开发人员通过虚拟机实现跨平台,不关心底层对硬件处理的细节。

上面对于JVM做了一个简单的说明,其重要性和复杂度就不言而喻了,也正是因为如此,我们可以认为Java的整个体系是以JVM为基础的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 每天学Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于JVM
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档