首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

Java虚拟机 从今开始,笔者开始向大家讲解JAVA虚拟机的知识,有没有很兴奋!!!! 对于JAVA开发者来说,虚拟机再熟悉不过,每天的工作中都会接触,但是总有一种“近在眼前,却又远在天边”的感觉。...既然学习虚拟机,那么关于Java的相关历史还是有必要去了解的,在本章节中,笔者将会先介绍Java的发展历史,再说说Java虚拟机的发展历史! 接下里,就让我们开始第一章节的学习吧。...Java发展史 Java编程语言从诞生到现在已经二十年多年,现已发展成为计算机史上影响深远的编程语言之一,开源/跨平台是其最大的特征,也正是因为此,Java不断地吸引世界上众多优秀程序员来进行学习。...相比于最早的JDK1.0来说,现在的Java已经成为了世界上最受欢迎的编程语言之一,并且还是使用者最多的编程语言。想必,在20多年前,谁也无法预想到如今的场景。 ?...,这就是Java语言的前身。

1.5K70

聊一聊Java语言的跨平台性与Java虚拟机

图片Java语言具有跨平台的特性,它是通过Java虚拟机(JVM)来实现的。...GraalVM:GraalVM是一种通用的虚拟机,支持多种语言,包括Java、JavaScript、Python和Ruby等。它使用即时编译器和垃圾收集器,提供高性能和低内存占用。...以上是一些常见的Java虚拟机家族,每个家族都有其特定的优点和适用场景,开发者可以根据自己的需求选择合适的虚拟机。...为了实现这一目标,Java采用了字节码和虚拟机的方式,将代码编译成字节码,然后在不同平台上通过虚拟机执行。...不断完善语言特性:Java语言本身在不断完善和演进,引入了诸如泛型、Lambda表达式、函数式编程等特性,以提高开发效率和代码可读性。

