admin 管理员组

文章数量: 1184232


2024年3月28日发(作者:可爱表格图片)

计算机系统应用 http:llwww.c-S-a.org.cn 2012年第2l卷第8期 

Java技术框架概述① 

欧锋,邹敏,李晓桢 

(江南计算技术研究所,无锡214083) 

摘要:从体系结构的角度分析了目前流行的java技术框架,详细阐述了java技术体系结构的各主要组成部分。 

对目前流行的java社区的各种技术进行了说明,并对java技术的发展趋势进行了分析。 

关键词:Java;ⅣM技术框架;Java社区:发展趋势 

Survey on Java Technology Framework 

OU Feng,ZOU Min,LI Xiao・Zhen 

(Jiangnan Institute of Computing Technology,Wuxi 2 1 4083,China) 

Abstract:This paper describes the popular Java technology framework from the perspective of architecture,elaborates 

on the major component of java technology architecture,introduces the populra Java communities with various 

techniques,and analyses the development trend of Java technology. 

Key words:Java;ⅣM architecture of technology;Java community;trends of development 

1 引言 

Java技术是随着Internet的普及而迅速推广起来 

编译时环境 运行时环境 

的一种技术,因其固有的网络移动、面向对象、平台 

无关、安全等诸多特征,迅速成为企业级应用开发的 

囡圈囡 奉圆固 

首选技术。Java虚拟机(JVM)在多个平台上实现了统 

语言,Java语言丰富的开放式类库大量使用设计模 

式,成功地改变了很多程序员的编程思想和习惯。很 

国固国

④ c

O 

1 文

多人了解Java语言,知道Java虚拟机。但对于Java 

一 

/ 

 / 豳 

圈 … 

的技术体系结构是如何衔接和有效运作的,却不是每 

个程序员都十分了解的。Java的技术框架包括了Java 

图1 Java技术框架 

