JVM基础(一):认识虚拟机

本文探讨了编程语言从机器码到Java的演变,特别是JVM在其中的重要作用。JVM允许Java程序跨平台运行,但它不是跨平台语言,而是通过将字节码编译为特定平台的机器码实现兼容。文章还讨论了C语言与Java的跨平台特性和优缺点,以及虚拟机家族,包括Android的Dalvik和ART虚拟机。理解JVM有助于更好地认识Java生态和提升编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

很高兴遇见你~ 欢迎阅读我的文章。

JVM是每个Java程序员必须迈过去的一个坎,因为它实在是太重要了。Java的底层知识,归根结底,都是JVM相关知识。很多读者看到jvm就感觉:哦这是底层知识,算了先学好应用层再说。或者到了面试需要不得不背诵几道题。在我看来,了解JVM是理解整个Java生态的必经之路。编程语言的发展,从机器码01串到现在的高级Java语言,这里面凝结了无数先驱的智慧。了解JVM,不只是为了面试,更是为了感受前人的智慧,学习JVM也可以让我们的Java程序更加地健壮。

而关于非JVM研究人员来说,可能我们并需要很深入去研究,理解他的概念模型就已经满足了。作为一个Android工程师,JVM也是必学的内容之一。JVM基础系列文章,主要讲述关于JVM需要了解的关键基础知识,不会去深入研究JVM的底层知识。对于一个Android工程师,这些肯定是足够的了,对JVM有兴趣的读者,可以看完之后继续深入去研究,相信这一系列文章也可以很好地给你提供一个学习JVM的指引。

第一篇我们来聊聊JVM。为什么说JVM是人类在编程语言上迈出的一大步?JVM在整个Java程序运行中扮演了什么角色?JVM是用C语言编写的,那么C语言是不是属于跨平台语言?如果C语言是跨平台语言,为什么还要开发Java呢,C不是更快吗?为什么Java这么火,但C语言还是没有没落?带着这些问题,这篇文章一起来聊聊计算机语言的发展简史,看看机器码是如何一步步演变成Java的,了解这些知识,可以更好地认识JVM。

C语言的诞生

我们知道,计算机硬件他只认识01串机器码,计算机发展早期的时候,程序员是通过编写01串来写程序的,例如针孔卡带就是其中的一种形式:

当然那时候的计算机和我们当今的计算机是不可同日而语,那时的计算机只能实现一些很简单的操作。例如我们需要计算:4+8,那么计算的指令需要有:0100,1000,1101,其中第一二进制串是代表数字4,第二个是代表数字8,第三个代表加法指令(当然这些指令都是不存在的,只是拿来举例)。这种编写程序的方式不仅效率低下,复杂,代码语义不清晰,不适应于越来越复杂的程序开发。那么先驱们想到了一个办法,可不可以把这些指令都取一个“名字”,例如1101,写成add,然后再用一个编译器,把add映射成1101,这样下次写4+8,可以写成4,8,add,编译器可以根据我们的设定转换成0100,1000,1101,这样不就方便非常多。这,就是汇编语言的诞生由来。

正如上述所言,我们不仅可以把加法操作写成指令,还可以把减法、赋值、循环、分支等等写成指令,最后再编译成机器码即可。相比直接使用机器码编写程序,使用汇编语言编写程序,极大提高了开发效率,且适用于开发更加复杂的程序,代码的语义也更加清晰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值