1.Java虚拟机
Java虚拟机(Java Virtual Machine,JVM)是软件模拟的计算机,它可以在任何处理器上(无论是在计算机中还是在其他电子设备中)安全兼容地执行保存在.class文件中的字节码。Java虚拟机的“机器码”保存在.class文件中,有时也可以称之为字节码文件。
Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。
Java虚拟机的建立需要针对不同的软硬件平台来实现,既要考虑处理器的型号,也要考虑操作系统的种类。由此在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上,在UNIX、Linux、Windows和部分实时操作系统上都可实现Java虚拟机。
2.无用内存自动回收机制
在程序的执行过程中,部分内存在使用过后就处于废弃状态,如果不及时进行回收,很有可能会导致内存泄漏,进而引发系统崩溃。在C++语言中是由程序员进行内存回收的,程序员需要在编写程序时把不再使用的对象内存释放掉,这种人为管理内存释放的方法往往由于程序员的疏忽而致使内存无法回收,同时也增加了程序员的工作量。而在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并自动进行回收,避免了内存的泄露,也减轻了程序员的工作量。
3.代码安全性检查机制
安全和方便总是相对矛盾的。Java编程语言的出现使得客户端计算机可以方便地从网络上上传或下载Java程序到本地计算机上运行,但是如何保证该Java程序不携带病毒或者没有其他危险目的呢?为了确保Java程序执行的安全性,Java语言通过Applet程序来控制非法程序的安全性,也就是有了它才确保Java语言的生存。
Java字节码的执行需要经过以下3个步骤:
(1)由类装载器(class loader)负责把类文件(.class文件)加载到Java虚拟机中。在此过程需要检验该类文件是否符合类文件规范。
(2)字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作,例如Applet程序中写本地计算机文件系统的操作。
(3)如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。
注意:
Java虚拟机采用“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间以外的内存。如果是Applet程序,还不允许访问客户端机器的文件系统。
Java的运行环境
无论哪种语言都需要有它特定的运行环境,也就是平台。Java语言同样不例外。但是如何理解Java程序与硬件环境无关呢?
几乎所有的语言都需要通过编译或者解释才可以被计算机执行,但是Java有一点不同,它同时需要这两个过程。其实,也正是因为这个原因才使Java这种语言具有了平台无关性。当完成一个Java源程序后,首先,通过Java翻译程序将它编译成一种叫做字节码的中间代码,然后再由Java平台的解释器将它转换成为机器语言来执行,这一平台的核心就是JVM。
Java的编译过程与其他的语言不同。像C++这样的语言,在编译时它是与计算机的硬件平台信息密不可分的。编译程序通过查表将所有指令的操作数和操作码等转换成内存的偏移量,即程序运行时的内存分配方式,目的是保证程序正常运行。而Java却是将指令转换成为一种.class的文件,这种文件不包含硬件的信息,需要执行时只要经过安装有JVM的机器进行解释,创建内存分配后再通过查表来确定一条指令所在的地址。这样就有效地保证了Java的可移植性和安全性。
Java平台具有这样的特性和它的结构有关。通常一个程序运行的平台是一个硬件或者软件运行的环境,目前比较流行的是Windows XP、Linux、Solaris和MacOS。Java的平台不太一样,它由两个部分组成,即JVM和应用程序设计接口。
1.JVM
JVM是Java平台的核心,为了让编译产生的字节码能更好地解释与执行,因此把JVM分成了6个部分:JVM解释器、指令系统、寄存器、栈、存储区和碎片回收区。
◆JVM解释器:即这个虚拟机处理字段码的CPU。
◆JVM指令系统:该系统与计算机很相似,一条指令由操作码和操作数两部分组成。操作码为8位二进制数,主要是为了说明一条指令的功能,操作数可以根据需要而定,JVM有多达256种不同的操作指令。
◆寄存器:JVM有自己的虚拟寄存器,这样就可以快速地与JVM的解释器进行数据交换。为了功能的需要,JVM设置了4个常用的32位寄存器:pc(程序计数器)、optop(操作数栈顶指针)、frame(当前执行环境指针)和vars(指向当前执行环境中第一个局部变量的指针)。
◆JVM栈:指令执行时数据和信息存储的场所和控制中心,它提供给JVM解释器运算所需要的信息。
◆存储区:JVM存储区用于存储编译过后的字节码等信息。
◆碎片回收区:JVM碎片回收是指将使用过的Java类的具体实例从内存进行回收,这就使得开发人员免去了自己编程控制内存的麻烦和危险。随着JVM的不断升级,其碎片回收的技术和算法也更加合理。JVM 1.4.1版后产生了一种叫分代收集技术,简单来说就是利用对象在程序中生存的时间划分成代,以此为标准进行碎片回收。
2.Java应用程序设计接口
Java Application Programming Interface简称Java API,其中文名为Java应用程序设计接口。它是一个软件集合,其中有许多开发时所需要的控件,可以用它来辅助开发。
Java API和JVM构成了Java运行的基本环境,这两种软件整合在一起处于计算机之上,通过这两种软件,Java平台把一个Java应用程序从硬件系统分离开,从而很好地保证了程序的独立性。为了更好地适应开发的需要,Java的设计者们提供了3种版本的Java平台:Java 2 Micro Edition (J2ME )、Java 2 Standard Edition(J2SE)和 Java 2 Enterprise Edition (J2EE),每一种版本都提供了丰富的开发工具以适应不同的开发需要。
分享到:
相关推荐
Java工作原理.md
### Java GC工作原理详解 #### 一、引言 在现代软件开发中,Java作为一种广泛使用的编程语言,其强大的功能和高效性深受开发者喜爱。Java的自动内存管理机制是其一大亮点,尤其体现在垃圾收集(Garbage Collection...
Java虚拟机工作原理详解 Java虚拟机工作原理详解是 Java 程序执行的核心组件之一。了解 Java 虚拟机的工作原理对 Java 开发人员来说非常重要。本文将详细介绍 Java 虚拟机工作原理的详细过程和类加载器的工作机理。...
Java 编译原理 Java 编译原理是 Java 语言的核心机制之一,它决定了 Java 程序的执行方式和类文件的加载机制。下面我们将对 Java 编译原理进行详细的解释。 一、动态加载机制 Java 的动态加载机制是指 Java ...
工作原理的任何问题,尤其是在求职面试中。 通过组合多个规则,您可以回答许多 Java 问题 本书只适合已经使用过Java的人 随意更正任何规则或建议任何需要的更正。 规则(直到 Java 7) 最终的 :prohibited: 目的:...
Java监听器的实现和原理详解 Java监听器是一种非常重要的设计模式,在Java中广泛应用于事件驱动编程。监听器模式的主要思想是将事件源和事件处理器分离,使得事件源可以独立于事件处理器,提高了系统的灵活性和可...
总的来说,理解Java的GC工作原理对于优化代码性能和解决内存问题至关重要。通过阅读源码、使用分析工具和调整JVM参数,Java程序员能够更深入地掌握GC,从而编写出更加高效和稳定的程序。同时,学习如Apache Mina这样...
本文将深入探讨Java Web服务器的工作原理,特别是Tomcat的内部机制。 首先,理解Java Web服务器的基本概念至关重要。Java Web服务器是用于处理HTTP请求并返回响应的软件,它能执行Java Servlets和JavaServer Pages ...
### Java运行原理与Java虚拟机 #### 一、Java运行原理概述 Java作为一种跨平台的编程语言,其独特之处在于它的编译和解释过程。Java程序的执行涉及到两个主要步骤:首先是编译阶段,其次是解释执行阶段。 1. **...
要了解JVM的原理,首先需要了解类加载器的工作原理。 类加载器(Class Loader)是JVM中的一个重要组件,负责将Java字节码文件加载到JVM内存中。类加载器可以分为四种:Bootstrap Class Loader、Extension Class ...
通过本文对CAS原理的深入分析,我们不仅了解了CAS的基本概念和工作原理,还探讨了其在Java中的具体实现方式及其实现过程中的关键细节。此外,我们也讨论了CAS的一些优缺点。总体而言,CAS作为一种高效的无锁编程手段...
在深入探讨基于Java的Web服务器工作原理之前,我们需要理解Web服务器的基本概念和Java技术栈的关键组件。 首先,Web服务器是一种软件,其主要任务是接收来自客户端(如浏览器)的HTTP请求,处理这些请求,然后向...
java spring 原理 简单易懂的介绍了spring 的工作原理!
Java智能卡原理与应用开发是智能卡技术领域中的一个重要主题,尤其对于Java开发者而言,它涉及到如何使用Java Card技术进行安全、高效的嵌入式系统设计。Java Card是一种在微小的智能卡上运行的Java平台,它使得智能...
以下是关于Java虚拟机工作原理的详细解释: 1. Java体系结构: - **程序设计语言**:Java编程语言定义了语法和语义,使得开发者能够编写源代码。 - **字节码文件格式**:Java源代码经过编译后生成的字节码文件,...
通过完善词法分析器以支持带符号的常数,学生可以深入理解编译器的工作原理,增强处理文本解析和模式匹配问题的能力。对于Java开发者来说,这样的实践也对提升代码质量和理解底层运作机制大有裨益。
Java 类加载机制是Java技术体系的核心组成部分,它关乎到程序运行时如何找到并加载所需的类。本文主要解析Java类加载的原理,分为...通过深入学习,开发者能够更好地掌握Java虚拟机的工作原理,提升对Java平台的理解。
文档"Java规则引擎工作原理及其应用.docx"可能详细阐述了以下几点: 1. 规则引擎概述:首先,文档可能会介绍规则引擎的基本概念,包括它的起源、目标以及如何在业务系统中发挥作用。它可能还会对比传统的硬编码业务...