语言、Java虚拟机、Java API和Java Class文件(字节 

码1,虽然Java一词被多数人认可为Java程序设计语 

2 Java程序设计语言 

言。可用图1来说明Java的技术框架各部分的关系。 Java语言最初是由James Gosling为嵌入式消费电 

Java程序设计语言是编写Java程序的基础,Java 

子应用设计的,原名为“Oak”,后经多年多人设计优 

字节码和class文件是Java跨平台性的基础,iava 化和多方支持帮助,发展为通用目的的、并发的、基 

文件通过Java编译器生成class文件。Java类库是 于class的面向对象程序设计语言。允许程序设计者一 

Java程序快速开发的根本,也是Java社区最大的财 

次编写Java程序,可以在多个不同体系结构、不同操 

富。Java虚拟机是平台相关的,在不同体系结构和 作系统、运行有Java虚拟机的平台上运行。 

不同的操作系统环境中,都需要有与平台相关的 Java语言具有简单性、面向对象、分布式、健壮 

Java虚拟机的实现。 性、安全性、体系结构中立、可移植性、解释型、高 

①收稿时间:2011.11-30;收到修改稿时间:2012・03-06 

236专论・综述Special Issue 

2012年第2l卷第8期 http://www.c-S—a.org.cn 计算机系统应用 

性能、多线程、动态性等多种特性。 

Java是C++语言的“纯净”版本,没有头文件、指 

3 Java虚拟机(JVM 

Java虚拟机可以指一个抽象规范,也可以指一个 

针运算(指针语法)、结构、联合、操作符重载、虚基类 

等等。Java剔除了c++中许多很少使用、难以理解、易 

混淆的特性。另外,Java的基本解释器以及类支持大约 

仅为40KB,加上基础的标准类库和对线程的支持f一个 

自含的微内核)大约仅需增加175KB。Java是一个纯的 

针对JVM规范的实现,还可以指启动运行的一个Java 

虚拟机实例。抽象规范是JVM实现者共同遵守的守 

则,具体实现可以来源于不同的提供商,可以是不同 

的体系结构,还可以是不同的操作系统平台。图2显 

示了‘Java虚拟机的内部体系结构。 

面向对象语言,所有功能和数据都包含在类中,通过类 

和访问修饰符体现封装性,通过类扩展父类的特征体现 

继承性,通过接口实现体现多态性。Java有一个扩展的 

例程库,用于处理TCP/IP、HTTP、FTP等网络访问, 

二二二孽…… 

Java程序能够通过URL打开和访问网络上的对象,就 

像处理本地文件系统一样。J2EE是Java社区支持大规 

模分布式应用开发的独立的软件体系结构。Java的设计 

目标从多方面保证了用Java编写的程序的可靠性,包 

括早期的问题检测和后期的运行时检测。Java与C++ 

最大的不同在于Java采用的指针模型可以消除重写内 

存和损坏数据的可能性。Java适用于网络和分布式的环 

境,在安全方面投入了很大的精力,使用Java可以构 

建防病毒和防篡改的系统。如禁止运行时堆栈溢出,禁 

止在自己的处理空间之外破坏内存,未经授权禁止读写 

文件等。Java通过将Java程序编译成与体系结构无关 

的中间目标文件(字节码文件)并通过虚拟机运行中间 

目标文件实现体系结构中立的特点。精心设计的字节码 

不仅可以很容易地在任何机器上被解释执行,还可以迅 

速地翻译成本地机器的代码。通过虚拟机运行还有一些 

其它优点,如虚拟机可以检测指令序列的行为,以增强 

其安全性。Java规范中没有“依赖具体实现”的地方, 

基本数据类型的大小以及有关算法都做了明确的说明。 

Java解释器可以在任何移植了解释器的机器上执行 

Java字节码。字节码还可以在运行时通过即时编译器 

(Jrr编译器)被快速翻译成运行该应用程序的特定CPU 

的机器码。多线程可以带来更好的交互响应和实时行 

为。Java与C或C++相比更加具有动态性。它能够适 

应不断发展的环境。库中可以自由地添加新方法和实例 

变量,而对客户端却没有任何影响。在Java中找出运 

行时刻类型信息十分直观。当需要将某些代码添加到正 

在运行的程序中时,动态性将是一个非常重要的特性。 

如从Internet上下载代码,然后在浏览器上运行和必须 

在运行时分析对象的系统,比如Java GUI构建器、智 

能调试器、可插入组件以及对象数据库。 

田日圈圈 

地方法库 

图2 Java虚拟机的内部体系结构 

Java虚拟机启动运行后,由类装载器子系统读取 

java class文件,并在内存中构建内存布局,运行时数 

据区主要包括方法区、堆、Java栈、PC寄存器和本地 

方法栈。方法区存放类数据,主要包括类型信息,动 

态创建的对象存放在堆中,当一个线程被创建时,会 

给它分配一个Java栈和PC寄存器,当执行Java方法 

时,PC寄存器指向下一条要执行的字节码指令,Java 

栈存放该线程中Java方法调用的状态——包括它的局 

部变量,被调用时传进来的参数,它的返回值,以及 

运算的中间结果等等。本地方法调用的状态,则依赖 

于具体的实现存放在本地方法栈中。 

Java栈由许多栈帧(stack frame)或帧(frame)组成, 

个栈帧包含一个Java方法的调用状态。当线程调用 

个Java方法时,虚拟机压入一个新的栈帧到该线程 

的Java栈中;当该方法返回时,这个栈帧被从该线程 

的Java栈中弹出并抛弃。Java虚拟机没有寄存器,其 

指令集使用Jaya栈来存储中问数据。这样设计使JVM 

的指令集尽量紧凑,同时也便于Java虚拟机在那些只 

有少量通用寄存器的平台上实现。另外,Java虚拟机 

这种基于栈的体系结构,也有助于运行时某些虚拟机 

实现的动态编译器和即时编译器的代码优化。各线程 

Special Issue专论・综述237 

计算机系统应用 http:Hwww.c-s-a.org.ca 2012年第21卷第8期 

的Java栈内存区是私有的,任何线程都不能访问另一 

个线程的PC寄存器和Java栈。 

在class文件中,可变长度项的大小和长度位于其实际 

数据之前。这个特性使得class文件流可以从头到尾被 

顺序解析,首先读出项的大小,然后读出项的数据。 

4字节码及Java Class文件 

Java class文件是对Java程序二进制文件格式的 

精确定义。每一个Java class文件都对一个Java类或 

者Java接口作出了全面描述。一个Java class文件只 

能有一个类或者接口。无论Java class文件在何种系统 

上产生,无论Java虚拟机在何种系统上运行,对Java 

5 Java ̄库 

Java类库是Java程序设计人员最喜欢最离不开的 

工具,Java类库是一个庞大的库结构。java.1ang.Object 

类是Java类库层次结构中的根,所有的类、数组等都 

继承Object类的方法。随着技术的发展,Java类库也 

class文件的精确定义使得所有Java虚拟机都能够正确 

地读取和解释所有Java class文件。 

class文件的版本也是随着JDK的版本演进而演 

进的,查看Java class文件的版本号,可以看Javaclass 

文件的第5~8个字节。其中5、6字节为次版本号,7、 

8字节为主版本号。比如由版本号为1.6.0 10的javac 

生成的class文件,次版本号为0,主版本号为50。Java 

clsas文件的结构如图3所示。 

ClassFile{ 

u4 magic; 

u2 minor

_

version; 

u2 major_version; 

u2 constant

pool count; 

_

cp info constnat

_

pool[constnat__pool_count—l】; 

u2 access flags; 

u2 this

class; 

_

u2 super

_

clsas; 

u2 interfaces

count; 

_

u2 itnerfaces[interfaces_count]; 

u2 ifelds

count; 

_

ifeld

_

info ifelds[fields_count]; 

u2 methods

count; 

_

method

_

info methods[methods count]; 

u2 attributes

count; 

_

attribute

_

info atlributeslattributes_count]; 

) 

图3 Java class文件结构 

Java字节码文件结构是一个复杂的数据结构, 

Java class文件是8位字节的二进制流。数据项按顺序 

存储在class文件中,相邻的项之间没有任何间隔,这 

样可以使class文件紧凑。占据多个字节空间的按照高 

位在前的顺序分为几个连续的字节存放。和Java类可 

以包含多个不同的字段、方法、方法参数和局部变量 

样,Java class文件也能够包含许多不同大小的项。 

238专论・综述SpeciM Issue 

是不断扩展的。目前从JDK1.6.0的API文档来分析, 

共有200余个包。按照相关功能划分,Java类库大致 

可以分为以下几类: 

11基础、工具类 

2)管理控制类 

