本文共 1653 字,大约阅读时间需要 5 分钟。
之前一直在用Java,但对Java的体系结构并不是很了解,最近也是看书才开始关注这方面的内容,做了一些笔记,摘抄给大家共同学习。
Java体系结构包括四个独立但相关的技术:
Java程序设计语言
Java class文件格式
Java应用编程接口( APl)
当编写并运行一个Java程序时, 就同时用到了这四种技术。 用Java编程语言编写源代码, 把它编译成Java class文件, 然后再在Java虚拟机中运行class文件。 当编写程序时, 通过调用类(这些类实现了Java API)中的方法来访问系统资源(比如I/0)。当程序运行的时候,它通过调用class文件中实现了Java APl的方法来满足程序的Java API调用, 通过下图看一下这四者之间的联系。
ava虚拟机和ava API一起组成了一个“平台",所有Java程序都在这上面编译。 Java虚拟机和Java API的组合除了被称为Java运行时系统之外, 还被称为Java平台(从版本1.2开始, 称为Java2平台)。 Java程序可以在不问的计算机上运行,这是因为Java平台自已可以用软件实现。
下面先简单介绍下各个模块,然后再具体说明。
尽管Java是为网络设计的, 但Java的应用并不局限于网络。 平台无关性、 网络移动性和安全性是网络计算环境最重要的因素, 但是并不是每个人都会遇到面向网络的间题。 因此,也并不是任何时候都需要编写具备平台无关的程序。 有时可能并不需要从网上传递程序成者通过安全的约束限制程序的能力。 有时使用Java技术的首要原因可能只是因为想要利用Java程序设计语言的优势。
Java class文件主要在平台无关性和网络移动性方面使Java更适应于网络。它在平台无关性方面的任务是: 为Java程序提供独立于底层主机平台的二进制形式的服务,这正是 Java虚拟机所期望实现的。 这种途径打破了C或者C++等语言所遵循的传统, 使用这些传统语言写的程序通常首先被编译, 然后被连接成为単独的、 专门支持特定硬件平台和操作系统的二进制文件 。通常情况下 , 一个平台上的二进制可执行文件不能在其他平台上工作 。而Java class文件是可以运行在任何支持Java虚拟机的硬件平合和操作系统上的二进制文件 。
JaVa API通过支持平台无关性和安全性,使得Java适用于网络应用。Java APl是运行库的集合, 它提供一套访问主机系统资源的标准方法。编写Java程序时, 可以假设在任何可运行程序的Java虚拟机上都能够获取Java API class文件。这是一个相对安全的假设。因为Java虚拟机和Java API class文件是任何Java平合都要实现的必要部分。运行Java程序时.虚拟机装载程序的class文件所使用的Java API class文件。所有被装载的class文件(包括从应用程序中和从Java API中提取的)和所有已经装载的动态库(包含本地方法)共同组成了在Java虚拟机上适运的整个程序。
Java的面向网络的核心就是Java虚拟机, 它支持Java面向网络体系结构三大支柱的所有方面:平台无关性、 安全性和网络移动性。
Java虚拟机是一台抽象的计算机, 其规范定义了每个Java虚拟机都必须实现的特性, 但是每个特定实现都留下了很多选择。 举个例子,虽然每个Java虚拟机都必须能够执行Java字节码,但是用何种技术来执行是可以选择的。而且,它的规范也很灵活,它允许虚拟机用纯粹软件方式来实现, 也可以很大部分由硬件实现 。
Java虚拟机的主要任务是加载class文件并且执行其中的字节码。Java虚拟机包含一个类装载器(class loader).它可以从程序和ApI中装裁class文件。 Java APl中只有程序执行时需要的部些类才会被加载 。