精华内容
下载资源
问答
  • 2021-06-24 16:00:22

    Java 是一种高级编程语言。用高级语言编写的程序不能直接在任何机器上运行。首先,它需要被翻译成特定的机器语言。的javac编译器做这件事情,它需要的Java程序(含有的.java文件源代码)并将其转换成机器代码(称为字节码或.class文件)。

    Java 虚拟机 (JVM) 是驻留在真实机器(您的计算机)中的虚拟机,JVM的机器语言是字节码。这使编译器更容易,因为它必须为 JVM 生成字节码,而不是为每种类型的机器生成不同的机器码。JVM 执行编译器生成的字节码并产生输出。JVM 是使 java 平台独立的一种。

    所以,现在我们明白了JVM的主要功能是执行编译器产生的字节码。每个操作系统都有不同的 JVM,但是它们在执行字节码后产生的输出在所有操作系统中都是相同的。这意味着在 Windows 上生成的字节码可以在 Mac OS 上运行,反之亦然。这就是为什么我们称 java 为平台无关语言。

    Java虚拟机(JVM)是​​在实际机器(您的计算机)上运行并执行Java字节码的虚拟机。JVM 不理解Java 源代码,这就是为什么我们需要javac 编译器来编译*.java 文件以获取包含JVM 理解的字节码的*.class 文件。JVM 使 Java 可移植(一次编写,随处运行)。每个操作系统都有不同的 JVM,但是它们在执行字节码后产生的输出在所有操作系统中都是相同的。

    更多相关内容
  • 安装JDK时一定会在其子目录下面安装一个JRE,同时在安装的过程也会询问你是否要安装一个外部的JRE。如果我们选择安装则就同时拥有了两个jre。这两个JRE其实本质上是没有任何分别的。最主要的区别在于:JDK目录里面的...

    安装JDK时一定会在其子目录下面安装一个JRE,同时在安装的过程也会询问你是否要安装一个外部的JRE。如果我们选择安装则就同时拥有了两个jre。这两个JRE其实本质上是没有任何分别的。最主要的区别在于:JDK目录里面的JRE主要是设计用来运行JDK自带的那些工具的(Bin目录下)。而外部的JRE在安装的时候会自动注册到操作系统的path里面一般是:System32文件夹下面。因此我们只要安装了外部的JRE则运行Java程序时都是用的外部JRE来运行的(系统的默认path具有优先)。

    JVM只是JRE的一部分确切的说是JRE的一个动态链接库。

    JDK里面的工具(Bin目录下的那些很小的.exe文件)几乎都是用Java编写的(都存放在JDK目录下面的lib文件夹中的tools.jar文件中),之所以是以.exe文件的形式出现是为了免于输入冗长的执行代码(java -classpath JDK_HOME\lib\tools.jar com.sun.tools.javac.Main)。此处的exe文件仅仅是一个包装器以方便用户的使用。很多软件最后都打包成exe文件就是一种包装器。因此这些包装器的运行其实最终都是去调用tools里面相应的Java字节码来运行因此都依赖于JRE所以在JDK内部才有一个JRE。

    当我们电脑上安装了JBuilder等开发工具时它们都自带了自己的JDK,因此当我们运行Java程序的时候到底使用的哪一个JRE呢。这个是由java.exe文件来决定的。java.exe的作用就是找到相应的JRE来运行后面给出的.class文件。寻找逻辑如下:

    首先在自己的目录下面查找JRE若没有找到,然后去父目录下查找,最后去Windows的注册表中(HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\)去找。而注册表中一般只有Client而没有Server虚拟机。所以输入

    java -server时候会说找不到。当然找到JRE以后还有一个版本验证的过程,那就是验证java.exe和此JRE版本是否一致,假若我们运行的是jdk1.3版本的java.exe文件然后找到的是却是jdk1.4的jre程序就可能会出错。

    我们在JRE/bin目录下面会看到有连个文件夹client和server。它们里面都会有一个jvm.dll文件这就是所谓的虚拟机。

    在我们运行java.exe文件的时候我们要确定两个事情:

    哪一个java.exe文件被执行,java.exe找到的是哪个JRE。

    具体运行的是哪一个Java.exe主要取决于环境变量path的设置,对于Windows系统来说C:\Windows\System32是默认的。

    因此我们再去添加指向我们安装的java.exe的环境变量时要注意与系统环境变量的先后关系。

    path=D:\JDK_HOME\bin;C:\Windows\System32(优先运行JDK_HOME里面的java.exe)

    和path=C:\Windows\System32;D:\JDK_HOME\bin;(优先运行系统目录下的java.exe文件)是不同的。因此当我们要想jre中(如ext目录)添加.jar文件时就要注意其匹配问题了。

    展开全文
  • 先说说Java技术体系,传统意义上,Java技术体系包括以下部分:  ※ Java程序设计语言  ※ 各种硬件平台上的Java虚拟机  ※ Class文件格式  ※ JavaAPI类库  ※ 第三方Java类

    先说说Java技术体系,传统意义上,Java技术体系包括以下部分:

                            ※ Java程序设计语言

                      ※ 各种硬件平台上的Java虚拟机

                      ※ Class文件格式

                      ※ JavaAPI类库

                      ※ 第三方Java类库(来自开源社区等)


    先了解完Java技术体系,再来区别下JDK和JRE。

                      ① JDK(Java Development Kit):

                                  Java程序设计语言 + Java虚拟机 + JavaAPI类库

                                  JDK是支持Java程序开发的最小环境。

                     ② JRE (Java Runtime Environment):

                                 Java SE API 子集 + Java虚拟机

                                JRE是支持Java程序运行的标准环境。

    展开全文
  • JVM主要功能 JVM结构 JVM与JREJDK区别 JVM主要功能 Java是一种高级编程语言。...用高级语言编写的程序不能直接在任何机器上运行。...首先,需要将其翻译成...Java虚拟机(JVM)是安装在我们计算机中的虚拟机,JVM...

    JVM主要功能

    Java是一种高级编程语言。
    用高级语言编写的程序不能直接在任何机器上运行。
    首先,需要将其翻译成特定的机器语言,javac编译器就专门来干这个事儿的,它把Java程序(含有的.java源代码文件)转换成机器代码(称为字节码或.class文件)。

    Java虚拟机(JVM)是安装在我们计算机中的虚拟机,JVM自己的机器语言是字节码。
    这样子Javac编译器就好处理啦,因为它只需要为JVM生成字节码就行了,而不是为每种类型的机器生成不同的机器代码。

    JVM执行Javac编译器生成的字节码并生成输出就OK了。JVM正是java跨平台的原因。
    所以,现在我们知道JVM的主要功能是执行编译器生成的字节码

    每个操作系统都有不同的JVM,但是在执行字节码后它们产生的输出在所有操作系统中都是相同的。
    这意味着在Windows上生成的字节代码可以在Mac OS上运行,反之亦然。
    这就是我们将java称为平台无关语言的原因,下图展示了这个过程:
    这里写图片描述


    JVM总结:
    Java虚拟机(JVM)是在实际机器(您的计算机)上运行并执行Java字节代码的虚拟机。
    JVM不了解Java源代码,这就是为什么我们需要使用javac编译器来编译* .java文件, 从而获取包含JVM理解的字节代码的* .class文件。
    JVM使java可移植(一次编写,随处运行)。
    每个操作系统都有不同的JVM,但是在执行字节代码后它们产生的输出在所有操作系统中都是相同的。


    JVM结构

    来张JVM的结构图:
    这里写图片描述
    让我们看看JVM是如何工作的:
    Class Loader(类加载器): 类加载器读取.class文件并将字节码保存在方法区中。

    Method Area(方法区域):JVM中只有一个方法区域,它在所有类之间共享。这各区域保存了每个.class文件的类的级别信息。

    Heap(堆): 堆是为对象分配内存占用的JVM内存的一部分。JVM为每个.class文件创建一个类对象。

    Stack(栈):栈也是JVM内存的一部分,但与Heap不同,它用于存储临时变量。

    PC Registers(PC寄存器): 这可以跟踪已执行的指令以及将要执行的指令。由于指令由线程执行,因此每个线程都有一个单独的PC寄存器。

    Native Method stack(Native Method 栈): 一个native method(非Java语言实现的方法)可以访问虚拟机的运行时数据区域。.

    Native Method interface(Native Method 接口): 它使java代码能够被本机应用程序调用或被调用。本机应用程序是特定于系统的硬件和操作系统的程序。

    Garbage collection(垃圾收集):类代码由java代码显式创建,在使用后,它会被垃圾收集自动销毁以进行内存管理。


    JVM与JRE与JDK区别

    JRE:JRE是java虚拟机运行的环境。JRE包含Java虚拟机(JVM),类库和其他文件,不包括编译器和调试器等开发工具。
    这意味着您可以在JRE中运行代码,但无法在JRE中开发和编译代码。

    JVM:如上所述,JVM通过使用JRE提供的类,库和文件来运行程序。
    这里写图片描述

    JDK:JDK是JRE的超集,它包含JRE与开发工具(如编译器,调试器等)的所有内容。
    这里写图片描述


    原文地址:
    https://beginnersbook.com/2013/05/jvm/

    展开全文
  • 写在前面:程序员程序员在本身的计算机上安装好JDK后,能够开发本身的Java程序,可能就不是那么关心JDKJRE、JVM之间的联系,今天经过这篇博客来进行一些总结。数据库1.JDK:JDK是指 Java Development Kit ---Java...
  • JAVA虚拟机 JDKJRE和JVM之间的差异 JREJDK如何工作? JRE如何工作? JVM如何工作? 推荐文章: JAVA开发套件 Java Development Kit(JDK)是用于开发Java应用程序和applet的软件开发环境。它包括Java...
  • JAVAJDKJRE和JVM介绍

    2022-01-23 09:36:19
    JAVAJDKJRE和JVM: 学习java基础免不了要与JDKJRE和JVM打交道,它们的含义和关系是什么呢?
  • 一、安装JDK1、 JVM(Java Virtual Machine—Java虚拟机)JRE(Java Runtime Environment—Java运行时环境)JDK(Java Development kit—Java开发工具包)2、JDK包含了JRE和JVM,所以安装了JDK就安装了JRE和JVM,JDK的...
  • java JreJdk的区别

    千次阅读 2022-01-28 10:30:17
    包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE 即可。 JDK:(Java Development Kit Java)开发工具包。JDK是提供给Java开发...
  • 首先从概念上理解一下吧,JDK(Java Development Kit)简单理解是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也是常常听到Java虚拟机JDK是面向开发者的,JRE是...
  • JDK JRE JVM

    2019-06-21 15:38:19
    JVM JREJava核心类库 JDK ↘ 开发诊断工具 ...
  • JVM是什么:Java Virtual Machine 虚拟机 源文件.java虚拟机中通过编译器编译成字节码文件.class, 是整个java实现跨平台的最核心的部分 JRE是什么:java Runtime Environment即java运行环境,作用是运行别人写好的...
  • JDKJava Development Kit的缩写,是Java的开发工具包,主要包含了各种类库和工具,提供给程序员使用的,JDK包含了JRE,同时也包含了编译java代码的编译器javac,同时包含了很多调试工具与监视工具例如jconsole等之类...
  • 简述javaJDKJRE和JVM的之间的关系

    千次阅读 2022-04-12 14:36:44
    JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也就是常常听到Java虚拟机JDK是面向开发者的,JRE是面向使用JAVA程序的用户,JVM是java实现跨平台和系统的媒介所在。 一、JDK(Java Dev
  • java面试 JDK,JRE,JVM三者的区别

    万次阅读 多人点赞 2018-06-11 10:12:09
    简单粗暴的理解 JDK包含了JREJRE包含了JVM 详解 JDK: java development kit, java开发工具包,用来开发Java程序的,针对java...JVM: java virtual machine,java虚拟机 用来解释执行字节码文件(class文...
  • 是的,装JDK就可以了,因为JDK包含Java虚拟机。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。从这个层面...
  • JREJRE是Java Runtime Environment的缩写,顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的,还有所...
  • JDKJRE的关系

    2021-01-20 13:49:20
     * b: JRE:Java Runtime Environment它是Java运行环境,包含了Java虚拟机,也就是JVM,同时还包含了Java语言运行需要的核心类库。如果你不需要开发只需要运行Java程序,那么你可以安装JRE。例如程序员开发出的程序...
  • Java基础 JDKJRE,JVM 的区别及联系(面试题)

    多人点赞 热门讨论 2021-08-18 10:32:39
    ==== 有很多刚开始接触Java的朋友们总是被 JDKJRE,JVM 搞混 , 安装完JDK也不知道这是什么东西,其中包含什么,有什么作用,下面详细介绍一下。 1. 什么是 JDKJRE,JVM ==== JDKJava Development Kit)...
  • JDK包含了JRE,同时还包含了编译java源码的编译器javac;还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序;它提供了Java的开发环境...
  • 这显然能够极大提高编程工作的实际效率,这种优势来源于Java VirtualMachine(JAVA虚拟机的缩写),JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实
  • javajdk jre jvm之间的关系
  • java虚拟机jdk-6u31-windows-i586.part2
  • JavaJDKJRE的区别

    2021-03-14 21:19:23
    JVMJavaJDKJRE的区别JREJava Runtime Environment的缩写,是Java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦,还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以...
  • 3.JDKJRE、JVM的区别 3.1 Java为什么能跨平台,实现一次编写,多处运行? 1.编译器、调试器 JAVA编译器(javac.exe) JAVA编译器的作用是将(.java文件)编译成字节码文件,是最基本的开发工具。编译时首先读入java...
  • java技术体系:JDKJREJava SE

    千次阅读 2018-09-09 23:28:52
    JDK是支持Java开发的最小环境,包括Java程序设计语言,Java虚拟机和Java API类库三部分。 JRE是支持Java运行的标准环境,包括Java API中Java SE API和Java虚拟机。 如果按照业务领域来划分,分为4个平台: Java...
  • Java基础 — JDKJRE的区别和环境变量配置

    千次阅读 多人点赞 2019-05-28 10:17:25
    (一)JDKJRE区别 JDKjava开发工具包。 JDK可以支持Java程序的开发,包括编译器(javac.exe)、开发工具(javadoc.exe、jar....JRE可以支撑Java程序的运行,包括JVM虚拟机java.exe等)和基本的类库(rt.jar等...
  • Java Virtual Machine是Java虚拟机,提供给java程序运行。Java程序需要运行在虚拟机上,不同的平台(Windows、linux)有自己的虚拟机,因此Java语言可以实现跨平台(java可以在不同的平台上运行)。 JRE Java ...
  • JDK JDK(Java Development Kit) — Java开发工具包 — JRE+开发工具 开发java程序最小的环境为JDK,所以JDK是JAVA语言的核心。 JRE JRE(Java Runtime Environment) — ...JVM(JAVA虚拟机)将JAVA代码转换为对应的操作系统

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,229
精华内容 28,091
关键字:

java虚拟机的 jdk jre

java 订阅