Java中的四个核心技术思想 .pdfVIP

  • 21
  • 0
  • 约7.61千字
  • 约 6页
  • 2020-12-09 发布于河北
  • 举报
Java 中的四个核心技术思想 阅读次数: 2823次 发布时间: 2010-07-01 08:46:59发布人: 网络转载 来源: 网络转载 Java 已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌 握 Java 技术,深入理解底层的技术处理细节必不可少。对核心概念和思想的掌 握可以帮助我们举一反三、触类旁通,有助于提升我们对整个 Java 平台的理解 力。这里所介绍的是 Java 技术平台的几个核心概念,其中所蕴含的思想有助于 我们更深刻的理解 Java 技术。   Java 虚拟机   Java 虚拟机的主要任务是装在 class 文件并且执行其中的字节码。Java 虚 拟机包含一个类装载器,它可以从程序和 API 中装载 class 文件。Java API 中只 有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。   不同的 Java 虚拟机中,执行引擎可能实现得非常不同。在由软件实现的虚 拟机中,最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是 也更消耗内存,叫做即时编译器(just-in-time compiler)。在这种情况下, 第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码会被缓 存,当方法以后被调用的时候可以重用。第三种执行引擎是自适应优化器。在这 种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序的活动,并且 记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活动最频繁的代 码编译成本地代码,其他的代码由于使用得不是很频繁,继续保留为字节码-由 虚拟机继续解释它们。一个自适应的优化器可以使得 Java 虚拟机在 80%~90%的 时间里执行被优化过的本地代码,而只需要编译 10%~20%的对性能有影响的代 码。   当 Java 虚拟机是由主机操作系统上的软件实现的时候,Java 程序通过调用 本地方法 (native method)和主机交互。Java 中有两种方法: Java方法和本地方 法。Java 方法是由 Java 语言编写,编译成字节码文件,存储在 class 文件中的。 本地方法是由其他语言 (比如c,c++或汇编语言)编写的,编译成何处理器相关的 机器代码。本地方法保存在动态链接库中,格式是各个平台专有的。运行中 Java 程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。 本地方法是联系 Java 程序和底层主机操作系统的连接方法。   通过本地方法,Java 程序可以直接访问底层操作系统的资源。一个本地方 法接口 (Java Native Interface, JNI)-使得本地方法可以在特定主机系统的任 何一个 Java 平台实现上运行。   如果希望使用特定主机上的资源,它们又无法从 Java API 访问,那么可以 写一个平台相关的 Java 程序来调用本地方法。如果希望保证程序的平台无关性, 那么只能通过 Java API 来访问底层系统资源。   类装载器的体系结构   一个 Java 应用程序可以使用两种类装载器:启动(bootstrap)类装载器和 用户定义的类装载器。启动类装载器 (这是系统中唯一的)是 Java 虚拟机实现的 一部分。启动类装载器通常使用某种默认方式从本地磁盘中装载类,包括 Java API 类(启动类装载器也被称为原始类装载器、系统类装载器或者默认类装载器)。   Java 应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够 使用自定义的方式来装载类。例如,从网络下载 class 文件。尽管启动类装载器 是虚拟机实现的本质部分,而用户定义的类装载器不是,但用户定义的类装载器 能够用 Java 来编写,能够被编译成 class 文件,能够被虚拟机装载,还能够像其 它对象一样实例化。   由于有用户定义类装载器,所以不必再编译的时候就知道运行中的 Java 应 用程序中最终会加入的所有的类。用户定义的类装载器使得在运行扩展 Java 应 用程序成为可能。当它运行时,应用程序能够解决它需要哪些额外的类,能够决 定是使用一个或是更多的用户定义的类装载器来装载。由于类装载器是用 Java 编写的,所以用任何在 Java 代码中可以表述的风格来进行类装载。这些类可以 通过网络下载,可以从某些数据库中获取,甚至可以动态生成。   每一个类被装载的时候,Java 虚拟机都监视这个类,看到它到底是被启动 类装载器还是被用户定义类装载器装载。当被装载的类引用了另外一个类时,虚 拟机就会使用装载第一个类的类装载器装载引用的类。例如,如果虚拟机使用一 个特定的

文档评论(0)

1亿VIP精品文档

相关文档