My java——JVM(java 虚拟机)

JVM是Java Virtual Machine(Java虚拟机)的缩写。一般我们在学习java中会用到很多缩写名称,如JRE、JDK、SDK、JAVA SE、JAVA EE、JAVA ME、JAVA FX、还有j2se、j2ee、javaee5,我勒个去!多得很。
    有时连支持java的组织都很难搞明白,sun、oracle、openjdk三者的关系都搞不明白,taobao都有它的JVM可想而知,开发这些的组织还很多。所以这里准备写一系列的JAVA家族篇来分清楚,谁?


    这里首先谈一下JVM(Java虚拟机),为什么首先谈他呢?
    主要是想起原来的一个经理说的,“不管学习什么语言,首先要弄明白它的运行环境”。虽然我现在还是没有理解到,可能他是linux和嵌入式编程的。这里不多说这句话的意思和对错,反正我没有明白。
    用了JAVA两年多了,一直在学框架,一下struts、一下spring、一下Hibernate……我勒个去。他们开始多打着轻量级的口号,现在呢,看看他们下载的目录有多少M。看来他们的目标是要把所有的web开发都编写成框架,学呀学呀。结果呢,,我两很多java的基础都不明白,异常、多线程、网络编程……。所以我准备重新学JAVA,第一个就是JVM。
    JVM的定义就不多说,网上有很多专业的定义和解释,我这里就说一下我的理解。
    JVM从字面上可以理解成运行java语言的电脑,我们也许用过VMware来安装个系统,VMware可以虚拟一个裸机,我们在上面安装一些操作系统。而JVM呢,它难道也是虚拟成一个电脑?如果这么理解也行,,它就像一个没有界面的操作系统。不过这个操作系统不是基于不同厂商生产的硬件上,而是基于不同的操作系统(这里的操作系统指windows、linux、ios、UNIX、手机系统等)上。我们写的java软件运行于JVM这个操作系统上,来调用底层的操作系统。算了自己都被自己弄混了……

    都说Java是夸平台的,为什么呢?
    夸平台,就是夸操作系统舍,不信吧,我写的java程序不能在我手机上运行呀,所以这么能说java程序是夸平台的呢。JVM是支持JAVA运行的虚拟机或理解成操作系统,java除了运行在JVM上应该不能运行在其他的系统上吧,所以JAVA不能夸平台舍。
    那JAVA这么实现在不同的系统上呀,上面说了,JAVA这能运行在JVM上,我们写一个针对Windows系统的JVM,同理写一个UNIX、IOS、手机的。不同的操作系统写一个,JVM可以运行在不同的操作系统上。类似于操作系统运行在不同的硬件设备上(我想它们也是给不同的硬件写了个对应的驱动)。呵呵,也许这样我们可以理解成JVM能在那个系统上运行,java就可以,这样就夸平台了舍。我学术不精,只会Java,所以不清楚其它语言是怎么实现夸平台的?


    那JAVA如何在JVM上运行,操作电脑呀?
    是呀,我们感觉,JAVA程序是可以和真实的电脑互相操作,怎么回事。也许这正是JVM来实现的,JAVA基础中有多态这个定义,其实多态就可以用在此处。比如JAVA程序想接受键盘的输入字符“love”,在windows下接受的方式和UNIX下代码实现不一样。这里JVM对应windows写一个接受键盘输入的方法,对应UNIX写一个接受键盘输入的方法。这两个方法的实现的功能都一样,接受输入在返回输入的值,这些两个的编程语言可能不一样。他们把方法名称,返回值都定义成一样,那么java程序就直接调用JVM里面的方法就可以实现了。所以java程序在操作电脑的时候其实是在操作JVM,JVM再去操作电脑。

OK!这里简单的说了一下JVM,其实JVM不是这么简单的,这里只是从定义上说了一下。JVM其实也与操作系统差不多,也有他的独特的内存和调度算法

了解更多

你可能感兴趣的:(java,Redis,Dubbo,Spring,Boot,JVM,Java工程师,程序员,Redis,spring)