66741
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Kotlin】Kotlin 语言简介 ( Kotlin 语言发展 | Kotlin 语言Java 虚拟机 | Java 与 Kotlin 联系 | Kotlin 跨平台特性 )

    文章目录 一、Kotlin 语言发展 二、Kotlin 语言Java 虚拟机 三、Java 与 Kotlin 联系 四、Kotlin 跨平台特性 一、Kotlin 语言发展 ---- Kotlin...、Kotlin 语言Java 虚拟机 ---- Kotlin 语言 可以在 JVM 上运行 , 目前有 4 种语言可以运行在 JVM 之上 : Java Kotlin Scala Groovy 上述...4 种语言 , 编译成 字节码 文件后 , 可以运行在 JVM 上 ; 只要 上述几种语言 编译出的文件 符合 字节码文件格式要求 , 就可以在 Java 虚拟机上运行 ; 这些语言 编译成的字节码文件...Java 的基础上 , 添加了很多 高级特性 ; 四、Kotlin 跨平台特性 ---- Kotlin 语言可以 编译成 字节码 文件 , 在 Java 虚拟机上运行 , 同时在 Windows ,...Linux , Mac 等平台上都有 JVM , 因此借助 JVM , Kotlin 语言具有跨平台特性 ; Kotlin 语言还可以 脱离 Java 虚拟机 , 直接编译成 Windows , Linux

    1.3K10

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

    Java虚拟机内存区域 Java程序在JVM虚拟机中运行,当我们一个类被加载到虚拟机中时,JVM会给该类分配具体的内存空间/内存地址,而这被分配的区域就是Java虚拟机运行时内存区域。...虚拟机开始启动,Java虚拟机通过类加载器加载xxx.class字节码文件,加载完毕之后(加载过程后续会讲到),再交由Java虚拟机的执行引擎进行实际的运行。...根据《Java虚拟机规范(Java SE 7版本)》的规定,Java虚拟机所管理的内存包括如下几个Java运行时候数据区域: ?...Java虚拟机堆 在Java虚拟机中,Java虚拟机堆是各个线程中共享的内存区域,也是我们Java程序中新建的对象数数组锁分配内存的区域。...字面量就是我们java语言层面上的概念,如文本字符串、声明为final的常量值等。而符号引用包含了“类和接口的全限定类名”、“字段的名称和描述符”、“方法的名称和描述符”。 ?

    2.1K80

    Java虚拟机

    一、概述 虚拟机的类加载机制 :Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制...与那些在 编译时需要进行连接 的语言不同 在Java语言里面,类型的加载、连接和初始化过程都是在 程序运行期间完成的 Java天生可以动态扩展的语言特性就是依赖 运行期动态加载 和 动态连接 这个特点实现的...语言的运行时绑定特性(也称为动态绑定或晚期绑定)。...(包含main()方法的那个类),虚拟机会先初始化这个主类 当使用JDK 7新加入的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果为REF_getStatic...、操作字节流了 元数据验证 : 对字节码描述的信息进行语义分析 ,以保证其描述的信息符合《Java语言规范》的要求 主要目的 是对类的元数据信息进行语义校验,保证不存在与《Java语言规范》定义相悖的元数据信息

    63220

    Java虚拟机

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

    89500

    Java虚拟机

    1、Java虚拟机是什么 “Java虚拟机“可以指三种不同的东西 抽象规范 一个具体的实现 一个运行中的虚拟机实例 当运行一个Java程序的同时,也就是在运行一个Java虚拟机实例 2、Java虚拟机的生命周期...当启动一个Java程序时,一个虚拟机实例也就诞生了,当该程序关闭退出时,这个虚拟机实例也就随之消亡。...在java虚拟机内部有两种线程:守护线程和非守护线程。当该程序中所有的非守护线程都终止时,虚拟机实例将自动退出。 3、Java虚拟机的体系结构 ?...一个虚拟机实例的行为是分别按照子系统、内存区、数据类型以及指令这几个术语来描述的。 3.1、数据类型 ? Java语言中所有的基本类型同样也都是Java虚拟机中的基本类型。...3.6Java栈 每当启动一个线程时,Java虚拟机都会为它分配一个Java栈,Java栈也帧为单位保存线程的运行状态,虚拟机只会直接对Java栈执行两种操作:以帧为单位的压栈和出栈。

    1.2K100

    Java虚拟机

    一、概述 虚拟机的类加载机制 :Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制...与那些在 编译时需要进行连接 的语言不同 在Java语言里面,类型的加载、连接和初始化过程都是在 程序运行期间完成的 Java天生可以动态扩展的语言特性就是依赖 运行期动态加载 和 动态连接 这个特点实现的...语言的运行时绑定特性(也称为动态绑定或晚期绑定)。...(包含main()方法的那个类),虚拟机会先初始化这个主类 当使用JDK 7新加入的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果为REF_getStatic...、操作字节流了 元数据验证 : 对字节码描述的信息进行语义分析 ,以保证其描述的信息符合《Java语言规范》的要求 主要目的 是对类的元数据信息进行语义校验,保证不存在与《Java语言规范》定义相悖的元数据信息

    70800

    java虚拟机

    Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。...本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。 堆 所有对象都在这里分配内存,是垃圾收集的主要区域(”GC 堆”)。...正因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。...当虚拟机启动时,用户需要指定一个要执行的主类(包含 main() 方法的那个类),虚拟机会先初始化这个主类; 当使用 JDK 1.7 的动态语言支持时,如果一个 java.lang.invoke.MethodHandle...,这些类由 Java 实现,独立于虚拟机外部,并且全都继承自抽象类 java.lang.ClassLoader。

    81120

    Java虚拟机和Dalvik虚拟机的区别java虚拟机和Dalvik虚拟机的区别

    很多人认为Dalvik虚拟机是一个Java虚拟机,因为Android的编程语言恰恰就是Java语言。...但是这种说法并不准确,因为Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容;同时还要两个明显的不同: Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式...Java语言进行编程,但是在编译成CLASS文件后,还会通过一个工具(dx)将应用所有的 CLASS文件转换成一个DEX文件,而后Dalvik虚拟机会从其中读取指令和数据。...虚拟机和Dalvik虚拟机的区别: java虚拟机 Dalvik虚拟机 java虚拟机基于栈。 ...基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多 dalvik虚拟机是基于寄存器的 java虚拟机运行的是java字节码。

    2.5K90

    Java 虚拟机Java内存模型

    文章收录地址:Java-Bang 专注于系统架构、高可用、高性能、高并发类技术分享 JVM 虚拟机.jpg 我们先来看一个反常识的例子。...在多线程环境下,假设这两个方法分别跑在两个不同的线程之上,如果 Java 虚拟机在执行了任一方法的第一条赋值语句之后便切换线程,那么最终结果将可能出现(0,0)的情况。...除上述三种情况之外,Java 语言规范第 17.4 小节 [1] 还介绍了一种看似不可能的情况(1,2)。 造成这一情况的原因有三个,分别为即时编译器的重排序,处理器的乱序执行,以及内存系统的重排序。...而且,Java 语言规范将其归咎于应用程序没有作出恰当的同步操作。...实际上,在解锁时,Java 虚拟机同样需要强制刷新缓存,使得当前线程所修改的内存对其他线程可见。 需要注意的是,锁操作的 happens-before 规则的关键字是同一把锁。

    1.6K30

    Java 虚拟机:什么是 Java

    OK,这么牛逼的背后,我们Java开发人员有想过每天和我们朝夕相处的Java到底是什么呢?当然,很多人脑海里第一反应一定是,Java不就是一门编程语言吗,咱们每天写代码的语言啊。...我们对这张图做一个归纳,用我们的语言简单地总结一下什么是JDK和JRE: 1、JDK(Java Development Kit),是用于支持Java程序开发的最小环境,基本上Java程序设计语言Java...为什么Java可以实现所谓的“一次编写,到处运行”,主要是因为虚拟机的存在。Java虚拟机负责Java程序设计语言的安全特性和平台无关性。...Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译器只需要生成在Java虚拟机上运行的字节码,就可以在多种平台上不加修改地运行。...要多提一句,我们现在说的Java虚拟机基本上都是JDK自带的虚拟机HotSpot,这款虚拟机也是目前商用虚拟中市场份额最大的一款虚拟机,可以通过在命令行程序中输入“java -version”来查看。

    1.6K40

    Java】基础04:Java虚拟机

    电脑双系统,沙盒游戏双开,以这两个例子,我们可以引出今天需要学习的一个概念——虚拟机。 当然它们之间还是有着一定的区别的,这次不展开讲述,随着今后的学习,我会将其做一个整理。...若是初次接触虚拟机这个概念,就可以按照上述两个例子来理解,毕竟他们在作用上是有着一定的相似度的。 虚拟机是虚拟出来的计算机,使用虚拟机软件可以在自己的计算机上虚拟出多个计算机 。...一、JVM(Java Virtual Machine ) JVM就是Java虚拟机,它是运行所有Java程序的假想计算机,是Java程序的运行环境。 这是Java 最具吸引力的特性之一,跨平台特性。...当然有一点需要注意: Java虚拟机本身不具备跨平台功能的,每个操作系统需要下载对应的虚拟机,用Java编写的任何程序才能在任何平台上都能运行,不用做修改。...JVM就是上面说到的Java虚拟机,那什么是核心类库? Java自带很多实用的包,这些包中定义了很多类库,可以很方便地进行代码重用 。

    69030

    java解释器虚拟机-Java代码如何运行在Java虚拟机

    我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要把代码编译成...CPU能识别的指令即可,也就是机器码.那为什么Java不直接像C++那样而需要在虚拟机中运行呢?...++代码编译器重新编译一遍才可以.Java一开始就意识到需要跨平台运行,所以Java设计了虚拟机,先将Java代码编译成字节码(class文件),这是虚拟机能够识别的指令,再由虚拟机内部将字节码翻译成机器码...Java虚拟机如何运行Java字节码   我们JDK所用的虚拟机名为虚拟机java解释器虚拟机,他会将所有class文件加载进来java解释器虚拟机,加载后的Java类会被放置在方法区,后面运行时会执行其中的代码....Java虚拟机会在内存中划分出几块,包括程序计数器,本地方法栈,Java虚拟机栈,堆以及方法区.

    57030

    java虚拟机(JVM)

    java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。...Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。...刚入门java的时候都是从java se学起的 1.2.1 Java语言的三种技术架构 J2EE(Java 2 Platform Enterprise Edition)企业版 是为开发企业环境下的应用程序提供的一套解决方案...Java5.0版本后,更名为JAVAEE JAVASE JAVAME Java语言的特点:跨平台性 什么是跨平台性? 通过Java语言编写的应用程序在不同的系统平台上都可 以运行。 原理是什么?...Java语言的特点:跨平台性(图解) ? 因为有了JVM,所以同一个Java程序在三个不同的操作系统中都 可以执行。这样就实现了 Java程序的跨平台性。也称为Java具有 良好的可移植性。

    44310

    Java虚拟机简介

    ● JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 ● Java虚拟机实例负责运行一个Java程序。...● 作为一种编程语言虚拟机,实际上不只是专用于Java语言,只要生成的编译文件匹配JVM对载入编译文件格式要求,任何语言都可以由JVM编译运行。...● Java虚拟机Java语言并没有必然的联系,他只与特定的二进制文件格式—Class文件格式所关联,Class文件中包含了Java虚拟机指令集(或者称为字节码,Bytecodes)和符号表,还有一些其他辅助信息...1、跨平台性 Java 语言最重要的特点就是跨平台运行,使用 JVM 就是为了支持与操作系统无关,实现跨平台。...JVM至关重要,正是因为它有针对不同平台的虚拟机,其向上屏蔽了操作系统的差异,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

    43640

    Java虚拟机:什么是Java

    OK,这么牛逼的背后,我们Java开发人员有想过每天和我们朝夕相处的Java到底是什么呢?当然,很多人脑海里第一反应一定是,Java不就是一门编程语言吗,咱们每天写代码的语言啊。...我们对这张图做一个归纳,用我们的语言简单地总结一下什么是JDK和JRE: 1、JDK(Java Development Kit),是用于支持Java程序开发的最小环境,基本上Java程序设计语言Java...为什么Java可以实现所谓的“一次编写,到处运行”,主要是因为虚拟机的存在。Java虚拟机负责Java程序设计语言的安全特性和平台无关性。...Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译器只需要生成在Java虚拟机上运行的字节码,就可以在多种平台上不加修改地运行。...要多提一句,我们现在说的Java虚拟机基本上都是JDK自带的虚拟机HotSpot,这款虚拟机也是目前商用虚拟中市场份额最大的一款虚拟机,可以通过在命令行程序中输入“java -version”来查看:

    92220

    JAVA虚拟机了解

    1.走进JAVA 1.JDK(Java Developmen Kit):将Java程序设计语言,Java虚拟机Java API类库这三部分统称为JDK. 2.JRE(Java Runtime Environment...):把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE. 2.JAVA内存区域与内存溢出异常 先放一张jvm运行时数据区分配情况图 ?...,这种分配方式称为指针碰撞(Bump the pointer);如果Java堆中的内存并不是规整的,已使用内存和空闲的内存相互交错,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象...jps:虚拟机进程状况工具 jstat:虚拟机统计信息监视工具 jinfo:Java配置信息工具(实时地查看和调整虚拟机各项参数) jmap:Java内存映像工具 jhat:虚拟机堆转储快照分析工具...jstack:Java堆栈跟踪工具 JConsole和VisualVM(可视化工具) 7.虚拟机执行子系统

    73320
    领券