Java语言是一门通用的、面向对象的、支持并发的程序语言。全球从事Java相关开发的人员已经数以百万计。
本系列博客我们将以当前默认的主流虚拟机HotSpot 为例,详细介绍 Java虚拟机。以 JDK1.7 为主,同时介绍与 JDK1.8 的不同之处,通过Oracle官网以及各种文献进行整理,并加以验证,力求保证这块知识的正确性,完整性。
做java开发的几乎都知道jvm这个名词,那JVM是个什么东西呢?
虚拟机是一种抽象化的机器,可以执行抽象化的指令。一般分为:系统级虚拟机和程序级虚拟机。
1、一般把Java程序设计语言,java虚拟机,java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。
JDK 是提供给 Java 开发人员使用的,其中包含了 Java 的开发工具,也包括了 JRE,如编译工具(javac.exe),打包工具 (jar.exe)等。
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
虚拟机即:虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的 JVM只是一种用于计算设备的规范,广义来说相当于一个接口,而接口的实现可以不同,但都能起到JVM的作用 Java发展至今JVM也有过更新迭代,也有基于不同场景下使用的JVM
● JVM 是 Java Virtual Machine(Java虚拟机)的缩写,是 JRE 的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java 虚拟机 JVM 是属于 JRE 的,而现在我们安装 JDK 时也附带安装了 JRE (当然也可以单独安装JRE)。
从广义上讲,Clojure、JRuby、Groovy等运行与Java虚拟机上的语言机器相关的程序都属于Java技术体系中的一员,但是仅从传统意义上来看,Sun官方所定义的Java技术体系包括:
当我们写完一个Java源程序的时候,他是怎么被计算机运行的呢?本篇文章就来介绍下Java程序是如何运行的。
The Java Virtual Machine (JVM) is an abstract computing machine. The JVM is a program that looks like a machine to the programs written to execute in it. This way, Java programs are written to the same set of interfaces and libraries. Each JVM implementation for a specific operating system, translates the Java programming instructions into instructions and commands that run on the local operating system. This way, Java programs achieve platform independence 翻译一下: Java虚拟机(JVM)是一种抽象计算机器。JVM是一个程序,它看起来像是一台机器,用于编写并在其中执行的程序。通过这种方式,Java程序被写入同一组接口和库中。针对特定操作系统的每个JVM实现都将Java编程指令转换为在本地操作系统上运行的指令和命令。这样,Java程序就实现了平台独立性。
让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/:
如 果 仅 从 传 统 意 义 上 来 看, Sun 官 方 所 定 义 的 Java 技 术 体 系 包 括 以 下 几 个 组 成 部 分:
JRE是Java Runtime Environment的缩写,顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的,还有所有的Java类库的class文件,都在lib目录下,并且都打包成了jar。
(点击上方公众号,可快速关注) 来源:五月的仓颉 , www.cnblogs.com/xrq730/p/4826691.html 前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万Java开发人员 开发人员的头号选择 排名第一的部署平台 有30亿部移动电话运行Java 100%的蓝光盘播放器附带了Java 有50亿张Java卡在使用 1.25亿台TV设备运行Ja
是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
很多程序员已经写了很长一段时间java了,依然不明白JDK,JRE,JVM的区别。今天个人总结一下它们三者的关系、区别。
这些执行方式都离不开JRE ,也就是Java的运行环境。JRE仅包含运行Java程序的必须组件,包括Java虚拟机以及Java核心类库。Java程序员经常接触到的JDK同样包含JRE,并且还附带了一些开发、诊断工具
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK。
常用的DOS命令 dir(directory) : 列出当前目录下的文件以及文件夹 md(make directory) : 创建目录 rd(remove directory) : 删除目录 cd(change directory): 进入指定目录 cd.. : 退回到上一级目录 cd\: 退回到根目录 exit : 退出 dos 命令行 Java两大核心机制 Java虚拟机(Java Virtual Machine
Java是一种开发语言,核心特点:跨平台,面向对象。对于开发者来讲,Java基本等于**Jdk**。 Java由四方面组成:
电脑双系统,沙盒游戏双开,以这两个例子,我们可以引出今天需要学习的一个概念——虚拟机。
jps(Java Virtual Machine Process Status Tool)是JDK提供的一个可以列出正在运行的Java虚拟机的进程信息的命令行工具,它可以显示Java虚拟机进程的执行主类(Main Class,main()函数所在的类)名称、本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)等信息。另外,jps命令只能显示它有访问权限的Java进程的信息。
也就是说JDK包含了JRE,这一点我们可以证实,在安装JDK的目录下找到JRE的文件夹:
JDK与JRE 在安装的过程中各位可能注意到了JRE这个名词,下面我们来聊聊JDK和JRE的关系和区别。 JDK:它是Java开发运行环境,在程序员的电脑上当然要安装JDK; JRE:Java Runtime Environment它是Java运行环境,如果你不需要开发只需要运行Java程序,那么你可以安装JRE。例如程序员开发出的程序最终卖给了用户,用户不用开发,只需要运行程序,所以用户在电脑上安装JRE即可。 JDK包含了JRE。 JRE中包含虚拟机JVM JRE: Java Runtime Environment JDK:Java Development Kit JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。 如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。 JRE根据不同操作系统(如:windows,linux等)和不同JRE提供商(IBM,ORACLE等)有很多版本,最常用的是Oracle公司收购SUN公司的JRE版本。 简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。 JDK就是Java Development Kit JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。 如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下,俺发现事jdk/bin目录里比jre7/bin多了一套Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Jav a 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。
其中对于方法区,很多人更愿意称为:“永久代(Permanent Generation)”,不过本质上两者并不等价,仅仅是因为习惯使用HotSpot虚拟机的设计团队选择吧GC分代收集扩展至方法区,或者说使用永久代来实现方法区而已,这样HotSpot的垃圾收集器就可以像管理Java堆一样管理这部分内存,能够省去专门为方法区变编写内存管理代码的工作。不过对于其他虚拟机(如BEA JRockit、IBM J9等)来说并不存在永久代的概念 这是jdk1.8之前的内存模型,其中方法区和堆是是线程共享的,但是在jdk1.8之后 元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存
Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行。Java程序的运行需要Java虚拟机、Java API和Java Class文件的配合。Java虚拟机实例负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例就诞生了。当程序结束,这个虚拟机实例也就消亡。 Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。 正是因为它有针对不同平台的虚拟机,它号称的“一次编译,到处运行”的跨平台特性才能有所保障。
Java Development Kit(JDK)是Java编程语言的心脏,为开发者提供了一个完整的开发环境,用于构建、测试、运行和调试Java应用程序。
我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要把代码编译成CPU能识别的指令即可,也就是机器码.那为什么Java不直接像C++那样而需要在虚拟机中运行呢?他在虚拟机中又是如何运行的?接着往下看.
每个java开发同学不管是日常工作中还是面试里,都会遇到JDK、JVM和GC的问题。本文会从以下10个问题为切入点,带着大家一起全面了解一下JVM的方方面面。
对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式。
Java虚拟机 (JVM--Java Virtual Machine) 前言 对java虚拟机的介绍文章多如牛毛,写本文目的在于梳理一下,也方便以后翻来看看。 另外网上文章的图都挺丑的,本文90%的图都出于在下亲笔,如图有错误,请指出,定当立即更正 本文主要介绍一下Java虚拟机的抽象结构以及一些基础的概念 ---- 一、几个概念简介 1.JDK、JRE、JVM 有了JRE就能运行java程序,如果只是运行软件,装个JRE就行了。 我们一般说java8,java10都是指的JDK,是java开发者
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域。 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文件格式 Java API类库 第三方Java类库 可以把Java程序设计语言、Java虚拟机和Java API类库这三部分统称为JD
Java最重要的特点就平台独立,平台独立意味着可以在一个系统编译它然后在另一个系统使用它。
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也就是常常听到Java虚拟机。JDK是面向开发者的,JRE是面向使用JAVA程序的用户,上面只是简单的区别
Java代码有很多种不同的运行方式。比如说可以在开发工具中运行,可以双击执行jar文件运行,也可以在命令行中运行,甚至可以在网页。 这些执行方式都离不开JRE,Java运行时环境。
Java作为一门编程语言能够获得如此广泛的认可,除了它有结构严谨,面向对象的编程语言之外,它还具备一个非常突出的特性:一次编写,到处运行,即编写的程序可以摆脱硬件平台束缚,它提供了一种相对安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题。
Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。
前言:Java的简介和发展史有兴趣的可以去了解一下,这里不做探究。本节的主要内容如下,先来个导图镇楼。
JavaSE(Java Standard Edition): 标准版,定位在个人计算机上的应用——开发桌面应用(新手入门) JavaEE(Java Enterprise Edition): 企业版,定位在服务器端的应用——建议学习 JavaME(Java Micro Edition): 微型版,定位在消费性电子产品的应用上——不建议学习
来源 | cnblogs.com/wangjiming/p/10455993.html
大家好,又见面了,我是你们的朋友全栈君。 1.什么是jvm? (1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。 (2)jvm包含一
最终还是决定更加深入地学习下JVM,同时也用自己的理解详细地说明Java程序是如何运行的。
领取专属 10元无门槛券
手把手带您无忧上云