当前位置:首页 > 开发 > IT生活 > 正文

《深入Java虚拟机》_Java体系结构

发表于: 2011-07-21   作者:白粥若水   来源:转载   浏览:
摘要: Java体系结构:   当程序员编写和运行一个Java程序时,会同时体验到四种独立但相关的技术。 一、用Java编程语言编写源代码 二、将之编译成Java Class文件 三、在Java虚拟机(JVM)上运行Class文件 四、当编写程序时,通过调用类(这些类实现了Java API)中的方法来访问系统资源(比如I/O)。运行程序时,通过调用Java Class文件中实现Java

Java体系结构:

 

当程序员编写和运行一个Java程序时,会同时体验到四种独立但相关的技术。
一、用Java编程语言编写源代码
二、将之编译成Java Class文件
三、在Java虚拟机(JVM)上运行Class文件
四、当编写程序时,通过调用类(这些类实现了Java API)中的方法来访问系统资源(比如I/O)。运行程序时,通过调用Java Class文件中实现Java API的方法来满足程序的Java API调用

 

 

从客户的角度上来看,JVM和JavaAPI组成了他所需要的“平台”——所有的Java程序都可以在其上运行。

 

一、虚拟机JVM

很容易看出,Java技术的核心之一就是Java虚拟机,而它也是Java面向网络的核心。

 

Java虚拟机的主要任务是装载class文件 并且执行其中的字节码。JVM包括类装载器,它装载需要的class文件。字节码由执行引擎来执行。

 

1、类装载器:

在实际的Java虚拟机中,存在着多个类装载器。他们分为2类:“启动”类装载器和用户自定义的类装载器。

 

启动类装载器是系统唯一的,它是JVM实现的一部分。如果我们的操作系统是有C语言写的,如Windows,那么启动类装载器就会是此C程序的一部分。启动类装载器在JVM启动时开始工作。

 

用户定义的类装载器能够用Java编写---它实际上就是一个类class。由于有用户自定义的装载器的存在,启动类装载器就不必在它工作时期(编译时期)就将所有程序可能用到类全部装载,因此实现了Java的动态加载功能,即一个类是在它第一次被使用(创建对象,调用static方法等)时才被加载。

 

2、Java虚拟机执行引擎:
不同的Java虚拟机,其执行引擎可能不同。而且它的规范是灵活的,它允许虚拟机用纯粹软件方式来实现,也可以很大部分由硬件实现。
在由软件实现的虚拟机中,有三种执行引擎
1、最简单的,一次性解释字节码
2、即时编译器(just—in—time compiler)。第一次执行的字节码会被编译成本地机器代码,然后机器代码被缓存,当方法再次调用时可以被重用
3、自适应优化器。虚拟机开始的时候解释字节码,并监视运行中程序的活动,将使用最频繁的代码编译成机器代码缓存下来,而其他使用不频繁的代码继续保留字节码。


在硬件芯片构成的虚拟机中,由本地方法执行Java字节码。这种执行引擎实际上被内嵌在芯片中。

 

 

二、Java class文件

我们知道,.class文件是.java文件编译成功后产生的二进制文件。二进制形式是计算机能够理解的形式。

 

C和C++语言在编译成功后也会产生二进制文件的。那么,Java产生的.class文件与他们有什么不同??

 

首先,它为Java的平台无关性做出了很大的贡献。C和C++等语言产生的二进制文件时单独的、专门支持特定硬件平台和操作系统的。这既是为什么C编写的windows程序不能在Linux上运行的原因。.class文件提供的是独立于底层主机平台的二进制服务,而这正是JVM所期望实现的。

 

其原理以后讨论。

 

其次,.class文件在java的网络移动性方面贡献颇大。class文件在设计上是非常紧凑的,因此方便网络传输。而且,由于Java程序的动态连接和动态扩展特性,class文件可以在需要时再下载。因此,可以减少用户等待的时间。这就好像迅雷看看提供的边下载电影边看电影一样--下多少就提供多少功能。

 

 

 

 

 

三、Java API

API是我们每天必须用到的东西,但是你了解它么??

 

我们知道,在Java中是不能直接访问本地资源的,除非通过Java基础API——中间隔了一层虚拟机。随之而来就有一个问题,不同平台上的本地资源的数据结构是不同的,为什么我们的Java程序在不同的平台上都运行良好?? 这是因为API帮我们屏蔽了这些看似无关紧要,但却十分重要的东西:Java API class文件调用了本地方法,Java程序就不需要额外调用它们了。

 

 

Java API在程序安全性上也有极大的作用,它是“沙箱模型”的能够起作用的重要保证。这点以后再谈

《深入Java虚拟机》_Java体系结构

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
当Java虚拟机运行一个程序时,它需要内存来存储多个东西、例如,字节码、从已装载的class文件中得到
工作以来,代码越写越多,程序也越来越臃肿,效率越来越低,对于我这样一个追求完美的程序员来说,
工作以来,代码越写越多,程序也越来越臃肿,效率越来越低,对于我这样一个追求完美的程序员来说,
工作以来,代码越写越多,程序也越来越臃肿,效率越来越低,对于我这样一个追求完美的程序员来说,
深入Java虚拟机之虚拟机体系结构  工作以来,代码越写越多,程序也越来越臃肿,效率越来越低,对于
为什么使用java 因为java的体系结构决定了它适合网络环境。它可以保证安全的、健壮的且和平台无关的
原文链接:http://www.cnblogs.com/nicholas_f/articles/1733512.html Java体系结构包括四个独立但
java技术的核心就是java虚拟机——所有的java程序都在其上运行。 Java的面向网络的核心就是java虚拟
一、体系结构组成 当编写并运行一个Java程序时,就同时体验了这四种技术。用Java语言编写源代码,编
年前买了《深入Java虚拟机(原书第2版)》一书,由于当时能力有限只看了前几章,最近又重新拿出来细
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号