首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java简介 | Jdk、Jre、Jvm区别

近期准备用Java进行找工作的笔试语言,所以一边刷题一边总结碰到的相关问题。 Jdk全称是Java Development Kit,意为Java开发工具包。...Jre全称是Java Runtime Environment,意为Java运行环境。 Jvm全称是Java Virtual Machine,意为Java虚拟机。...但实际上javac.exe以及java.exe程序只是一个执行的外壳,它会加载jvm.dll等文件,这个动态库才是Jvm虚拟机的实际操作处理所在。 Jvm是Jre的一部分。...所以说Java之所以能跨平台使用,是因为Jvm不能跨平台。Java程序的一次编译,多处运行。 ? Jre中包括了Jvm。...Jdk里面包括了Jre,也就是说安装了Jdk,我们系统里肯定安装了Jre。 如果只是用来部署和运行Java程序,并不需要安装Jdk,只要单独安装Jre即可。

77930

Java技术体系------JDK、 JREJava ME 、 Java SE 、Java EE

以下内容并非原创,来自于深入理解Java虚拟机一书: 从广义上讲,Clojure、JRuby、Groovy等运行与Java虚拟机上的语言机器相关的程序都属于Java技术体系中的一员,但是仅从传统意义上来看...,Sun官方所定义的Java技术体系包括: Java程序设计语言 JavaAPI类库 运行于各个硬件平台上的虚拟机 Class文件格式 商业机构和开源社区的第三方Java类库 JDK:   包括Java...程序设计语言、JavaAPI类库、运行于各个硬件平台上的虚拟机,JDK是用于支持Java程序开发的最小环境; JREJava API类库中的Java SE API子集和Java虚拟机这两部分统称为...JREJRE是支持Java程序运行的标准环境。...JRE与JDK的区别: JRE顾名思义是java运行时环境,包含了java虚拟机java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。

2.2K40

Java关于 JVM JDK 和 JRE 通俗的解答

JVM Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。...总结: Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。...字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。 JDK 和 JRE JDK是Java Development Kit,它是功能齐全的Java SDK。...它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。 JREJava运行时环境。...如果你只是为了运行一下 Java 程序的话,那么你只需要安装 JRE 就可以了。如果你需要进行一些 Java 编程方面的工作,那么你就需要安装JDK了。但是,这不是绝对的。

70100

不需要jre运行Java?你没看错!

不需要再安装jre,你的应用程序将和exe一样,直接在目标机器上运行!而且启动时间不到1秒钟。 要体验这个功能,我们从spring boot拿一个demo。...也是oracle的项目,它的代码地址是: https://github.com/oracle/graal 项目地址是: www.graalvm.org/docs/ graalvm是一个想要统一天下的虚拟机...javac Example.java java Example 但我们还可以多一步,就是把class文件native化。 native-image Example 执行的时候,只需要输入 ....End 这种thin jar的思路,是不是感觉Java的发展越来越像golang了呢?docker镜像也会因为这种改变便得更小更纯粹,而脱离jreJava应用也越来越像一个真正的程序了。...但愿graalvm能够继续发力,带java继续飞上几十年,养我三代子孙! 作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。

1K20

Java虚拟机--Java发展史Java虚拟机

Java虚拟机 从今开始,笔者开始向大家讲解JAVA虚拟机的知识,有没有很兴奋!!!! 对于JAVA开发者来说,虚拟机再熟悉不过,每天的工作中都会接触,但是总有一种“近在眼前,却又远在天边”的感觉。...这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK),至今依旧沿用。在JDK1.0版本中,主要技术包括:Java虚拟机、AWT等。...简单的说,JDK是用于支持Java程序开发的最小环境;而JRE,则是支持Java程序运行的最小环境。所以很明显,JRE是JDK的子集; ?...image 可以看出,JRE作为运行最小环境,只需要虚拟机和JavaSE API,即可将字节码运行起来; 而JDK作为开发最小环境,则需要向javac之类的工具,来进行代码编译等操作,另外还包括一些Java...也就是说JRE只能负责运行,JDK则全活!!!

1.4K70

Java基础(3)-JDK、JRE、JVM区别与联系

JVM(Java Virtual Machine,Java虚拟机), 是JRE的一部分。它是整个Java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行Java字节码文件的虚拟计算机。...JRE 提供了库、Java 虚拟机(JVM)和其他组件,用于运行 Java 编程语言、小程序、应用程序。JRE的安装目录里面有两个文件夹bin和lib。...legal目录:用markdown写的法律文件,供人阅读的,类似于readme、license之类的文件 2.3 JVM JVM(Java Virtual Machine Java虚拟机),Java虚拟机...JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。要想在不同的操作系统上运行Java程序,就需要在不同操作系统上安装对应的JVM。...三、区别和联系 JDK=Java开发工具+JRE JRE=JVM+Java类库 JDK 用于开发,JRE 用于运行Java程序 ;如果只是运行Java程序,可以只安装JRE,无序安装JDK。

2.3K20

Java核心】JDK、JRE、 JVM的联系与区别

