Java技术框架概述
欧锋;邹敏;李晓桢
【摘 要】从体系结构的角度分析了目前流行的java技术框架,详细阐述了java技术体系结构的各主要组成部分.对目前流行的java社区的各种技术进行了说明,并对java技术的发展趋势进行了分析.%This paper describes the popular Java technology framework from the perspective of architecture, elaborates on the major component of Java technology architecture, introduces the popular Java communities with various techniques, and analyses the development trend of Java technology.
【期刊名称】《计算机系统应用》
【年(卷),期】2012(021)008
【总页数】4页(P236-239)
【关键词】Java;JVM技术框架;Java社区;发展趋势
【作 者】欧锋;邹敏;李晓桢
【作者单位】江南计算技术研究所,无锡214083;江南计算技术研究所,无锡214083;江南计算技术研究所,无锡214083
【正文语种】中 文
1 引言
Java技术是随着 Internet的普及而迅速推广起来的一种技术,因其固有的网络移动、面向对象、平台无关、安全等诸多特征,迅速成为企业级应用开发的首选技术。Java虚拟机(JVM)在多个平台上实现了统一语言,Java语言丰富的开放式类库大量使用设计模式,成功地改变了很多程序员的编程思想和习惯。很多人了解Java语言,知道Java虚拟机。但对于Java的技术体系结构是如何衔接和有效运作的,却不是每个程序员都十分了解的。Java的技术框架包括了Java语言、Java虚拟机、Java API和Java Class文件(字节码),虽然Java一词被多数人认可为Java程序设计语言。可用图1来说明Java的技术框架各部分的关系。
Java程序设计语言是编写Java程序的基础,Java字节码和 class文件是 Java跨平台性的基础,
java文件通过 Java编译器生成 class文件。Java类库是Java程序快速开发的根本,也是Java社区最大的财富。Java虚拟机是平台相关的,在不同体系结构和不同的操作系统环境中,都需要有与平台相关的Java虚拟机的实现。
图1 Java技术框架
2 Java程序设计语言
Java语言最初是由James Gosling为嵌入式消费电子应用设计的,原名为“Oak”,后经多年多人设计优化和多方支持帮助,发展为通用目的的、并发的、基于class的面向对象程序设计语言。允许程序设计者一次编写Java程序,可以在多个不同体系结构、不同操作系统、运行有Java虚拟机的平台上运行。
Java语言具有简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、动态性等多种特性。
Java是C++语言的“纯净”版本,没有头文件、指针运算(指针语法)、结构、联合、操作符重载、虚基类等等。Java剔除了C++中许多很少使用、难以理解、易混淆的特性。另外,Java
的基本解释器以及类支持大约仅为40KB,加上基础的标准类库和对线程的支持(一个自含的微内核)大约仅需增加175KB。Java是一个纯的面向对象语言,所有功能和数据都包含在类中,通过类和访问修饰符体现封装性,通过类扩展父类的特征体现继承性,通过接口实现体现多态性。Java有一个扩展的例程库,用于处理TCP/IP、HTTP、FTP等网络访问,Java程序能够通过URL打开和访问网络上的对象,就像处理本地文件系统一样。J2EE是Java社区支持大规模分布式应用开发的独立的软件体系结构。Java的设计目标从多方面保证了用 Java编写的程序的可靠性,包括早期的问题检测和后期的运行时检测。Java与 C++最大的不同在于 Java采用的指针模型可以消除重写内存和损坏数据的可能性。Java适用于网络和分布式的环境,在安全方面投入了很大的精力,使用 Java可以构建防病毒和防篡改的系统。如禁止运行时堆栈溢出,禁止在自己的处理空间之外破坏内存,未经授权禁止读写文件等。Java通过将Java程序编译成与体系结构无关的中间目标文件(字节码文件)并通过虚拟机运行中间目标文件实现体系结构中立的特点。精心设计的字节码不仅可以很容易地在任何机器上被解释执行,还可以迅速地翻译成本地机器的代码。通过虚拟机运行还有一些其它优点,如虚拟机可以检测指令序列的行为,以增强其安全性。Java规范中没有“依赖具体实现”的地方,基本数据类型的大小以及有关算法都做了明确的说明。Java解释器可以在任何移植了解
释器的机器上执行Java字节码。字节码还可以在运行时通过即时编译器(JIT编译器)被快速翻译成运行该应用程序的特定CPU的机器码。多线程可以带来更好的交互响应和实时行为。Java与C或C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响。在 Java中出运行时刻类型信息十分直观。当需要将某些代码添加到正在运行的程序中时,动态性将是一个非常重要的特性。如从Internet上下载代码,然后在浏览器上运行和必须在运行时分析对象的系统,比如Java GUI构建器、智能调试器、可插入组件以及对象数据库。
3 Java虚拟机(JVM)
Java虚拟机可以指一个抽象规范,也可以指一个针对JVM规范的实现,还可以指启动运行的一个Java虚拟机实例。抽象规范是 JVM 实现者共同遵守的守则,具体实现可以来源于不同的提供商,可以是不同的体系结构,还可以是不同的操作系统平台。图2显示了Java虚拟机的内部体系结构。
图2 Java虚拟机的内部体系结构
Java虚拟机启动运行后,由类装载器子系统读取java class文件,并在内存中构建内存布局,运行时数据区主要包括方法区、堆、Java栈、PC寄存器和本地方法栈。方法区存放类数据,主要包括类型信息,动态创建的对象存放在堆中,当一个线程被创建时,会给它分配一个Java栈和PC寄存器,当执行Java方法时,PC寄存器指向下一条要执行的字节码指令,Java栈存放该线程中Java方法调用的状态——包括它的局部变量,被调用时传进来的参数,它的返回值,以及运算的中间结果等等。本地方法调用的状态,则依赖于具体的实现存放在本地方法栈中。
Java栈由许多栈帧(stack frame)或帧(frame)组成,一个栈帧包含一个Java方法的调用状态。当线程调用一个Java方法时,虚拟机压入一个新的栈帧到该线程的Java栈中;当该方法返回时,这个栈帧被从该线程的Java栈中弹出并抛弃。Java虚拟机没有寄存器,其指令集使用Java栈来存储中间数据。这样设计使JVM的指令集尽量紧凑,同时也便于Java虚拟机在那些只有少量通用寄存器的平台上实现。另外,Java虚拟机这种基于栈的体系结构,也有助于运行时某些虚拟机实现的动态编译器和即时编译器的代码优化。各线程的Java栈内存区是私有的,任何线程都不能访问另一个线程的PC寄存器和Java栈。
java的基本框架4 字节码及Java Class文件
Java class文件是对Java程序二进制文件格式的精确定义。每一个Java class文件都对一个Java类或者Java接口作出了全面描述。一个Java class文件只能有一个类或者接口。无论Java class文件在何种系统上产生,无论Java虚拟机在何种系统上运行,对Java class文件的精确定义使得所有Java虚拟机都能够正确地读取和解释所有Java class文件。
class文件的版本也是随着 JDK的版本演进而演进的,查看Java class文件的版本号,可以看Java class文件的第5~8个字节。其中5、6字节为次版本号,7、8字节为主版本号。比如由版本号为1.6.0_10的javac生成的class文件,次版本号为0,主版本号为50。Java class文件的结构如图3所示。
图3 Java class文件结构
Java字节码文件结构是一个复杂的数据结构,Java class文件是8位字节的二进制流。数据项按顺序存储在class文件中,相邻的项之间没有任何间隔,这样可以使class文件紧凑。占据多个字节空间的按照高位在前的顺序分为几个连续的字节存放。和Java类可以包含多个不同的字段、方法、方法参数和局部变量一样,Java class文件也能够包含许多不同大小的项。在class文件中,可变长度项的大小和长度位于其实际数据之前。这个特性使得class文件流
可以从头到尾被顺序解析,首先读出项的大小,然后读出项的数据。
5 Java类库
Java类库是Java程序设计人员最喜欢最离不开的工具,Java类库是一个庞大的库结构。java.lang.Object类是Java类库层次结构中的根,所有的类、数组等都继承Object类的方法。随着技术的发展,Java类库也是不断扩展的。目前从JDK1.6.0的API文档来分析,共有200余个包。按照相关功能划分,Java类库大致可以分为以下几类:
1)基础、工具类
2)管理控制类
3)图形相关类
4)网络处理相关类
5)文件IO相关类
6)安全相关类
7)Web Services相关类
8)数据库操作相关类
9)CORBA相关类
10)W3C相关类
11)Applet相关类
12)组件框架相关类
6 Java社区与Java技术的发展趋势
随着网络的普及和 Java技术的日益成熟,采用Java技术来开发应用程序和信息系统越来越多,造就了庞大的Java开发队伍。为了能够更快速的开发出高质量的应用系统,在Java技术领域,涌现出很多很好的 Java技术框架,如 Struts、Spring、Hibernate等。这些Java技术框架的出现,又进一步推动了Java技术的普及和发展。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论