background image

  Web 浏览器是一个动态扩展的例子,Web 浏览器使用用户定义的类装载
器从网络下载用于 Java applet 的 class 文件。Web 浏览器使用一个用来安装
用户定义类装载器的 Java 应用程序。这个用户定义的类装载器通常被称为
Java Applet 类装载器,它知道如何向 HTTP 服务器请求 class 文件。Java 
Applet 可以作为动态扩展的例子,因为 Java 应用程序并不知道它什么时候会
开始从网络下载浏览器请求的 class 文件。只有当浏览器遇到有 Java applet
的页面时,才决定是否需要下载 class 文件。

  Web 浏览器启动的 Java 应用程序通常为每个提供 class 文件的网络地址
分别创建不同的用户定义类装载器,因此,不同的用户定义类装载器装载不
同来源的 class 文件。这就可以把它们分别放置在 Java 主机应用程序的不同命
名空间之下。由于不同来源的 Java applet 文件放置在不同的命名空间中,恶
意的 Java applet 代码就不会直接访问从别的地方下载的 class 文件。这就能
够限制或阻止不同来源的代码之间的相互访问。

Java class 文件

  Java class 文件主要在平台无关性和网络移动性方面使 Java 更适合网络。
它在平台无关性方面的任务是:为 Java 程序提供独立于底层主机平台的二进
制形式的服务。这种途径途径打破了 C 或者 C++等语言所遵循的传统,使用
这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定
硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可执行
文件不能在其他平台上工作。而 Java class 文件时可以运行在任何支持 Java
虚拟机的硬件平台和操作系统上的二进制文件。

  当编译和连接一个 C++程序时,所获得的可执行二进制文件只能在指定
的硬件平台和操作系统上运行,因为这个二进制文件包含了对目标处理器的
机器语言。而 Java 编译器把 Java 源文件的指令翻译成字节码,这种字节码就
是 Java 虚拟机的"机器语言"。

  class 文件设计得紧凑,因此它们可以快速地在网络上传送。其次,由于
Java 程序是动态连接和动态扩展的,class 文件可以在需要的时候才下载。这
个特点使得 Java 应用程序能够安排从网络上下载 class 文件的时间,从而可
以最大限度地减少终端用户的等待时间。

  Java API

  Java API 通过支持平台无关性和安全性,使得 Java 适应于网络应用 。
Java API 是运行库的集合,它提供了一套访问主机系统资源的标准方法。运行
Java 程序时,虚拟机装载程序的 class 文件所使用的 Java API class 文件。所
有被装载的 class 文件(包括从应用程序中和从 Java API 中提取的)和所有已经
装载的动态库(包含本地方法)共同组成了再 Java 虚拟机上运行的整个程序。