JVM那些事儿之简介(一)

JVM那些事儿之简介(一)

JVM全名是Java虚拟机(Java Virtual Machine),这个英文名大家一定要记住,为什么要记这个英文呢?要说这英文呀,太重要了,是出门装逼抗事必备。不然你出去跟人家说诸如“JVM虚拟机”之类的话就要被鄙视了。


虚拟机

那到底啥是虚拟机呢?其实虚拟机就是在硬件计算机上模拟一个假的计算机,大家用电脑玩过psp吧,这时候就要用到一种叫做模拟器的软件,这个软件其实就是虚拟机。它尽可能的模仿硬件,并提供操控硬件的指令集,虚拟机里的环境和硬件本身的环境是隔离的,也就是说虚拟机里运行的程序并不知道自己在一个模拟的电脑里。《黑客帝国》大家都看过,整个人类都是在一个虚拟机里生活,大家并不知道自己所生活的世界是假的。虚拟机里运行的程序也是这样的。

Java虚拟机

说完了虚拟机,那到底啥是Java虚拟机呢?Java虚拟机本质上来说也是一个虚拟机,只不过,它被阉割限制为只能运行.class文件。是一个被精简过的,定制过的虚拟机。前面讲了,虚拟机是一个假的计算机,而且和物理计算机隔离的,所以你不管在虚拟机里怎么折腾都伤害不到物理计算机。

为什么发明Java?

说了这么多废话,有一个问题不知道当问不当问?人家不都已经发明了C++之类的语言了吗?你为啥偏偏要再发明一个Java啊?是不是吃饱了闲的。

其实,还真不是吃饱了闲的。C++虽然好,但是有一个致命的缺点,太依赖物理计算机了,比方说吧,你写一个代码,明明在windows上跑得好好的,到了linux上却连编译都不通过,为啥?因为底层依赖库各有各的不同,为啥底层依赖库不同呢?因为一个操作系统,最底层的是啥呢?是和硬件打交道的驱动程序,而这个驱动程序是根据不同的硬件型号单独写的,你比如说,显卡就分为A卡和N卡,驱动不一样吧?到了语言级别要控制这些硬件的时候,就尴尬了,必须单独去写调用程序,在windows上写好的程序到了linux还得再改一遍才能跑得起来。这个事情最后成了当时最麻烦的事情,大家都知道,程序员都是特别懒的动物,简直不能忍啊。于是就有人站出来说,那我能不能写一个中间件,中间件负责处理和底层硬件打交道的事情,大家写程序的时候直接调用中间件不就行了吗?当时这种做法还挺流行。

我们伟大的Java之父就想到了一个牛逼的设想:一次编译,到处运行。然后就吧唧吧唧做了起来。我猜测那时候有点水平的人都喜欢自己创造语言,大学的时候大家都学过《编译原理》这门课,学完了你也能自己设计一个语言,这位老大就搞了个Java。

饭碗

对待Java文件我们是一次编译,生成一个字节码文件(.class),对于这个字节码文件,我们就用不同操作系统下安装好的Java虚拟机来解释运行。

就这么着,才有了我们这碗饭。此处应烧香。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值