(计算机科学与技术专业论文)一个开源j2se平台的设计和实现.pdf_第1页
(计算机科学与技术专业论文)一个开源j2se平台的设计和实现.pdf_第2页
(计算机科学与技术专业论文)一个开源j2se平台的设计和实现.pdf_第3页
(计算机科学与技术专业论文)一个开源j2se平台的设计和实现.pdf_第4页
(计算机科学与技术专业论文)一个开源j2se平台的设计和实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机科学与技术专业论文)一个开源j2se平台的设计和实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

个开靴s e 平台的设计和实现 f8 7 7 0 5 6 摘要 长期以来,j a v a 技术的发展和j 2 s e 平台的完善,都是由它的授权公司控制, 其发展空间和速度受到了制约。随着n e t 等新兴技术不断挑战j a v a 的地位,业 界对j 2 s e 平台改进的呼声越来越大。随着开源社区和开源软件技术的发展,一 个开源实现j 2 s e 平台的设想越来越受到业界的重视,被普遍认为是j 2 s e 平台未 来的发展趋势。 本文基于上述开源j 2 s e 平台的设想,结合本人参与设计和开发的一个开源 j 2 s e 平台实现项目,较为完整地介绍了这个开源j 2 s e 平台的架构设计、实现技 术和开发方式。 首先,本文主要以模块化的眼光,介绍了这个开源架构的设计,在介绍平台 的整体划分方案的同时,将其中重要模块的进一步划分方案做了一个较为详细的 介绍,体现了这个开源架构的独特结构特点和设计思想。随后,本文按照实现方 案,将主要功能模块的实现技术分别做了介绍。特别地,本文对本人的主要工作 a p i 库的实现做了较为详细的介绍和举例描述。最后,本文从软件工程的角 度,介绍了这个开源j 2 s e 项目在实施过程当中的若干质量保证手段。这些手段 使得上述设计和实现技术可以真正变成可靠的平台产品。 这个项目采用开源开发模式实现一个完整的j z s e 平台,在业界具有开创性 意义,对j 2 s e 平台的发展和开源软件技术的发展都做出了贡献。目前,平台的 1 4 2 版本已经问世,5 0 版本正在构建当中,项目本身也已经广受业界关注。 本人的研究工作集中于这个平台的设计和a p i 库的实现方面,以实际工作证 明了这个开源j 2 s e 平台的可行性,在平台划分、实现技术和质量保证等方面积 累了一定的经验。本文总结了本人的工作,可以为类似的开源项目和j 2 s e 实现 项目提供有益的参考。 关键字:j a v a ,j 2 s e ,开源,a p a c h e ,j a v a 虚拟机( j v m ) ,a p i 库,o a l , 极限编程( x p ) ,单元测试 个开源j 2 s e 平台的设计和实现 a b s t r a c t t h ed e v e l o p m e n to fj 2 s ei su n d e rc o n t r o lo fo n ea u t h o r i z e dc o m p a n y , t h ep r o g r e s sis1 i m i t e d a ss o m eg r o w i n gt e c h n o l o g i e s ,s u c ha s n e t , c h a l l e n g i n gj a v a ,t h e r ei sg r o w i n gd e m a n do fi m p r o v i n gj 2 s e a s o p e n s o u r c et e c h n o l o g ya n dc o m m u n i t yi ss t r o n gn o w ,t h e r ei sag r o w i n g r e g a r do fi m p l e m e n t i n ga no p e n s o u r c ej 2 s ep l a t f o r m ,w h i c hi sg e n e r a l l y b e l i e y e da st h et r e n do fj 2 s e b a s e dt h i s i d e aa n dar e a lo p e n s o u r c ej 2 s ep r o j e c tij o i n e d ,t h i s p a p e ri n t r o d u c e dt h ea r c h i t e c t u r e ,t e c h n o l o g ya n dd e v e l o p i n gp r o c e s so f t h i so p e n s o u r c ej 2 s ei m p l e m e n t a t i o np r o j e c t a tf i r s t ,t h i sp a p e ri n t r o d u c e dt h ea r c h i t e c t u r ei nam o d e l e rv i e w b o t hg e n e r a la n dd e t a iid e sig ns c h e m ea r ein t r o d u c e d t h e n ,a c c o r d in gt o i m p l e m e n ts c h e m e ,t h i sp a p e ri n t r o d u c e ds o m ek e yt e c h n o l o g i e so fm a i n m o d u l e s ,e s p e c i a l l yo ft h ea p i1 i b r a r y a tl a s t ,t h i sp a p e ri n t r o d u c e d s o m eq u a l i t ye n s u r i n gm e t h o d si nas o f t w a r ee n g i n e e r i n gv i e w t h i sp r o j e c ti m p l e m e n t saj 2 s ep l a t f o r mi nac r e a t i v eo p e n s o u r c ew a y , a sag r e a tc o n t r i b u t i o nt ot h ej 2 s ep l a t f o r ma n do p e n s o u r c et e c h n o l o g y t h ev e r s i o n1 4 2h a sb e e nr e l e a s e d ,a n dv e r s i o n5 ,0i su n d e rd e v e l o p i n g w it hm o r ea n dm o r ec o n c e r n m yr e s e a r c hw o r kf o c u so nt h ed e s i g na n di m p l e m e n to fa p il i b r a r y , p r o v i n gt h ef e a s i b i l i t yb yw o r k ,a n dg a i ns o m ee x p e r i e n c ei np l a t f o r m d e s i g n ,i m p l e m e n ta n dq u a l i t ye n s u r i n g t h i sp a p e rs u m m a r i z e dm yw o r k , c a np r o v i d eu s e f u lr e f e r e n c ef o rs i m il a ro p e ns o u r c eo rj 2 s ep r o j e c t s k e y w o r d :j a v a ,j 2 s e ,o p e n s o u r c e ,a p a c h e ,j v m ,a p iii b r a r y ,o a l ,x p , u n i tt e s t 第2 页 1 1 背景 一个开源j 2 s e 平台的设计和实现 第一章绪论 j a v a 是当代计算机软件开发的重要技术,是一种被广泛应用的软件平台。 经过十年的发展,j a v a 技术已经成为世界上最卓越的企业应用和移动应用开发 平台之一,历史上从没有过像j a v a 这样的平台能够如此广泛地被应用,j a v a 平 台已经支撑了当今世界上大部分的企业级应用程序,目前全球j a v a 经济价值已 经超过1 ,2 0 0 亿美元。 十年来,j a v a 编程语言及平台成功地应用在网络计算及移动等各个应用领 域,比如移动电话、个人电脑、跨国金融系统和卫星通讯等。据统计,目前全球 运行j a v a 的设备已达到2 5 亿,j a v a 开发人员超过4 5 0 万,基于j a v a 技术的智 能卡达1 0 亿,基于j a v a 技术的手机达7 0 8 亿,采用j a v a 技术的p c 机达7 亿, j c p ( j a v ac o m m u n i t yp r o c e s s ,j a v a 社区进程) 成员达9 1 2 个,广大运营商使用 的j a v a 平台1 4 0 多个 2 。 s u n 公司是j a v a 的发源地,当初s u n 公司推出j a v a 时提出的口号是:“编 写一次,到处运行”。十年来,j a v a 的跨平台和开放特性已经得到公认,此外, j a v a 语言还具有众多优秀特性,包括面向对象、类似于c 和c + + 的表达语法、良 好的安全性等,在许多方面成为c o b o l 和c + + 等语言的继任者,受到全球开发人 员的青睐,并已成为企业级i t 业务应用的首选开发平台。 j 2 s e 是j a v a 的标准版本,包含了j a v a 的主要组件和重要功能,也被称作 “核心j a v a ”。在s u n 的推动下,j 2 s e 平台从最开始的一个秘密计划到如今的庞 大而丰富的平台架构,已经发展出了很多的版本,目前比较常用的是j 2 s e 的 1 4 2 版本和最新推出的5 0 版本。j 2 s e 保持了很好的向上兼容性,低版本的所 有公开承诺的接口和功能,都将会在高级版本当中继续存在。 随着软件开发平台技术的百家争鸣,原有的j 2 s e 的发展模式越来越不适应 当代计算机软件技术对j a v a 平台的期待和要求,广大开发者纷纷提出了将j a y a 平台开源的建议。在现有j a v a 平台无法开放源代码的情况下,开源社区出现了 一种开发开源j 2 s e 平台的构思,他们试图开发一个开源的j 2 s e 平台,符合1 a v a 第5 页 一个开源j 2 s e 平台的设计和实现 的规范,与现有平台兼容,实现开源j a v a 的要求,为目后j a v a 技术的快速发展 和j a v a 应用的开发提供一个有益的选择和机会。 a p a c h e 组织作为开源软件界最为成功和最具实力的组织之一,率先提出了 一个实现完整的开源j 2 s e 平台的计划,取名为h a r m o n y 。不仅是a p a c h e ,业界 很多知名的公司也参与到了这个项目当中来,为这个开源项目贡献了很多的成 果,使得这个项目在业界的影响也越来越大。这个项目计划实现上述开源的设想, 构建一个与现有5 o 平台完全兼容的开源3 2 s e 平台。这样的计划在计算机业界 还是第一次,因为重新以开源方式开发一个j 2 s g 平台是一个十分困难的事情, 需要充分的设计和良好的实现,而且还要注意不要侵犯已有非开源实现的知识产 权。 在该项目的设计和实现阶段,本人参与其中,负责部分的设计和实现工作, 开发了部分的a p i 库函数,对于整个项目的设计和关键部分的实现技术有一定的 了解。 这个项目的设计框架和实现技术都是十分先进的,项目采用多级模块化划分 的手段,将完整而庞大的j 2 s e 平台非常合理地划分为许多小模块,实现了可替 换与独立开发等等设计目标;在实际开发过程中,开源开发的种种技术手段都经 受住了考验,也实现了作为一个底层平台所应有的可靠性和高质量。更加重要的 是,这个平台的开源设计和开源实现,本身就是一个开创性的探索,对于开源软 件技术和j a v a 技术的发展都有着很好的推动和示范作用。 1 2 国内外相关研究情况 近年来,国内外对于开源j a v a 平台的研究和实践从来没有中断过,其中涌 现了许多优秀的研究成果和实践案例。不过,这些实践都不是完整的实现一个 j 2 s g 平台,而只是实现了其中的部分组件,如j v m 和a p i 库的一部分等,而且 在兼容性和可靠性方法都有很大的差距。这些事实,也从另一个角度表明了这个 开源的完整j 2 s e 平台设计构想和h a r m o n y 项目的重要意义。 1 k a f f e k a f f e 是一个非常老资格的开源j w ,提供了l i n u x 环境下的j v m 开源实现。 它基于g n u 授权,是一个主要用于研究和教学的j v m 。 第6 页- 一个开源j 2 s e 平台的设计和箕现 这个j v m 的不足之处,它自己的网站上面也承认,就是这个j v m 不适合开发 j a v a 程序,因为它的很多地方是不符合j a v a 标准的,有很多和s u n 的实现不兼 容的接口;而且,它也缺乏上层a p i 库的支持;而且这个j v m 缺乏完备的文档和 辅助工具;它对于0 s 平台的支持也只限于l i n u x 系列。 关于k a f f e 的更多信息,请参考它的官方网站b ! ! 卫;趣! :! i :! ! g z 。 2 c l a s s p a t h c l a s s p a t h 是g n u 组织当中的一个开源实现j a v a 核心a p i 库的项目。目前 为止,这时业界最好最完备的j a v aa p i 库,但是,它也只是实现了部分的a p i 库的功能,而编译器和j v m 还需要额外支持。 关于c l a s s p a t h 项目和g n u 组织的更多信息,请参考它的官方网站 b ! ! 坠;! 丑! 翌:g 旦坠:q 芏g 兰鱼! ! ! 垒! 宝曼! 垦墨墨巳垦主b 。 3 6 c j g c j 是g n u 当中6 c c 系列编译器的新成员。g c j 可以将j a v a 程序编译成本地 代码,所以严格的说它不算是一个真正意义上的j v m 。 关于6 c j 的更多信息,请参考它的官方网站b ! ! p ;g ! ! :鲤! :! ! g i i ! 型。 4 国内发展 在中国的互联网时代刚刚开始的时候,人们普遍认为j a v a 只是一种增强网 页效果的工具。不过很快,人们开始认识到j a v a 的强大功能。现在,在中国大 学的计算机系里面,j a v a 语言已经慢慢成为一种和c c + + 一样必修的语言,在中 国的书店里面,j a v a 书籍成为最畅销的技术类图书之一。 但是,在国内,j a v a 还处于应用阶段,很少有国内的组织和个人参与到j a v a 的发展当中来,要在国内找到一个开源的j a v a 平台实现,就更加的困难。不过, 近年来国内还是在推动j a v a 发展的道路上有了一些进展。不久前,中国中间件 软件领域的厂商金蝶中间件公司与s u n 公司正式签署j 2 e e 应用服务器认证协议, 并通过了j a v ac o m m u n i t yp r o c e s s ( j c p ,j a v a 标准制定组织) 的审核,正式成为 其中的一员,这标志着中国有了第一个参与制定j a v a 发展标准的组织了。 1 3 本人的工作 本人从去年开始参加这个开源j 2 s e 项目的开发工作,到目前为止,已经工 第7 页 一个开源j 2 s e 平台的设计和实现 作了半年时间。本人的工作包括一些设计工作和a p i 库的实现工作,主要工作是 a p i 库的实现。 设计方面的工作主要包括平台整体的架构设计,以及主要模块的内部具体设 计。平台的整体架构设计是由a p a c h e 组织和各大合作公司的资深成员共同合作 完成的,每一个参与项目的工程技术人员都必须了解这个整体的划分和架构,为 保持内容的完整性,这个方面的内容将会在本文中加以一定的说明和介绍;在具 体的模块设计方面,本人主要参与了a p i 库的划分和设计。a p i 库是整个j 2 s e 平台最大最复杂的部分,实现了几乎所有j 2 s e 平台的对外表现功能。开源a p i 库的设计,必须要将整个a p i 库进行合理划分,然后由不同组织分别独立开发, 保证开发的效率和可移植性。这样,就要求一个面向模块化的设计思想。本人参 与的a p i 库的设计工作,就主要在于库的划分和重构,包括:对l a n g ,u t i l , n e t ,i o n i o 等模块的划分做出可行性研究;对它们进行具体划分;分配相关的 外部接口和内部本地代码模块。这些内容将会重点在本文设计方面的章节加以介 绍。 实现方面的工作主要包括a p i 库的实现、j v m 的实现、跨平台函数库的实现 等。本人的主要工作就在a p i 库的实现上。这个部分的工作主要依靠开发人员根 据设计架构,阅读a p i 文档,编写测试代码,编写实现代码,进行单元测试和集 成测试来实现。在这部分的工作当中,开发人员将使用非常多的软件开发技术和 软件工程手段,来确保a p i 库的质量。本人参与了很多a p i 库的实现和测试,主 要包括:u t i l 模块当中的日志记录包的实现:n i o 模块当中c h a n n e l s 类和多个 网络类的实现:n i o 模块和n e t 模块共同部分的重构工作;e c l i p s e 、t o m c a t 等 开源平台上的移植和测试工作,等等。这些内容将会重点在本文实现方面的章节 加以介绍。 本人在完成硕士阶段学习以后,将会继续参与这个项目的开发。 1 4 本文的主要内容 基于上述背景,本文将要重点介绍一下这个开源j 2 s e 平台的设计和实现, 通过介绍本人参与和了解的设计和实现工作情况,较为完整地阐述这个平台的设 计思想和实现技术。 第8 页 一个开源j 2 s e 平台的设计和实现 本文的主要内容和相关章节的简介如下: 本文第一章提出项目的背景和基本情况,简介国内外相关研究状况,概括全 文内容。 本文的第二章着重介绍开源j j s e 平台实现的构思。首先,本章将对j a v a 技 术和j j s e 平台做一番简要介绍;介绍j a v a 技术的基本发展历程;介绍目前在计 算机行业内,j a v a 遇到的挑战和问题。随后,本章将介绍开源软件技术和主要 的开源软件组织。最后,本章将提出这个开源j 2 s e 平台的构思,简述其目标和 意义;概括其难点和主要问题。 本文第三章着重介绍平台的设计情况。首先,本章将提出这个开源平台的设 计目标。随后,本章将介绍这个平台设计的整体架构。最后,本章将针对设计目 标,按照整体架构的划分,以“模块化”划分的思想为基础,逐一地介绍这个平 台当中的各个组件的设计情况,重点介绍a p i 库、g y m 、o a l 等组件的设计。 本文第四章着重介绍平台的实现技术。本章将依次对上一章当中介绍的主要 组件,如a p i 库、j v m 和o a l 等,分别仔细的做出实现方面的介绍,给出具体的 实现方法和相关技术介绍。 本文第五章着重介绍项目的质量保证措施。首先,本章将介绍实际项目开发 过程当中的一些质量方面的挑战。随后,本章将关注品质保证方面的话题,将测 试优先、持续集成、结对编程等技术手段做一个介绍,并对项目的相关法律话题 进行一定的介绍。 本文第六章介绍项目目前取得的成果,对全文内容做一个总结,对这个平台 的设计架构、实现技术和项目开发做一个前景展望。 第9 页 个开源j 2 s e 平台的设计和实现 第二章开源j 2 s e 平台的构思 j a v a 技术是一种计算机编程工具,从1 9 9 5 年正式推出至今,j a v a 已经成为 世界上最为成功的软件开发平台。但是,j a v a 现有的发展模式限制了它的进一 步发展。此时,开源软件的构思给j a v a 的发展带来了瓶的希望和选择。本章将 对j a v a 的基本特性和发展现状做一个简要的介绍,然后讨论一下开源j 2 s e 的构 想对j a v a 未来发展的影响。 2 1j a v a 技术与j 2 s e 平台 2 1 1j a v a 与j 2 s e j a v a 语言是一种先进的、有生产力的高级语言。它稳定,安全,便于开发, 它的很多特性,深深的影响了计算机软件技术的发展。它的主要特性有: 1 面向对象 j a v a 语言是一种比c + + 语言更为纯粹的面向对象( o b j e c to r i e n t e d ) 的语言, 它抛开了向c 语言兼容的负担,建立在完全面向对象的基础之上。 2 平台无关 用j a v a 写的应用程序不用修改就可在不同的软硬件平台上运行。j a v a 虚拟 机( j v m ) 在目标码级别实现平台无关性。 3 分布式 j a v a 提供了一整套的网络支持程序库,开发人员可以利用这个库进行网络 程序设计,方便得实现j a v a 的分布式特性。 4 可靠性 j a v a 是强类型的语言,要求显式的方法声明;j a v a 不支持指针,杜绝了内 存的非法访问;j a v a 的自动垃圾收集机制防止了内存丢失等动态内存分配导致 的问题;j a v a 解释器运行时实施检查,可以发现数组和字符串访问的越界。这 些特性,强化了j a v a 的可靠性。 5 安全性 第1 0 页。 一个开源j 2 s e 平台的设计和实现 j a v a 的字节码校验器、j a v a 解释器、类装载器 4 等组件都考虑了安全检查 的机制,使得j a v a 成为安全的编程语言。 6 多线程 跟c + + 语言相比,j a v a 语言内置了丰富的多线程库和底层代码支持,使得多 线程容易实现。 j a v a 作为一个强大的平台,可以开发桌面应用、企业级i t 应用以及移动设 备的应用。基于应用类型,j a v a 平台分为以下三种版本 5 : 1 j 2 s e 代表j a v a2s t a n d a r de d it i o n ,也叫c o r ej a v a ,包含了j a v a 语言的核心 部分,主要用于开发跨平台的桌面应用。 2 j 2 e e 代表j a v a2e n t e r p r i s ee d i t i o n ,基于j 2 s e ,提供了企业级1 t 应用的一 些扩充支持,主要开发企业级i t 应用。 3 j 2 m e 代表j a v a2m i r c oe d i t i o n ,是j 2 s e 的精简版本,用于移动设备如手机、 p d a 的应用。 可见,j 2 s e 是整个j a v a 技术的核心,是所有j a v a 应用的基石。而j 2 s e 本 身又是一个完整而庞大的体系结构,它的基本结构如图1 所示 3 。 第1 1 页。 个开源j 2 s e 平台的设计和实现 圈1j 2 s e5 0 体系结构图 上图中,有几个部分特别的重要: 1 j w 就是j a v a 的虚拟机,j a v a 虚拟机是一个想象中的机器,在实际的计算机上 通过软件模拟来实现。j a v a 虚拟机有自己想象中的硬件,如处理器、堆栈、寄存 器等,还具有相应的指令系统 1 。j v m 在执行编译好的程序时,把字节码解释成 具体平台上的机器指令执行,这是实现平台无关性的关键。 2 a p i 库 也就是j 2 s e 的“类库”( c l a s sl i b r a r y ) ,包含了丰富的应用接口和功能组 件,实现了绝大部分的j a v a 高级功能,是j 2 s e 最常被程序员直接用到的部分。 3 应用工具 j a v a 的辅助工具,帮助开发人员生成、部署、监控和调试程序。 j a v a 程序的简单执行过程如图2 所示。代码被编译器翻译成统一的二进制 字节编码形式,在不同的平4 2 ,被相应的j v m 解释执行,从而实现了“一次编 写,到处使用”( w r i t eo n c e ,f u r la n y w h e r e 2 ) 。 第1 2 页 2 1 2j a v a 的发展 个开源j 2 s e 平台的设计和实现 图2 简单j a v a 程序的执行过程 早在1 9 9 1 年,s u n 公司的j a m e sg o s l i n g 领导了一个秘密团队,开发出了 j a v a 语言的前身o a k 2 。1 9 9 5 年,j a v a 语言正式问世,在互联网应用当中发挥 了令人惊奇的潜能。如今,j a v a 已经成为世界上最有生产力的语言之一,世界 上到处可见j a v a 的应用。 j a v a 是发展的语言,从最开始的j d k1 0 版,到目前最先进的5 0 版本, j a v a 显示出了蓬勃的发展潜力。在发展的道路上,j a v a 的众多开拓者实现了很 多先进的思想,如垃圾收集器、文档注释自动生成、即时编译器( j i t ) 等等。 s u n 公司作为j a v a 语言的发明者,一直控制着j a v a 语言的发展。在j a v a 技术的授权文档当中,s u n 明确指出j a v a 不是开源的,其公布出来的源代码可 以用来学习和帮助理解,但是不可随意改动和发布新版本 2 。 j a v a 的发展是通过一个叫做j c p 的组织来进行的。j c p ( j a v ac o m m u n it y p r o c e s s ) 成立于1 9 9 5 年,是使有兴趣的各方参与定义j a v a 的特征和未来版本的 正式过程。j c p 使用j s r ( j a v as p e c i f i c a t i o nr e q u e s t s ) 作为正式规范文档, 描述被提议加入到j a v a 体系中的规范和技术 6 。j c p 不断的通过j s r 来规范 j a v a 未来的发展。不过,j c p 实际上处于s u n 公司的控制之中。 j c p 产生的文件,通常是指导性的标准和规范,规定了j a v a 的特性,这些 规范是公开的,可以被利用的。遵照这些规范,任何个人、公司和团体都可以开 发自己的完整或者部分的可运行代码,这些实际可用的代码,叫做j a v a 平台的 一个“实现”( i m p l e m e n t a t i o n ) 4 。目前,完整的j 2 s e 实现只有s u n 的j d k 系 列,而其他的j 2 s e 实现,如b e a 公司的j d k ,基本上都是在s u n 的授权之下, 。第1 3 页 一个开源j 2 s e 平台的设汁和实现 基于s u n 的核心组件,对某一些方面做出了一些优化和改进,本质上还是以s u n 的j d k 为基础的。 2 1 3j a v a 技术现状 在最新版本的j 2 s e 5 0 当中,j a v a 平台引入了很多的新特性,如“泛型” 编程、自动装箱机制、枚举类型、同步集合、格式输入输出 3 等等,极大的丰 富了平台的功能,提高了应用的性能。但是,业界的竞争也是残酷的,j a v a 如 今推出的新特性,虽然十分强大,但是其中很多特性并不是j a v a 首创的了,而 是j a v a 在追赶和借鉴其他语言。 在j a v a 语言创造奇迹的那段时间里,微软公司借鉴了j a v a 的特性,推出了 自己的开发框架n e t ,其中的c # 语言脱胎于j a v a 语言,c l r ( c o m m o nl a n g u a g e r u n t i m e ) 对应于j v m 。在很多地方,强大的微软投入了很多的功夫,使得n e t 框 架性能优异,不仅实现了j a v a 技术当中的很多优点,如面向对象、异常处理等 等,而且还解决了很多j a v a 当中的很多性能上的缺点,提高了虚拟机的执行效 率。在短短的时间内,n e t 和j 2 e e 分庭抗礼,成为当今软件开发技术的两大阵 营。 对比n e t 技术的突飞猛进,j a v a 的发展却显得比较缓慢。s u n 公司在财力 上无法像微软一样支持j a v a 技术的发展,在授权上又牢牢控制了j a v a 的发展, 使得j a v a 阵营慢慢的失去了原有的优势,两大阵营的平衡逐渐发生偏移。 j a v a 语言最有活力的地方,在于世界上成千上万的开发者基于j a v a 平台开 发出来的优秀的组件和应用。在竞争激烈的今天, 为了能够实现更为性能优异 的组件,也为了能够在竞争中不至于落后,无数开发者都希望s u n 公司能够公开 j a v a 的源代码,这样,全球的开发者就可以集思广+ 益,共同努力,以前所未有 的力度推动j a v a 语言的发展。不过,基于兼容性的考虑,s u n 公司没有同意这 样做,j a v a 依然不是开源的平台,所有跟j a v a 本身相关的发展必须通过j c p 流 程。 2 2 开源软件技术 近年来,随着软件开发技术的进步和全球软件产业的交流融合,开放源代码 第1 4 页 一个开源j 2 s e 半符的设计和荽现 的软件越来越受到业界的重视。 开源软件的英文为o p e ns o u r c es o f t w a r e ,简称为o s s 。开放源代码软件就 是在开放源代码许可证下发布的软件,以保证软件用户自由使用及接触源代码的 权利,同时也保障了用户自行修改、复制,以及再分发的权利 7 。 目前业界有很多开源的组织倍受瞩目,他们的产品甚至在性能和功能上还超 过了某些收费的软件: 1 a p a c h e a p a c h e 组织是一个1 9 9 9 年成立的庞大的开源软件组织,拥有自己完整的开 发团队和管理机构,拥有自己的开源软件证书和规范,是整个开源软件世界当中 最引人注目的组织。 它拥有许多开源项目,其中有很多是程序员们耳熟能详的,如实现m v c 模式 的经典框架s t r u t s ;广泛被采用的j s p s e r v l e t 容器t o m c a t :开源的邮件服务 组件j a m e s ;对j a v a 集合框架的有效扩充j a k a r t ac o m m o n s ;j a v a 当中最好的 日志管理组件l 0 9 4 j ;以及大名鼎鼎的项目集成工具a n t 等等 8 。它是从最开 始的a p a c h ew e bs e r v e r 发展而来的,而这个性能卓越的开源网络服务器软件, 一直以来就以压倒性的优势领先于微软的i i s ,占据了大部分的市场份额。 2 g n u g n u 是u n i x 世界的开源组织,它的主要贡献是开源的操作系统l i n u x 。 3 j b o s s j b o s s 是开放源代码的,遵从j 2 e e 规范的,1 0 0 纯j a v a 的e j b 服务器。j b o s s 的用户数以万计,遍及世界。 4 m o z i l l a m o z i l l a 最有名的产品就是网络浏览器f i r e f o x ,这个从l i n u x 浏览器 m o z i l l a 发展而来的开源产品已经越来越在w i n d o w s 系统中体现出优于i e 浏览 器的特性了。 5 其他 当然,其他很多的开源产品也令人关注,如p e r l 、p h p 、m y s q l 、f r e e b s d 等 等。 有了开源组织,软件业就不再是少数大公司一统天下的格局了,每一个开发 第15 页 个开游j 2 s 平台莳设计和实蜕 人员,都可以接触到产品的源代码,对它提出自己的看法;甚至可以直接加入项 目开发流程当中,直接推动产品的发展。虽然产品是免费的,但是开源产品本身 巨大的价值,可以保证他们被高质量而又高效率的开发和维护。 2 3 开源j 2 s e 平台 2 3 1 构思和意义 有了开源的操作系统l i d l i x ,为什么不能有开源的j 2 s e 平台? 在j a v a 发展 到今天这个格局的情况下,不少开源的j a v a 项目应运而生。j a v a 开发者十分渴 望j a v a 本身也能够开源,这样,他们就可以根据底层的平台细节,开发出更好 的j a v a 产品。 但是,j a v a 事实上不是开源的,它的发展受到限制。为了解决当前j a v a 面 临的问题,迎接其他平台的挑战,有一种构思越来越受到业界的重视,那就是构 建开源j 2 s e 平台的想法。 这个想法的基本内容是:依照现有的j 2 s e 框架,用开源的方式,完成一个 功能完全一样的j 2 s e 实现,这样,就证明了开源j a v a 的可行性。随后,这个开 源的j 2 s e 实现必定会以它的自由和灵活的特性,受到业界重视,今后的j c p 也 会随之改变,以开源的思维来发展未来的j a v a 技术。可以想象,在这个开源j 2 s e 的基础上,开源的j 2 m e 和j 2 e e 实现也可以很容易的实现。最后,整个j a v a 阵 营将充满生机和活力,因为,那个时候,j a v a 将不再是一家公司的专利,而是 所有开发者共同的财富,所有的人、公司和团体都可以自由地提出自己的j a v a 版本,j c p 则会维护一个开源的标准版本保证兼容性,真正实现了“大家的j a v a 大家来推动” 9 。 这个构想并不是迫使s u n 公司放弃自己的权利,而是自己开发一套完整的 j 2 s e 实现,与现有的s u n 的实现共同存在,给广大开发者一个另外的选择,在 推动j a v a 技术发展的同时也用实际项目来激励开源软件的发展。 这个想法是可行的,因为j 2 s e 的规范是公开的,可靠的,任何团体都可以 提出自己的实现,而不仅仅只是目前的一种选择而已;这个想法也是很有价值的, 因为目前确实没有第二个完整的j 2 s e 实现,开源j 2 s e 平台的出现将极大的推动 技术进步。 一篱1 6 页 2 3 2 问题和难点 一个开源j 2 s e 平台的设计和实现 作为一种开创性的想法,开源j 2 s e 的实现有着很高的难度,又很多的重要 事项值得注意: 1 模块划分 如图1 ,j 2 s e 平台是一个庞大的体系,必须以最低的耦合度划分出来,准 确规定好互相之间的接口,才可以把技术风险降到最低。 划分是一个很复杂,同时又是很重要的一个问题。因为在s u n 公司的最初设 计里面,没有考虑过模块化和开源的想法,所以固有的耦合性比较大。而且,这 个划分既有全局的划分,即把整个平台划分为几个大的组件,如j v m ,a p i ,t o o l s 等等,也有局部的划分,例如把a p i 库进一步划分成一些软件包的集合。 2 可用性 开源软件的开发方式比较自由,而且开发人员可能来自世界各地,不同的背 景,不同的时区,不同的文化,使得协作和沟通变得十分困难,这对于软件产品 的质量和可用性造成了一定的影响。 鉴于这个问题,开源j 2 s e 实现必须由一个开源组织统一领导,开发者必须 遵守一定的质量保证原则和方法,还需要有一整套的方法来检验产品质量。 3 兼容性 作为一个开源产品,这个实现并不需要,也不能够在现有实现的基础上有所 改动,一定要保证兼容。为了做到兼容现有实现,开发者必须做相应的工作。 4 维护与升级 开源产品的最大问题之一就是难于维护和升级。这个实现的关键就在于有一 个完整的开发流程和一个强大的开源社区支持,保证维护和升级的可靠。 5 知识产权 有一个法律问题值得人们的注意,那就是:如何保证开源版本的j 2 s e 不会 抄袭现有s u n 的j d k 源代码? 根据s u n 的授权,改动j d k 的源代码是非法的 2 。 根据知识产权一般规则,法律不保护想法和公开的规范,所以参照规范开发实现 是可以的,但是法律保护具体的实现,抄袭或者借鉴已有的非开源的实现代码, 是非法的。 鉴于以上原因,这个开源j 2 s e 平台的开发方式将要受到一定的限制。在开 第1 7 丽一 个开源j 2 s e 平台的设计和实现 发过程当中,所有的开发人员必须签订协议,保证自己过去没有,在开发过程中 也不会查看s u n 公司的j d k 实现代码;而且,开发流程中还要加入一些特殊的软 件工程流程,来保证代码的“纯洁性”。 2 4 小结 j a v a 技术,尤其是核心的j 2 s e 平台,是一种功能强大,同时又生机勃勃的 计算机软件开发技术。由于技术竞争和技术发展的需要,开发者提出了实现一个 和现有5 0 版本j 2 s e 平台完全兼容的开源版本j 2 s e 实现的构思。开源j 2 s e 的 实现是十分有意义而又富于挑战的。在下面的章节中,本文将介绍a p a c h e h a r m o n y 项目的设计和实现,这个项目,就是基于以上开源j 2 s e 平台的构思, 由开源组织a p a c h e 基金会发起和推动的一个实际项目。本人在项目当中承担了 一定的设计和实现的工作,本文的重点内容,就是介绍本人所了解和参与的该项 目的设计和实现的相关情况。 第1 8 页 一个开源j 2 s e 平台的设计和实现 第三章平台设计 为了实现以上开源j 2 s e 平台的构想,开源组织a p a c h e 提出了一个名为 h a r m o n y 的开源软件项目。这个项目就是基于上述思想,从底层虚拟机开始,实 现一个完整的开源j 2 s e 平台。从本章开始,本文将结合这个项目的情况以及本 人在项目当中的实际工作,对以上开源j 2 s e 构想的设计和实现做一个介绍。本 章将要重点介绍开源j 2 s e 平台的设计和模块划分,以及其中的主要组件的划分 情况,这是整个平台成败的关键。 3 1 设计目标 开源软件的开发流程,具有一定的自由性和不确定性。通常的情况是,来自 世界各地的开发者,在一个组织的统一协调下,分工合作,不定期的提交一些功 能模块,然后集成到一个大的平台产品当中。这样的开发方式是开源软件的固有 特征,不可改变,但是对于j 2 s e 这样的庞大体系,这样的开发模式会增加产品 的风险。 为了减小风险,也为了便于平台的升级和维护,平台的设计者就要充分考虑 以上问题,合理的划分平台,定义好模块之间的接口,降低耦合性。这个开源平 台的设计目标是: 1 符合j 2 s e 基本结构 与现有的j 2 s e 实现功能上兼容的同时,在基本的大的组件方面也要做到一 致。如j v m 、a p i 库、j i t 组件等等大规模组件必须对应一致。 2 可独立开发 为了开发的便利和风险的降低,平台的模块必须实现独立开发,各个模块之 间尽量减少耦合,这样才可以发挥开源项目的优势,避免其缺陷。 3 模块替换 在j a v a 的开源世界里,随时都有很多开源软件的出现,如果出现了某些优 秀的开源j 2 s e 组件,应该允许它们方便的替换进来;另外,如果发现本身某一 个模块实现上的不足,也可以方便的替换出去,而不影响整个平台。 第1 9 页 一个开源j 2 s e 平台的设计和实现 4 共享组件 除开提供完整的j 2 s e 实现,这个项目的另外一个有价值之处就是在于为开 源社区提供共享的j 2 s e 组件。这个目标十分重大,因为一个完整的j 2 s e 平台, 本身就意味着了聚集了很多有价值的组件。所以,平台的设计必须确保这些组件 可以方便的被共享和重用。 3 2 整体架构 完整的j 2 s e 平台的设计,应该是多个层次的。首先,应该在最抽象的层次, 按照设计目标,划分出整体的模块组件,规定好它们的互联规范;然后,应该在 比较具体的层次,在比较大的组件当中再次划分予模块,例如a p i 库的进一步划 分。 整体的架构如图3 所示。 图3 平台总体架构图 在这个图当中,各个主要组件的基本情况如下: 1 j v m j v m 组件用于实现开源的j a v a 虚拟机。这个部分主要考虑虚拟机内部应该 实现的类装载、验证和执行引擎等功能。虚拟机应该支持j i t 。同时,为了组件 独立,它应该规定好v m 的接口,便于上层a p i 库透明的替换和升级j v m 。 2 c l a s sl i b r a r y 这就是a p i 库,是j 2 s e 的核心,也是最具活力的部分。虽然j a v aa p i 内部 一第2 0 页 一个开源j 2 s e5 f 台的设计和实现 已经分好了很多的包( p a c k a g e ) ,但是,真正实现这些a p i 还需要本地代码,它 们的关系很复杂。所以,基本的做法就是将已有的包重新划分,尤其是本地代码 部分要做出相应的划分。 3 o a l 这个组件是一个位于平台底层的组件,负责与0 s 交互。不同的0 s 有不同的 系统调用,这个o a l 组件就是整合了不同平台的系统调用,将它们透明的提供给 上层的j v m 或者j a v aa p i 使用的。o a l 是实现平台无关性的关键。 4 辅助工具 如同现有j 2 s e 平台的实现一样,开源的实现也要提供一定的辅助工具,例 如调试工具、内存检测工具和性能分析工具等等。不过,这个部分比较松散,这 些工具一般也是可选的,不是必需的,与整个系统的关联不是特别紧密。 3 3a p i 库设计 a p i 库,也就是c l a s sl i b r a r y ,是j 2 s e 当中最复杂和最常用的部分。它提 供了开发者丰富的编程接口,给j a v a 应用程序提供了实现的基础。更重要的是, 在j 2 s e 的a p i 基础上,很多产品被开发出来,如a p a c h e 的j a v a 组件等等。所 以说,a p i 库是开发者直接面对的编程工具,也是j a v a 系统的基础。 a p i 库的目标,是要实现一个标准j 2 s e 库,和现有的s u n 的j d k 兼容一致。 虽然不会增加特性,但是在不看s u n 的源代码的限制下,设计和开发这样的a p i 库,依然是一项艰巨的工作。 c l a s sl i b r a r y 系统的设计,主要上分为以下四个大类,三十多个模块,如 图4 所示。图中所示只是主要模块,其他的小模块包含在某些模块当中( 如反 射模块就包含在l a n g 模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论