3)图形相关类 

4)网络处理相关类 

51文件IO相关类 

6)安全相关类 

7)Web Services相关类 

8)数据库操作相关类 

9)CORBA相关类 

IO)W3C相关类 

1 1)Applet相关类 

12)组件框架相关类 

6 Java社区与Java技术的发展趋势 

随着网络的普及和Java技术的日益成熟,采用 

Java技术来开发应用程序和信息系统越来越多,造就 

了庞大的Java开发队伍。为了能够更快速的开发出高 

质量的应用系统,在Java技术领域,涌现出很多很好 

的Java技术框架,如Struts、Spring、Hibemate等。 

这些Java技术框架的出现,又进一步推动了Java技术 

的普及和发展。 

随着网络的普及,网格计算、普适计算、服务计 

算、云计算、多核、众核等新兴计算技术的发展,对 

Java技术的发展也产生了积极的推动作用。在Java技 

术的框架中,Java语言、Java虚拟机)Java库、Java 

字节码文件等也会针对新技术的发展而作出相应的变 

革。Java语言是否要适应多核和众核的并行编程模式; 

Java虚拟机是否要充分利用多核的资源,加速Java程 

序的执行,优化垃圾回收算法,支持事务存储等;Java 

2012年第21卷第8期 http://www.c・S-a.org.cn 计算机系统应用 

