美文网首页Java 杂谈
从JDK与JRE的区别到java.dll装载

从JDK与JRE的区别到java.dll装载

作者: Jacquie葭葵 | 来源:发表于2018-11-12 14:58 被阅读0次

    JAVA运行基础

    参考:https://blog.csdn.net/shaochenshuo/article/details/78507132https://blog.csdn.net/jacksonary/article/details/80334040https://blog.csdn.net/qq_26545305/article/details/70241939;百度百科等...

    环境:win10,jdk1.8.0_161

    JAVA、JDK、JRE 区别

    JAVA 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言Java平台(即JavaSE, JavaEE, JavaME)的总称。

    JDK 是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 包含client端和server端(32位),需要配置环境变量。只有JDK下才有javac.exe

    1541665499150.png

    JRE 中只有client运行环境(32位),不需要配置环境变量,JRE在安装过程中,会把java.exe拷贝到系统环境变量目录中。

    然而,实际上我们电脑的JDK中只有这一个虚拟机动态链接库jvm.dll,根本没有jre/bin/client目录

    1541667293865.png

    这是因为,在64位系统中是无法切换到Client模式的,默认只工作在Server模式下。

    JVM 的 Client模式,Server模式

    可以通过命令查看自己目前的JVM信息

    1541666627184.png

    HotSpot VM 里,Client VM 和 Server VM是共用一套解释器的。

    Java HotSpot Client VM:为在客户端环境中减少启动时间而优化;比较适合桌面程序,它会做一些例如像快速初始化懒加载这一类的事件来适应桌面程序的特点。

    Java HotSpot Server VM:为在服务器环境中最大化程序执行速度而设计; 适合做服务器程序,一些针对服务器特点的事情,比如预加载,尤其在一些并发处理上,是会做更多的优化。

    64位默认为Server模式,jre/bin/下面只有server目录。32位的目录里既有server又有client,可以修改Server模式,打开%JAVA_HOME%/jre/lib/i386/jvm.cfg

    1541671226219.png

    通过注释我们知道,下面两行命令谁放在前面谁是默认虚拟机

    jvm.dll装载过程

    前面说,JRE安装时是把java.exe复制到系统环境变量目录了。而之所以能够使用,是因为java.exe只是一个执行程序的外壳,它会装载jvm.dll,这个动态链接库才是实际操作处理所在。

    JVM环境的创建包括两部分:jvm.dll文件的查找和装载

    jvm.dll的查找,通过java_md.c的CreateExecutionEnvironment方法实现。

    相关文章

      网友评论

        本文标题:从JDK与JRE的区别到java.dll装载

        本文链接:https://www.haomeiwen.com/subject/naccfqtx.html