`
diecui1202
  • 浏览: 97095 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java虚拟机学习笔记(一)Java体系结构

阅读更多
一、体系结构组成

当编写并运行一个Java程序时,就同时体验了这四种技术。用Java语言编写源代码,马它编译成Java Class文件,然后再在Java虚拟机上运行class文件。当编写程序时,通过调用类中的方法来访问系统资源。当程序运行的时候,它通过调用class文件中的方法来满足程序的Java API调用。

  1. Java程序设计语言
  2. Java Class文件格式
  3. Java应用编程接口
  4. Java虚拟机

软件实现的Java虚拟机如图:

二、Java虚拟机
  1. Java虚拟机的主要任务是装载class文件并执行其中的字节码。JVM包含一个类装载器,它可以从程序和API中装class文件。Java API中只有程序执行时需要的那些类才会被装载。
  2. 当JVM是由主机操作系统上的软件实现的时候,Java程序通过调用本地方法(native方法)和主机交互。Java中有两种方法:
    • Java方法:由Java语言编写的,编译成字节码,存储在class文件中,是平台无关的;
    • 本地方法:由其它语言(C,C++或汇编语言)编写的,编译成和处理器相关的机器代码,保存在动态链接库中,格式是各个平台专有的,是平台相关的;当编写一个平台独立的Java程序时,必须遵守的一条最重要的原则就是:不要直接或间接调用不属于Java API的本地方法;一个平台无关的Java程序如图:
    • 运行中的程序调用本地方法时,JVM装载包含这个本地方法的动态库,并调用这个方法;
三、类装载器
  1. 一个Java应用程序可以使用两种类装载器:"启动"(bootstrap)类装载器和用户自定义的类装载器。启动类装载器(这是系统中唯一的)是JVM的一部分。
  2. Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自定义的方式来装载类,例如从网络下载class文件。
  3. 用户定义的类装载器使得在运行时扩展Java应用程序成为可能。当它运行时,应用程序能够决定它需要哪些额外的类,能够决定是使用一个或是更多的用户定义的类装载器来装载。由于类装载器是使用Java编写的,所以能用任何在Java中可以表述的风格来进行类的装载。这些类可以通过网络下载,可以从某些数据库中获取,甚至可以动态生成。
  4. 每一个类被装载的时候,JVM都监视这个类,看它到底是被启动类装载器还是被用户定义类装载器装载。当被装载的类引用了另外一个类时,JVM就会使用装载第一个类的类装载器装载被引用的类。这样,两个类就动态地建立起了联系。
  5. 由于JVM采取这种方式进行类的装载,所以被装载的类默认情况下只能看到被同一个类装载器装载的别的类。被不同的类装载器装载的类存放在不同的命名空间中,它们不能互相访问,除非应用程序显式地允许这么做。通过这种方法,就能够使用Java类装载器的体系结构来控制任何从不同源文件中装载的代码之间的相互影响,特别是能够阻止恶意代码获取访问和破坏善意代码的权限。
  6. Java类装载器体系结构如图:
四、Java独有的特性
  1. 在Java中没有通过使用强制转换指针类型或者通过进行指针运算直接访问内存的方法;
  2. Java避免无意间破坏内存的另一个办法是自动垃圾收集;在Java中,只需要停止对一个对象的引用,一段时间后,垃圾收集器会自动回收这个对象所占用的内存;
  3. Java在运行时保护内存完整性的第三个办法是数组边界检查;
  4. 最后一个关于Java确保程序健壮性的例子是对对象引用的检查,每次使用引用的时候,Java都会确保这些引用不为空值;
3
0
分享到:
评论

相关推荐

    深入理解Java虚拟机学习笔记借鉴.pdf

    深入理解Java虚拟机学习笔记借鉴.pdf

    java虚拟机学习

    java虚拟机学习 java虚拟机学习java虚拟机学习java虚拟机学习java虚拟机学习

    Java虚拟机读书笔记

    java虚拟机读书笔记,主要描述阅读Java虚拟机核心技术的描述。

    Java 虚拟机学习笔记:Java 内存区域,垃圾收集,内存分配与回收策略,JVM 调优,文件结构,类加载机制,Java 程序

    Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...

    java虚拟机规范高清中文版本(java SE 8版本)

    第1章 :简单地介绍了Java虚拟机的历史并吹捧了←_← 一下Java的平台无关性(一次编译,到处运行); 第2章:概览Java虚拟机整体架构; 第3章:介绍如何将Java语言编写的程序转换为虚拟机指令集; 第4章:定义...

    Java虚拟机学习资料

    深入理解Java虚拟机学习资料 pdf+mobi

    自己动手写Java虚拟机 (Java核心技术系列)@

    本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!...

    java学习笔记3(java虚拟机)

    java学习笔记3(java虚拟机)java学习笔记3(java虚拟机)

    java虚拟机规范(java SE7)

    java虚拟机规范,高清PDF版本,含有目录结构:第一章:引言; 第二章:java虚拟结构(运行时区域内存:寄存器,java虚拟机栈,java堆,方法去,运行时常量池,本地方法栈); 第三章:为java虚拟机编译; 第四章:...

    java虚拟机学习笔记进阶篇

    在本篇内容里小编给大家分享了关于java虚拟机学习笔记的进阶内容,需要的朋友们跟着学习下。

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

     本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行引擎等;第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及...

    深入java虚拟机笔记

    深入java虚拟机笔记http://blog.csdn.net/yangzl2008/article/details/8074667

    深入理解 java 虚拟机

    java 虚拟机

    java 并发编程、java虚拟机学习

    9Java技术体系.avi 12.0MB 8Java的发展历史续.avi 3.3MB 7Java的发展历史.avi 42.0MB 20Java虚拟机-高性能Java虚拟机.avi 3.8MB 19Java虚拟机-MicrosoftJVM.avi 4.9MB 18Java虚拟机-dalvik.avi 2.9MB 17Java...

    java虚拟机规范(java se 7)

    《Java虚拟机规范 7》是一份完整的描述Java虚拟机是如何设计的规范文档。这份文档对于任何一个希望实现Java虚拟机的编译器作者,或者希望实现一个与规范相兼容的Java虚拟机的程序员来说都是必不可少的。

    学习笔记:深入浅出 Java 虚拟机.docx

    该文档是本人的学习笔记,尚未精修,后续会精修排版. 学习笔记:深入浅出 Java 虚拟机.docx

    自己动手写Java虚拟机 kindle 版本

    本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!...

    Java虚拟机规范.Java SE 8版

    第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈、异常处理、同步与注解等;第4章深入分析用来表示编译后的类和接口的...

    Java虚拟机规范.Java SE 8版.zip

    第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局 部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈、异常处理、同步与注解等;第4章深入分析用来表示编译后的类和接口的...

Global site tag (gtag.js) - Google Analytics