本地库是否要适应多核和众核的环境;Java类库已经 

在Web Service编程方面作出了积极的努力,推动了服 

设计语言、Java虚拟机、Java库、Java字节码文件之 

间的关系,最后在新兴技术不断涌现的今天,对Java 

技:术的发展趋势进行了探讨。 

务计算技术的发展;Java字节码文件是否增加新的内 

容以适应新技术的发展呢;Java在对象数据库开发方 

面如何提供支持;由于Java技术框架的特点,在高性 

能计算方面,Java一直没有好的表现。然而Java在 

HPC方面的努力一直没有停止过。 

参考文献 

1 Java虚拟机规范.http://java.sun.corn/docs/books/]vms/second 

一.

edition/html/VMSpecTOC.doe.html 

2 Gosling J,Joy B,Steele G Bracha G JavaⅢLanguage 

7 小结 

Java技术是目前流行的、最广泛采用的软件开发 

技术,但很多人只是从Java程序设计语言的角度理解 

Java技术,缺乏对Java技术框架的全面认识。本文针 

对Java的整体技术框架进行了概述,阐述了Java程序 

Speciicatifon.The 3rd Edition.Prentice Hall,Jun 14,2005. 

3 Horstmann CS,Comell G叶乃文,等译.JAVA2核心技术卷I: 

基础知识(原书第7版).北京:机械工业出版社,2006. 

4 Horstmann CS,Comell G陈吴鹏,等译.JAVA2核心技术卷 

II:高级特性(原书第7版).北京:机械工业出版社,2006. 

(上接第196页) 

4结语 

在本文中,改进的全局K均值算法解决了聚类分 

析时的问题,不仅可以利用最小目标函数来解决初始 

中心问题,还可以避免孤立点的问题。马氏距离有效 

3武俊峰,艾岭.一种基于改进算法的模糊模型辨识.哈尔滨理 

工大学学报,2010,2O(5):165一I70. 

4穆朝絮,张瑞民,孙长银.基于粒子群优化的非线性系统最小 

二乘支持向量机预测控制方法.控制理论与应用,2010, 

27(2):164-168. 

地消除错误数据的样本数据,从而减少了计算量。因 

为动态模糊神经网络是不容易获得的梯度信息,网络 

培训时间太长,结构复杂等缺点,减法聚类用于简化 

网络结构,并把改进PSO算法用于优化网络参数,避 

免经验的盲目性和随意性。仿真结果表明,它优于传 

统的动态递归模糊神经网络,它需要更少的隐藏节点 

5王博,孙玉坤.基于数据场聚类的模糊神经网络在发酵过程 

中的应用.仪器仪表学报,2009,30(5):944—948. 

6 Xue Y Wang几,Yu Zhao LQ.Parameter estimation of 

 ̄rmentaion process model based on an improved PSO 

algorithm.Chinese Joumal of Scientiifc Instrument,20 1 0, 

和参数,具有较高的预测精度和实用性。 

31(1):178—182 

7田雨波.混合神经网络技术.2nd ed.北京:科学出版社,2009. 

148—160. 

参考文献 

l薛尧予,王建林,于涛,赵利强.基于改进PSO算法的过程模 

型参数估计.仪器仪表学报,201O,31(1):178—182. 

2 Shivakumar RL。Implementation of all Innovative Bio 

Inspired GA and PSO Algorithm for Controller design 

considering Steam GT Dynamics.Journal of Computer 

8吕奕清,林锦贤.基于MPI的并行PSO混合K均值聚类算 

法.计算机应用,2011,32(1):112—118. 

9李国勇.智能控制及其MTLAB的实现。3rd ed.北京:电子工 

业出版社,2007.156—188. 

Science Issues,January 2010,24(2):132-140. 

Special Issue专论・综述239 


本文标签: 技术 文件 方法