`
ydcworld
  • 浏览: 23708 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

深入Java,初探JVM一

    博客分类:
  • java
 
阅读更多
JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。

可以说,Java虚拟机(JVM)是Java语言的基础。它是Java技术的重要组成部分。Java虚拟机(JVM)是一个抽象的计算机,和实际的计算机一样,它具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。Java解释器负责将字节代码翻译成特定机器的机器代码

JAVA和JVM运行的原理

1.Java语言运行的过程

Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。

Java语言运行的过程

也相当与

Java语言运行的过程

注:JVM(java虚拟机)包括解释器,不同的JDK虚拟机是相同的,解释器不同。

2.JVM:

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。

java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

JVM执行程序的过程 :

I.加载。class文件

II.管理并分配内存

III.执行垃圾收集

JRE(java运行时环境)由JVM构造的java程序的运行环境

分享到:
评论

相关推荐

    初探JVM内存区域

    【初探JVM内存区域】 Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java应用程序提供了运行环境。理解JVM内存区域对于优化Java应用性能至关重要。本篇文章将详细探讨JVM中的主要内存区域及其作用。 1. **...

    JVM初探内存分配GC原理与垃圾收集器共16页.pdf.z

    深入理解JVM内存分配、垃圾收集(Garbage Collection, GC)原理以及垃圾收集器的工作方式对于优化程序性能至关重要。 首先,我们要了解JVM内存结构。在Java中,内存主要分为以下几个区域: 1. **堆内存(Heap)**...

    eclipse 下实现java JNI 初探

    JNI是一种规范,它定义了Java虚拟机(JVM)如何与本地代码(如C和C++)交互。通过JNI,Java开发者可以编写混合模式的应用程序,结合Java的跨平台性和本地代码的高效性。 2. **环境准备** - **安装JDK**:首先确保...

    计算机软件开发中JAVA编程语言及其实际应用.pdf

    更重要的是,Java语言编写的应用可以在任何安装了Java虚拟机(JVM)的平台上运行,这使得它成为跨平台开发的理想选择。Java虚拟机的跨平台特性使得Java开发的应用能够在不同的操作系统和硬件环境下无缝迁移和部署,...

    初探ASM

    总结来说,ASM是Java字节码操作的重要工具,对于深入理解JVM的工作原理,以及进行动态代码生成、字节码级别的调试和优化等高级技术,都有重要的作用。通过学习和实践ASM,开发者可以更灵活地控制程序的行为,实现...

    HelloWorld的javap -verbose HelloWorld 字节码初探

    标题中的“HelloWorld的javap -verbose HelloWorld”指的是在Java编程环境中,通过`javap`这个命令行工具来反汇编一个简单的“HelloWorld”程序,以深入理解字节码的工作原理。`javap`是Java Platform Debugger ...

    一些自己收集的java学习资料

    1. **JAVA教程 第五讲 AWT图形用户界面设计.doc** AWT(Abstract Window Toolkit)是Java早期的GUI(图形用户界面)库,提供了创建窗口、按钮、文本框等基本组件的能力。学习AWT,你需要理解事件处理模型,如何布局...

    javaLauncher源码-Doughnut:我第一次正式尝试编程(Java-JDK8.0-)。这是一个基本但完全可自定义的琐事游戏。它记录

    在Java应用程序启动时,JVM(Java虚拟机)需要一个启动器来加载类和执行程序。在Doughnut项目中,`javaLauncher`可能是这个核心组件,负责解析命令行参数、初始化环境、加载游戏主类并执行游戏逻辑。这个启动器可能...

    My-First-Java-Program:弓

    【Java编程初探:创建与运行“我的第一个Java程序”】 在编程的世界里,迈出第一步总是最激动人心的。在这个名为"My-First-Java-Program"的项目中,我们将一起探索如何编写并运行一个简单的Java程序。这个项目的...

    jdk1.7.0_55-part1.zip

    《Java开发工具包JDK 1.7.0_55初探》 JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用程序的重要工具集,它包含了编译器、运行环境、调试器以及各种实用工具。在Java编程的世界里,JDK扮演着不可或...

    library.zip

    《Java Web图书馆课程设计——基于Eclipse、MySQL与Tomcat的初探》 在IT行业中,Java Web技术作为企业级应用的重要开发平台,一直是程序员学习的热点。本课程设计项目"library.zip"就是一个很好的入门实践,它利用...

    初探Druid连接池之三——进入内置监控页面(连接数据源后)

    这篇博客“初探Druid连接池之三——进入内置监控页面(连接数据源后)”将引导我们深入了解如何在实际应用中启用并使用Druid的监控功能。 首先,Druid连接池的核心优势在于其对数据库连接的精细化管理,包括连接...

    HelloWorld

    《HelloWorld——Java编程初探》 在编程世界中,“Hello, World!”是最常见的入门程序,它标志着一段新的编程旅程的开始。对于Java语言来说,"HelloWorld"同样扮演着这样的角色,它帮助初学者理解如何在Java环境中...

    hello-world:实践

    【Java编程初探:"Hello, World!" 实践】 在编程的世界里,"Hello, World!" 是每一个新手程序员迈出的第一步。它是一个简单的程序,旨在介绍基础的编程语法和环境设置。在这个实践中,我们将深入探讨Java语言,通过...

    PrimaAplicatieJava

    《Java编程初探:构建你的第一个应用程序》 Java是一种广泛使用的高级编程语言,以其跨平台、面向对象和安全性强的特点而备受青睐。"PrimaAplicatieJava"(意为“Java的第一个应用”)旨在帮助初学者理解Java编程的...

    SuperTreasureChest:我做的第一款游戏!!!

    通过Java虚拟机(JVM),用户可以在任何安装了Java环境的设备上运行这个游戏,体现了Java的“一次编写,到处运行”特性。 总的来说,"SuperTreasureChest"是一款展示Java游戏开发基础的实例,它的设计涵盖了游戏...

    Home-Hunters

    它的语法简洁明了,强调“一次编写,到处运行”的理念,这得益于其JVM(Java虚拟机)的运行环境。在"家庭猎人"项目中,我们可以看到Java类、对象、接口、包等基本元素的运用,这些都是理解Java程序结构的关键。 接...

    first:2015 年 IT 学校练习

    【标题】2015年IT学校练习:Java编程初探 在2015年的IT教育领域,Java编程语言以其强大的跨平台能力和丰富的库支持,成为许多学习者入门编程的首选。本练习旨在帮助学生熟悉Java语言的基础概念,掌握编程的基本技能...

    MyTweet:一个简单的推特客户端,仅供练习

    本文将深入探讨一款名为"MyTweet"的简单推特客户端,它是使用Java语言开发的,旨在帮助开发者进行实践与学习。这个项目虽然功能相对基础,但它涵盖了诸多Java编程的基础知识,对于初学者来说,无疑是一份宝贵的实践...

    MyFirstCalculator:必须做,因为有时我不做我的工作!

    "MyFirstCalculator"是一个典型的个人实践项目,通过这个项目,开发者可以深入理解Java语言的基本特性,并学习如何构建一个简单的计算器应用。本文将详细解析该项目,帮助读者掌握相关知识点。 首先,我们来了解...

Global site tag (gtag.js) - Google Analytics