java 虚拟机是什么?

      java虚拟机是一个将字节码指令映射为对应物理操作系统指令的程序。

      java程序的运行需要事先安装 jdk,而在jdk内部的jre中其核心就是 jvm。java源码是无法运行的,通过javac编译后的class文件也是无法直接运行在操作系统上的。操作系统仅识别遵守其cpu指令集规范的机器码。而为了使java程序得以运行,jvm在其中充当了这样的一个 翻译官的角色。

其本质就是用 c/c++ 编写的一个可运行的程序。对应不同版本的 操作系统 jvm都有其特有的实现版本。

java 虚拟机有什么意义?

    为了支持 java语言的跨平台特性。

java字节码 是一种介于 源码 与 机器码之间的一种程序指令的描述。 人 与 计算机 都无法识别。但jvm却可以识别,并翻译为对应的机器码。

从而 我们只需要在不同的 操作系统上安装 对应版本的虚拟机 即可以实现 仅编译一次的 字节码文件 运行在 不同版本的操作系统上。实现了 sun公司 1995年的承诺 :"一次编译,到处运行"

同时 jvm还为我们封装了很多实现细节,java语言本身的简单性,是建立在 jvm高度封装了开发中绝大多数难点的基础上。

列如: 对象空间的分配与回收,对内存的管理,线程的同步与调度,并发编程复杂的实现细节,网络编程,与IO处理。

jvm 在简化开发以及实现跨平台特性的前提是一java程序的运行性能为代价的,jvm对字节码的执行系统进行了逻辑上的抽象,是基于内存中虚拟机栈的执行。

这就要比传统的编译型语言基于cpu中指令寄存器的执行速度慢了很多。

而随着java虚拟机的不断发展 实现了各种优化技术,以热点探测技术为主的提升字节码执行速度的优化技术,使得java程序在某些情况下并不比c/c++慢多少。

同时  一些编译器字节码级别的优化大大的简化了 java语言的语法,泛型,枚举还有一些语法糖的引入也增加了java语言本身的可读性。

而随着java虚拟机的不断发展,早已经不再是局限与java语言本身,jvm已经不再仅仅支持java语言,列如Scala.

jvm 不仅仅实现了 跨平台更是实现了跨语言。

java虚拟机概述的更多相关文章

  1. Java 虚拟机概述

    虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.Java虚拟机屏蔽了与具体操作系统平 ...

  2. Java虚拟机(一)结构原理与运行时数据区域

    我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文 ...

  3. Java虚拟机 - 结构原理与运行时数据区域

    http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关 ...

  4. 图灵学院笔记-java虚拟机底层原理

    Table of Contents generated with DocToc 一.java虚拟机概述 二.栈内存解析 2.1 概述 2.2 栈帧内部结构 2.2.1 我们来解析一下compute() ...

  5. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  6. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

  7. Java虚拟机(JVM)概述

    JVM(Java虚拟机)是一个抽象的计算模型.就如同一台真实的机器,它有自己的指令集和执行引擎,可以在运行时操控内存区域.目的是为构建在其上运行的应用程序提供一个运行环境.JVM可以解读指令代码并与底 ...

  8. [转帖]Java虚拟机(JVM)体系结构概述及各种性能参数优化总结

    Java虚拟机(JVM)体系结构概述及各种性能参数优化总结 2014年09月11日 23:05:27 zhongwen7710 阅读数 1437 标签: JVM调优jvm 更多 个人分类: Java知 ...

  9. 深入理解Java虚拟机 - 垃圾收集概述

    首先需要澄清的是,垃圾收集(GC)的历史远比Java要久远,当我们意识到手动管理内存所带来的麻烦时,懒惰的天性推动先驱们寻找更为简单.易用.关键是傻瓜式的内存管理技术.GC技术起源于1960年诞生于M ...

随机推荐

  1. WPF 只允许打开一个实例

    我们有时候只希望我们的程序只打开一个实例,也就是我们的软件只有一次被打开. 那么我们可以通过一个办法知道,在这个软件打开前是不是打开过一个,还没关闭.也就是是否存在另一个程序在运行. 下面是一个简单方 ...

  2. STM32F10XX存储器细节

    >> STM32F10XX系统架构 >>  程序存储器.数据存储器.寄存器和输入输出端口被组织在同一个4GB的线性地址空间内. >>  数据字节以小端格式存放在存储 ...

  3. javascript入门知识点总结(一)

    学了几天javascript,现总结一下原生javascript的基本知识点. 一.javascript基本知识 变量 定义: var a = 123; var b = 'abc'; //连写 var ...

  4. Python 爬虫:把廖雪峰教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天尝试写一个爬虫,将廖雪峰老师的 ...

  5. 基于Spring、SpringMVC、MyBatis、Druid、Shrio构建web系统

    源码下载地址:https://github.com/shuaijunlan/Autumn-Framework 在线Demo:http://autumn.shuaijunlan.cn 项目介绍 Autu ...

  6. Java8 函数式编程详解

    Java8 函数式编程详解 Author:Dorae Date:2017年11月1日23:03:26 转载请注明出处 说起Java8,可能很多人都已经知道其最大的改进,就是引入了Lambda表达式与S ...

  7. Leetcode题解(21)

    62. Unique Paths 题目 分析: 机器人一共要走m+n-2步,现在举个例子类比,有一个m+n-2位的二进制数,现在要在其中的m位填0,其余各位填1,一共有C(m+n-2,m-1)种可能, ...

  8. Windows环境下多线程编程原理与应用读书笔记(3)————Windows环境中的多线程实现(3)

    纤程 纤程(fiber): 相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber显示至另一合作纤程,以实现合作纤程之间的协同.线程是在Wi ...

  9. Exclusive-OR(带权并查集)

    Exclusive-OR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  10. Hawk-and-Chicken

    Hawk-and-Chicken Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...