简述 简单来说: JDK 是开发 Java 程序所需的工具包,包含了 JRE,并且额外提供了开发工具和库。JREJava 的运行时环境,包含了JVM。JVM 是运行 Java 程序的虚拟机。...是什么 JDK、JRE 和 JVM 是与 Java 相关的三个重要术语,它们在 Java 开发和执行过程中扮演不同的角色,有着密切的联系: JVM(Java Virtual Machine,Java 虚拟机...JREJava Runtime Environment,Java 运行时环境):JREJava 应用程序的运行环境,包含了 JVM 和 Java 标准类库(Java API),它提供了 Java...JDK 针对开发人员和编写 Java 程序的环境,JRE 针对最终用户和运行 Java 程序的环境。 JDK 包含了 JRE,但是 JRE 没有包含 JDK 的开发工具部分。...JVM 是运行 Java 程序的虚拟机JRE 则是包含 JVM 和 Java 标准类库的运行时环境。 ----

35540

Java虚拟机--虚拟机内存区域Java虚拟机内存区域

Java虚拟机内存区域 Java程序在JVM虚拟机中运行,当我们一个类被加载到虚拟机中时,JVM会给该类分配具体的内存空间/内存地址,而这被分配的区域就是Java虚拟机运行时内存区域。...虚拟机开始启动,Java虚拟机通过类加载器加载xxx.class字节码文件,加载完毕之后(加载过程后续会讲到),再交由Java虚拟机的执行引擎进行实际的运行。...根据《Java虚拟机规范(Java SE 7版本)》的规定,Java虚拟机所管理的内存包括如下几个Java运行时候数据区域: ?...在《Java虚拟机规范(Java SE 7版本)》中,Java虚拟机栈可以被设计成固定大小或者随着程序的执行动态扩展和收缩的形态。...Java虚拟机堆 在Java虚拟机中,Java虚拟机堆是各个线程中共享的内存区域,也是我们Java程序中新建的对象数数组锁分配内存的区域。

2K80

Java虚拟机

scope=mdnice] 简述JVM内存模型 线程私有的运行时数据区: 程序计数器、Java 虚拟机栈、本地方法栈。 线程共享的运行时数据区:Java 堆、方法区。...简述虚拟机Java 虚拟机栈用来描述 Java 方法执行的内存模型。线程创建时就会分配一个栈空间,线程结束后栈空间被回收。...简述本地方法栈 本地方法栈与虚拟机栈作用相似,不同的是虚拟机栈为虚拟机执行 Java 方法服务,本地方法栈为本地方法服务。...可以将虚拟机栈看作普通的java函数对应的内存模型,本地方法栈看作由native关键词修饰的函数对应的内存模型。...这部分内存不是虚拟机管理,而是由操作系统来管理。 Java通过通过DriectByteBuffer对其进行操作,避免了在 Java 堆和 Native堆来回复制数据。

86600

Java虚拟机

一、概述 虚拟机的类加载机制 :Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制...虚拟机外部的 二进制字节流 就按照虚拟机所设定的格式 存储在方法区之中 了,方法区中的数据存储格式完全由虚拟机实现自行定义,《Java虚拟机规范》未规定此区域的具体数据结构。...Java虚拟机如果不检查输入的字节流,对其完全信任的话,很可能会因为载入了有错误或有恶意企图的字节码流而导致整个系统受攻击甚至崩溃,所以验证字节码是 **Java虚拟机保护自身** 的一项必要措施。...直到 初始化阶段 ,Java虚拟机才 真正开始执行类中编写的Java程序代码 ,将主导权移交给 应用程序 。...因此在Java虚拟机中第一个被执行的()方法的类型肯定是java.lang.Object。

60020

Java虚拟机

一、概述 虚拟机的类加载机制 :Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制...虚拟机外部的 二进制字节流 就按照虚拟机所设定的格式 存储在方法区之中 了,方法区中的数据存储格式完全由虚拟机实现自行定义,《Java虚拟机规范》未规定此区域的具体数据结构。...Java虚拟机如果不检查输入的字节流,对其完全信任的话,很可能会因为载入了有错误或有恶意企图的字节码流而导致整个系统受攻击甚至崩溃,所以验证字节码是 **Java虚拟机保护自身** 的一项必要措施。...直到 初始化阶段 ,Java虚拟机才 真正开始执行类中编写的Java程序代码 ,将主导权移交给 应用程序 。...因此在Java虚拟机中第一个被执行的()方法的类型肯定是java.lang.Object。

69300

java虚拟机

Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。...正因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。...Java 虚拟机使用该算法来判断对象是否可被回收,在 Java 中 GC Roots 一般包含以下内容: 虚拟机栈中局部变量表中引用的对象 本地方法栈中 JNI 中引用的对象 方法区中类静态属性引用的对象...,这些类由 Java 实现,独立于虚拟机外部,并且全都继承自抽象类 java.lang.ClassLoader。...从 Java 开发人员的角度看,类加载器可以划分得更细致一些: 启动类加载器(Bootstrap ClassLoader)此类加载器负责将存放在 \lib 目录中的,或者被 -Xbootclasspath

79820
领券