已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 产品的协作开发是复杂的团队活动,产品开发涉及到不同的职能领域的参与、 使用不同的应用程序或操作环境,分布在不同的地点,具有保密性等因素,这一 切通常无法有效地加以协调。尤其针对一个企业、学校内部,我们又迫切需要及 时地快速地解决所产生的一系列问题。种种原因使我们不得不考虑如何最大限度 地进行局域网内部的有效协作,如何在开发环境中增强团队之间的信息流通,如 何充分利用现有的资源环境等。 本文详细介绍了一种基于n e t b e a n s 插件的协同开发平台的设计,通过基于 n e t b e a n s 插件的j a v a 开发,使得新的协同开发平台能提供基于局域网无服务器可 跨网段的单点实时操作协作和组群协作。由于突破了传统客户端服务器模式和具 体平台的依赖性,本协同开发平台可以较流畅地进行局域网跨网段的实时协助, 使团队中的不同成员以一种简单的方式进行更紧密的合作,帮助开发者大大提高 了协同开发的开发效率。 关键词:j a v as o c k e t ,协同开发,n e t b e a n s 插件,跨平台 a b s t r a c t t h ep r o d u c tc o l l a b o r a t i o n d e v e l o p m e n ti s ac o m p l c x e da c t i v i t y , w h i c hi n c l u d e s d i f f e r e n tr o l e s p a r t i c i p a t e ,u s i n gd i f f e r e n ta p p l i c a t i o na n do p e r a t i o ne n v i r o n m e n l d i f f e r e n tl o c a t i o na n dc o n f i d e n t i a l i t yr e a s o n s a l lo ft h e s ef a c t o r si sd i f f i c u i tt ob es o l v e d b yt r a d i t i o n a lm e t h o d s f o rt h ei n t e r n a lu s ei ne n t e r p r i s ea n dc a m p u s ,w ea r ee a g e rt 0 s o l v ea l ls e r i e so fp r o b l e m si nt i m e s om a n yf a c t o r sm a k eu st oc o n s i d e rh o w t o c o o p e r a t ei n t h em o s t e f f i c i e n c y i nal a n ,h o wt o i m p r o v et h ei n f o r m a t i o n c o m m u n i c a t i o ni nat e a mw o r k ,h o wt om a k ef u l lu s eo f t h ec u r r e n ti - e s o u r c e se t c t h i sp a p e ri n t r o d u c ea l lc o l l a b o r a t i o nd e v e l o p m e n tp l a t f o r m d e s i g nb a s e do n n e t b e a n sp l u g i n b yu s i n gn e t b e a n sp l u g i na n dj a v a d e v e l o p m e n t t h i sn e wp l a t f o r mc a n p r o v i d er e a lt i m es i n g l ep o i n ta n dg r o u pc o l l a b o r a t i o ni nal a nc r o s sd i 岱湘m s e g m e n t sw i t h o u ts e v e r s s i n c ei tb r e a kt h r o u g ht h et r a d i t i o n a lc l i e n t s e r v e rm o d ea n d s p e c i f i cp l a t f o r md e p e n d e n c y , t h et e a mm e m b e rc a nc o o p e r a t ee a c ho t h e rr e a lt i m ec o r s s d i f f e r e n ts e g m e n t si nal a n s m o o t h l y t h i sh e l pt h et e a mm e m b e r sw o r km o r ec l o s e l v i nas i m p l ew a ya n d i m p r o v et h ee f f i c i e n c yo ft h ec o l l a b o r a t i o nd e v e l o p m e n t k e yw o r d s :j a v as o c k e t , c o l l a b o r a t i o nd e v e l o p m e n t , n e t b e a n sp l u g i n ,c r o s s p l a t f o r m 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其它人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名: 蓬显 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密,在解密后适用本授权书。 本人签名:懿 导师签名:日期皇芝:三! 至 第一章绪论 第一章绪论弟一早三百t 匕 我们正处在一个信息飞速膨胀的时代,软件开发模式正在发生根本性的变化。 随着软件产品的规模越来越庞大,个人单打独斗的作坊式开发方式己经越来越不 适应发展的需要。伴随着软件开发活动的团队化合作,产生了协作开发的需求, 产品的协作开发是复杂的团队活动,产品开发涉及到不同的职能领域的参与、使 用不同的应用程序或操作环境,以及不同的地点,保密性等等原因,这一切通常 无法有效地加以协调。尤其针对一个企业、学校内部,我们又迫切需要及时的快 速的解决所产生的一系列问题。种种原因使我们不得不考虑如何最大限度的进行 局域网内部的有效协作,如何在开发环境中增强团队之间的信息流通,如何充分 利用现有的资源环境等等n ,。 在一个企业的内部,或者开发一个大型的项目时,内部的某些团队人员的交 流是更有效的交流,因为只有他们才更了解这个项目,技术上也更适合去解决项 目中所产生的一系列问题,而且有的时候,我们的项目也是要对外保密的。局域 网协同开发插件的其它优点:成本低廉、易于操作;使用过程不占用网络带宽流 量,不需要额外的服务器等设备,操作简便;便于维护,以n e t b e a n s 插件形式发 布;软件较小,运行时也占用较小系统资源。 1 1 什么是协同开发 随着计算机技术特别是网络技术的迅猛发展,人们面临着更为广泛的活动范 围和更多的合作机会,群体协作规模越来越大,范围也越来越广。上世纪8 0 年代 中期确立的计算机支持协同工作( c o m p u t e r - s u p p o r t e dc o o p e r a t i v e w o r k ,c s c w ) 嵋1 技 术提供了一个群体协作环境,这个概念是由i r e ng r e i 痢p a u lg a s h m a n 在1 9 8 4 年提出 的d 钔。它能够改善群体间的协作关系,提高协同工作效率。它体现并符合信息时 代人们工作的群体性、交互性、分布性和协同性特征,其潜在的研究及应用价值 吸引了越来越多的研究和开发投入。随着分布式应用越来越广泛和变的日益重要, c s c w 的应用应用领域也成为了当前研究的热点领域。哺1 由于计算机应用领域的不断扩展和深入,软件功能从早期的科学计算扩展到 社会生活的各个方面,推动了各行业对软件质和量的迫切需求,呈现出规模增大, 服务内容改善和应用领域扩张等特征。软件产品的复杂程度不断提高,软件质量 和开发进度难以保证,软件项目的失败率也越来越大。因此当前的软件开发活动 不再是个体的短期行为,而是一种群体协作过程,需要承担不同任务的开发成员 工作在一起,协作的进行设计、解决问题并生产高质量代码。根据i b m 的一份研究 2 基于n e t b e a n s 的协同开发平台的研究 报告显示,传统的程序开发人崩大约有5 0 的时间是花费在与项目组成员交互上的 口,d e m a r c o 哺也分别指蹬开发人员在进行大型系统开发时,大约? 隔的时间是在与 袍入协同工作:同时j o n e s 潮也在文献中提到,大型软件系统8 5 的开发费用是用于 团队协作活动。等等这些研究裳明,协网软件_ 开发成为了当前复杂软件产晶开发 薛重要手段,它的关键帮核心理论是计算规支持协同工律鳇一个发展和延伸,覆 盖了所有软件开发过程中正式或非正式的通信需求和协作需求,从而计划、执行 帮协调所有在空闻和时闻上分布鹩活动与任务。 1 。2 存在的润题及研究现状 至。2 王协同开发平台存在的闻题 1 9 6 9 年,结构设计思想的提地者e w d i j k s t r a - 弘k 先“人的智力是有限的,软件 开发本身就是个很复杂的过程,并且是复杂的团队活动,产品开发涉及到不同 的职能领域的参与、使用不同的应用程序或操作环境,以及不同的地点,保密性 等等原因,这切通常无法有效建加以协调,但掰发者嚣要帮助时又应当如霸最 有效的解决呢? 目前实时协助的软件很少,但是n e t b e a n 的d e v e l o p e rc o l l a b o r a t i o n 插誊 集成予开发环境,为舜发者提供了较好的协助平台,鳃决了很多彝题。但是 我们不得不承认它也存在一些弊端。比如需要服务器、要有专门的服务器空间作 用户管理、不能有效进行互动的代码调试等工作、晨户需要联鄹蔼且要保证网络 足够畅通等等。 针对上述问题,我们采用纯j a v a 作为开发语言,n e t b e a n s 作为集成平台,历时 将近嚣个胄的时闻我稍终于开发盛这款协同开发撬俘,为开发者快速豹、及时的 解决问题,提供基于局域网无服务器可跨网段的单点实时操作协作和组群协作。 该协月开发搔彳攀完全开放源代码,并且其他久可以将它作冀一个f r a m e w o r k j 莲行功 能更加完善的c o l l a b o r a t i o n 插件制作。本插件完全在n e t b e a n s 5 0 、n e t b e a n s 5 5 开 发,在w i n d o w s x p 、s o l a r i s l 0 、l i n u x r e d h a t 、s u s e l 0 。l 进行跨平台测试,效采都缀 好。突破了传统客户端服务器模式,可以较流畅地进行局域网跨网段的实时协助, 大大提高了开发者的开发效率。 王。2 。2 协同开发平台的研究现状 计算机支持协同工作开发的研究涵盏了在复杂的组织结构内使用计算机和信 息技术支持群体工捧韵所有范畴,萁旃究范圈是广义的褥阏工作$ w ) 和广义的诗 第一章绪论 3 算机支持( c s c ) 目前c s c w 研究正处于继续发展的阶段,已形成了一套复杂的通信与 协调的机制,以及基于半结构化消息、视图耦合、s p e e c ha c t 理论的基础结构n 训国 外对c s c w 研究很感兴趣,发展势头十分强劲。近年来出版了专门刊物,如:c s c w j o u r n a l ,g r o u pa n do r g a n i z a t i o nm a n a g e m e n t ,j o u r n a lo fo r g a n i z a t i o n a lc o m p u t i n g 等, 报道该领域的最新研究成果。a c m 自1 9 8 6 年起每两年组织一次c s c w 国际会议, 欧洲的学术工作者也组织了e c s c w 国际会议,专门讨论c s c w 的理论、技术与应 用。 1 1 3 1 3 课题研究意义及重点内容 协作开发插件( c o l l a b o r a t i o ns o f t w a r e ) 其实又可以称为团队开发插件 ( o r o u p w a r e ) 。使开发者可以同时异机的对同一个项目进行协同开发。主要应该 提供开发者交流、讨论和管理等功能。我们的协同开发插件并没有集成很多根本 谈不上协作的功能,主要包括聊天及其管理功能,其中可以进行点对点聊天和组 群聊天会议;另一个主要功能是时时的协同控制。插件的最大特点是突破了传统 的服务器客户端模式,采用点对点,点对多模式。该协同开发插件是一个纯j a v a 编写的可靠、可跨网段的局域网协作软件。 我们相信,有很多时候协助不应该仅仅地局限于一段代码的协助,这样很不 利于协助者理解,也不利于提高协助的效率,该协同开发插件的权限设计方案, 会使协助者很快地理解代码的设计及其含义,辅助异机调试、运行等操作,极大 地提高了协助的效率,也同时使求助者能看清协助者的所有操作,并可以互动的 参与其中,并且可以强行改变。上面也提到了一些传统协助无法解决的一些问题, 本协同开发插件会给用户带来新的体验。这是一个十分有趣的协同控制,可以在 异机很流畅地操作n e t b e a n s ,极大地加快了协同帮助的效率和可行度。 这篇论文的重点内容包括以下几点: 分析协同开发平台的特点和当前存在的问题,面对这些问题我们如何去 解决才可以实现更高效率的协同开发。 研究n e t b e a n s 的插件如何与j a v a 网络编程,协同开发技术相结合和应 用。 研究如何在跨平台的环境中实现协同开发的应用。 4 基于n e t b e a n s 的协同开发平台的研究 1 4 论文组织结构 本文主簧研究了基于n e t b e a n s 下的协同开发平台技术,全文由五章组成: 第l 章为绪论部分。主要介绍了协同开发平台的背景和我们当前所面临的问 题 第2 章介绍了j a v as o c k e t ,i o 流,多线程等和协同开发平台相关的理论和 技术 第3 章对协同开发平台的总体需求设计进行了简要的介绍 第莲章对本文所提蹬的新的协同开发平台的设计和实现进行了具体的耀述 第5 章为总结部分,分析本论文所提出的新的协同开发平台和方法对于协同 开发研究领域的贡献,并提如未来需要进一步深入研究的内容。 第二章j a v a 网络编程基础 5 第二章j a v a 网络编程基础 2 1 1s o c k e t 的引入 2 1 套接字 在一个局域网内部,服务器和客户机进行的数据通信所使用的主要技术就是 网络编程技术。 由于在协同开发插件中,不同成员间需要传输可靠性高的控制信息,它们之 间的连接选用了t c p 套接字( s o c k e t ) i t 2 而对于大容量的图像传输信息,由于实 时性要求高,选用了负载小,可靠性相对较差的u d p 套接字( d a t a g r a m s o c k e t ) n 羽, 由于套接字技术是本系统的关键,所以下面简单介绍一下套接字。 2 1 2 套接字的编程 在j a v a 中有两个最为基本的网络t c p 套接字控件,一个是服务器端的,另。 一个是客户端的。将s e r v e r s o c k e t 类设计成在等待客户建立连接之前不做任何事 的“监听器 ,而s o c k e t 类则为建立连向服务器套接字以及启动协议交换而设计。 1 、s e r v e r s o c k e t 类n 3 】 当用户需要建立一个网络服务器时,需要使用s e r v e r s o c k e t 类来创建套接字。 例如:s e r v e r s o c k e ts e r v e r s o c k e t = n e ws e r v e r s o c k e t ( 2 5 2 5 ) ;这样,就建立了一个监听 端口为2 5 2 5 的服务器。s e r v e r s o c k e t 类还有一些其它类型的构造函数,如表2 1 所示。 表2 1s e r v e r s o c k e t 类的构造函数 函数意义 s e r v e r s o c k e t ( i mp o r t )s e r v e r s o c k e t ( i n tp o r t ) 在指定端口创建 队列长度为5 0 的服 务器套接字 s e r v e r s o c k e t ( i n tp o r t , 在指定端口创建一个最大队列长度 i n tm a x q u e u e ) 为m a x q u e u e 的服务器套接字 s e r v e r s o c k e t ( i n tp o r t ,i n tm a x q u e u e在指定端口创建一个最大队列长度为 6 基于n e t b e a n s 的拚同开发平台的研究 i n e t a d d r e s sl o c a l a d d r e s s ) m a x q u e u e 的服务器套接字,在一个多地 址主橇上,l o c a l a d d r e s s 播定该套接字约 束的豫地址 创建套接字后,通过下面的语訇通知程序无限期等待,童到有客户连接劐这个端 口 s o c k e ti n c o m i n g = s e r v e r s o c k e t + a c c e p t 0 一旦某个用户通过在网上发送一个正确的请求连接到这个端口,将返回一个 s o c k e t 对象,表示刚建立的连接。可以用这个s e r v e r s o c k e t 对象褥到这个套接 字的一个输入流读取器和一个输出流写入器。例如: b u f f e r e d r e a d e ri n = n e wb u f f e r e d r e a d e r ( n e w i n p u t s t r e a m r e a d e r ( i n c o m i n g g e t - i n p u t s t r e a m o ) ; p r i n t w r i t e ro u t = n e wp r i n t w r i t e r ( i n c o m i n g 。g e t o u t p u t s t r e a m o ) ; 服务器的输凄流将戒为客户程序的输入流,客户程序的所有输磁将进入服务器的 输入流。 当服务器帮客户端要断开连接爵,需要襞用s e r v e r s o c k e t 。c l o s e 0 语訇,将这个 服务器的套接字关闭。 总体来说,对予服务器,将不停撬行如下循环; 通过输入数据流得到来自客户的命令; 以某种方式取回并处理这个信息; 通过输出数据流给客户发送信息。 2 、s o c k e t 类n 棚 s o c k e t 对象豹剑建只是豫式地建立了客户和服务器的连接,没有显式说磊建 立连接细节的方法或构造函数。表2 2 是用来生成客户端套接字s o c k e t 的主要 梅造函数。 第二章j a v a 网络编程基础 7 表2 2s o c k e t 的主要构造函数 函数意义 p r o t e c t e ds o c k e t o创建套接字连接引发u n k n o w n h o s t e x c e p t i o n 或i o e x c e p t i o n 异常。 s o c k e t ( s t r i n gh o s t n a m e ,i n tp o r t )创建一个本地主机与给定名称的主机和 端口的套接字连接,并尝试连接到远程 主机,可以引发u n k n o w n h o s t e x c e p t i o n 异常或i o e x c e p t i o n 异常,在这个构造 函数中,h o s t 变量只是一个主机名或者 一个i n e t a d d r e s s 对象。 s o c k e t ( s t r i n gh o s t ,i n tp o r t ,创建一个本地主机与给定名称的主机和 b o o l e a ns t r e a m )端口的套接字连接,可以引发 u n k n o w n h o s t e x c e p t i o n 、异 常或 i o e x c e p t i o n 异常。 痧一i s o c k e t ( s t r i n gh o s t ,i n tp o r t ,创建一个本地主机与给定名称的主机和 i n e t a d d r e s sa d d r e s s ,端1 3 的套接字连接,可以引发 b o o l e a ns t r e a m ) u n k n o w n h o s t e x c e p t i o n 异常或 i o e x c e p t i o n 异常 s o c k e t ( i n e t a d d r e s sa d d r e s s ,用一个预先存在的i n e t a d d r e s s 对象和 i n tp o r t ,b o o l e a ns t r e a m ) 端口创建一个套接字,可以引发一个 i o e x c e p t i o n 异常 s o c k e t ( s t r i n gh o s t ,这个构造函数将创建一个套接字到指定 i n tp o r t ,主机的指定端口,并且尝试连接。它连 i n e t a d d r e s sl o c a l a d d r , 接到前两个变量指定的主机地址和端 i n tl o c a l p o r t )口。 s o c k e t ( i n e t a d d r e s sa d d r e s s ,这个构造函数将创建一个t c p 套接字 i n t p o n )到指定主机的指定端口,并且尝试建立 连接。它通过用一个i n e t a d d r e s s 对象 到指定的主机而不是主机名来区分。 在上述s o c k e t 的构造函数中,i n e t a d d r e s s 为i n t e m e t 中的标准地址;参数 a d d r e s s 用于指定s o c k e t 通信的i p 地址;p o r t 为用于连接的端口,端口总是指 8 基于n e t b e a n s 的协同开发平台的研究 定为0 到,6 5 5 3 5 之间的整数,但实际上其数值范围一般应大于1 0 2 4 ;另外,还 可以铡耀字符串形式表示的远程主撬名称,来进行套接字的连接。使震表2 。3 中 的方法,可以在任何时候检查套接字地址和相关端口信息。 表2 3 套接字s o c k e t 类的方法和说明 方法说明 i n e t a d d r e s s 返回和s o c k e t 对象耀关的i n e t a d d r e s s g e t l n e t a d d r e s s 0 i n tg e t p o r t o 返回与该s o c k e t 对象连接戆远程端西 i n tg e t l o c a l p o r t o 返回与该s o c k e t 对象连接的本地端口 一里s o c k e t 对象被创建,同样可以检查它获得访问与之相连的输入和输出流 的权力。如果s o c k e t 出于网络连接中断霹失效,这些方法都能够弓| 发i o e x c e p t i o n 异常。s o c k e t 类串翡输入、输出方法及说翳如表2 4 所示。 表2 。莲套接字s o c k e t 类孛麓至内隽法及说明 方法说明 i n p u t s t r e a m返霾与调用套接字有关赡i n p u t s t r e a m g e t l n p u t s t r e a m 0 类 o u t p u t s t r e a m返回与调用套接字有关的o u t p u t s t r e a m g e t o u t p u t s t r e a m 0 类 v o i dc l o s e 0 关闭i n p u t s t r e a m 和o u t p u t s t r e a m 举铡来说鳊一下套接字构造函数。 s o c k e ts o c k e t = n e ws o c k e t ( “1 9 2 1 6 8 1 0 1 2 1 1 , 2 5 2 5 ) ; 曩户可以通过将璎地址帮端嗣号转送给s o c k e t 熬构造涵数,以打开一个套接 字。用户可以通过读取套接字打开数据流,还可以设置连接字的最长等待时间。 b u f f e r e d r e a d e ri n = n e wb u f f e r e d r e a d e r ( n e wi n p u t s t r e a m r e a d e r ( s o c k e t g e t l n p u t - s t r e a m ( ) ) ) ; s o c k e t s e t s o t i m e o u t ( 1 0 0 0 0 ) ;最长等待l o 秒 在完成了连接任务以后,需要启用s o c k e t c l o s e 0 将该连接关闭。 第二章j a v a 网络编程基础 9 2 2 1i o 流的引入 2 2i o 输入输出流 输入输出处理是程序设计中非常重要的一部分,比如从键盘读取数据、从文 件中读取数据或向文件中写入数据等等。j a v a 把这些不同类型的输入、输出源抽 象为流( s t r e a m ) ,用统一的接口来表示,从而使程序简单明了。 流本质上是将数据从程序传送给外部设备,如文件或网络连接的方法。用户 将某些内容从一端输入,并从另一端输出来。流可以看成是数据的导管,导管的 两端,一端是源端,一端是目的端。数据从源端进行输入,从目的端输出。流的 使用者不用考虑流的内部数据是如何传输的,只需要向源端输入数据和从目的端 取出数据即可。 流的两端都有数据缓冲区可以暂存数据,这样接收端可以不必每时每刻都监 视流是否有数据需要接收,数据来了之后放在缓存区内,等需要的时候再取出。 而发送端也不必每一个字节都调用发送方法,而是等集中了一定数量的数据后再 一起发送,这样可以大大提高发送效率。 2 2 2 流的工作过程 程序可以读出流或写入流。读出流的时候,程序打开一个信息源,这个信息 源可以是文件、内存数据或s o c k e t ,然后按照一定的顺序读出,图2 1 展示了这 个过程。 图2 1 流的读出 写入流的时候,程序打开一个信息写入区,这个写入区同样可以是文件、内 存数据、s o c k e t 等任何一种形式,按照特定的顺序写入,图2 2 展示了这个过程。 l o 基于n e t b e a n s 的惦同开发平台的研究 豳2 2 溅的写入 读和写是相反的隔个过程,但它们在步骤上是基本一致的,表2 5 对读和写 酶过程进行了比较 袭2 5 读写过程比较 读 写 打开一个流打开一个流 如果有信息,则读出如果有信息,则写入 关闭流关闭流 2 3 多线程 2 3 1 多线程的概念 一个程序或进程能够毽含多个线程,这些线程霹以稷据程序的代码执霉亍携应 的指令。多线程d 钔看上去似乎在并行执行它们各自的工作,就像在一台计算机上 运行着多个处理槐一样。在多处理枕计算概上实现多线程时,它彳f 确实可以并行 工作。和进程不同的是,线程拭享地址空间。也就是说,多个线穰能够读写相同 的变量或数据结构。 编写多线糕程序时,你必须注意每个线程是否干扰了其他线程的工作。可以 将程序看作一个办公室,如果不需要共享办公室资源或与其他人交流,所有职员 就会独立并行地工佟。菜伞职员若要帮其他人交谈,当盟仅当该职员在“昕社且 他们两人说同样的语言。此外,只有在复印机空闲且处于可用状态( 没有仅完成 一半的复印工作,没有纸张阻塞等阕题) 曩季,职员才能够使用它。在j a v a 程序孛 互相协作的线程就好像是在一个组织良好的机构中工作的职员。 在多线程簇序中,线程可以从准备就绪队列中餐裂,并在可获褥的系统c p u 上运行。操作系统可以将线程从处理器移到准备就绪队列或阻塞队列中,这种情 况可以认为是处理器“挂起”了该线程夸同样,j a v a 虚拟机( j v m ) 也可以控制 线程豹移动:在协作或抢先模型中从准备就绪队剃中将进程移到处理器中,于是 该线稷就可以开始执行它的程序代码。 第二章j a v a 网络编程基础 2 3 2j a v a 中线程的实现 许多其它程序语言也支持多线程。但使用这些语言中的多线程必须调用一个 附加的程序开发包。j a v a 本身就有支持多线程的包( j a v a 1 a n g t h r e a d 包) ,其思 想是将一个虚拟的c p u 封装在j a v a 1 a n g t h r e a d 包中,每个线程的代码通过t h r e a d 类和虚拟的c p u 打交道,而j a v a 虚拟机占用一个进程,同时运行许多虚拟的 c p u ,多个虚拟c p u 之间的协调不需要我们编码,这就使得编写多线程程序变得 容易多了。 在j a v a 中实现多线程有两个途径n 射:继承t h r e a d 类和实现r u n n a b l e 接 口。 1 、继承1 1 鹏a d 类 ” 我们可以通过继承j a v a 1 a n g 包中的t h r e a d 类来创建自己的线程对象,该继承 类重写t h r e a d 类中的r u n 方法。由于j a v a 中不能多重继承,因此该继承类只 能继承t h r e a d 显得不够灵活。t h r e a d 线程类有很多方法,可以方便地使用这些 方法来实现多线程技术。下表列出了t h r e a d 类的一些常用的基本方法。 表2 6t h r e a d 线程类的基本方法 方法名说明 t h r e a d ( )构造一个空线程 t h r e a d ( r u n n a b l e )用指定的目标构造线程 。 叫。 t h r e a d ( s t r i n g )用指定的名字构造线程 t h r e a d ( t h r e a d g r o u p ,s t r i n g ) 用指定的线程组和名字构造线程 a c t i v e c o u n t ( )返回线程组中使用中的线程数 c u r r e m t h r e a d ( )返回当前执行的线程 d e s t r o y ( )破坏当前的线程 r e s u m e ( )重新启动一个挂起的线程 s l e e p ( )临时将线程的执行停止一段指定的时间 s t a r t ( )启动线程的执行 s t o p ( )终止线程的执行 s u s p e n d ( )临时挂起线程的执行 2 、实现r u n n a b l e 接口 我们还可以通过实现r u n n a b l e 接口来作为一个线程的目标对象,这种方法 用r u n n a b l e 目标对象初始化t h r e a d 类,由目标对象来提供r u n ( ) 方法。这种方 法比较灵活,实现r u n n a b l e 接口的同时,还可以继承其它类。不过,正因为 1 2 基于n e t b e a n s 的协同开发平台的研究 r u n n a b l e 是一个接口,因此,它所定义的所有方法都需要重新进行定义。 逶过r u n n a b l e 接翻,在该接墨中定义r u n ( ) 方法的接露。所谓接口跟类非常类 似,主要用来实现特殊功能,如复杂关系的多重继承功能。在此,我们定义一个 实现r u n n a b l e 接口的类,在该类中定义自己的r u n ( ) 方法,然后以该类的实例对象 为参数调用t h r e a d 类的构造方法来创建一个线程。 第三章协同开发插件的需求分析与设计 1 3 第三章协同开发插件的需求分析与设计 3 1 总体需求分析 通过s u n 公司近年来一系列活动,我们可以看出j a v a 行业未来技术发展的 趋势是简化j a v a 平台编程复杂度,提高开发速度和效率。在j s r 2 9 2 的大力支 持下,包括g r o o v y 、r u b y 、p y t h o n 、b e a n s h e l l 等可能会在j a v a 平台大放异彩, 2 0 0 7 年4 月s u n 公司n e t b e a n s 推出了6 0b e t am i l e s t o n e 7 版本,其中引入了 g e n e r i cl a n g u a g es u p p o r tf r a m e w o r k ,这个框架又可以迅速扩展对任意脚本的支 持。因此,本插件开发的着眼点放在提高实际开发效率上,而不是简单的选择对 某一脚本语言或应用扩展的支持上。 局域网的协作开发不仅仅是一个技术上的问题,更涉及管理等方面的因素, 我们认为不论是当前的包括n e t b e a n sc o l l a b o r a t i o n n 引、还是e c l i p s e 的j g e a r e c l i p s e n 刀等众多插件已不能完全满足一个企业局域网内部协作开发的需求,尤其 是对开发者个体来说。他们的功能都比较单一,要么注重在聊天,要么注重在文 件共享。而且两个平台的插件都有一个共同的特点,即都需要使用服务器,都是 针对广域网用户设计。而且大多的可实时修改的协作软件,都只允许修改某段或 某个代码文件,而不能从整体上进行宏观的修改和把握,不能进行其他的协助, 比如你想问一下协助者为什么我的t o m c a t 总是配置不好,如何建立一个h i b e r n a t e 项目,我导入一个3 d 模型到j a v a 3 d 的场景中,为什么总是有问题等等这些问题, 都不是单单通过协助某段代码可以解决的,有时候我们也更希望实时看到协助者 是怎么样解决的,种种这些设计会存在很多的问题,单从表层来看就还存在以下 问题: 用户需要联网,而且要保证网络足够畅通。 要保证服务器的性能足够好或足够多。 要有专门的服务器空间作用户管理。 因此针对这种特定的局域网协作开发的团队合作方式,我们迫切需要一种新 的方式来提高协同开发的效率。 3 2 开发平台 该协同开发插件是作为n e t b e a n s l d e 的插件发布的,较好的利用了n e t b e a n s 的丰富资源,同时也极大地方便了j a v a 开发者进行协助开发。n e t b e a n s 是平台级 的集成开发环境,极大地方便了我们进行功能的拓展。 1 4 基于n e t b e a n s 的协同开发平台的研究 之所以选择n e t b e a n s 平台是因为它具有以下的优势轴田: 加快上市时间 n e t b e a n sp l a t f o r m 提供桌面应用程序( 如窗口和菜单管理、设置存储等) 常 用的服务。阗此,对于编写使用它的应用程序,编写应用程序这些烦琐的方面都 由n e t b e a n s 免费提供。从而开发人员能将精力集中在应用程序实际应该实现的 业务逻辑上,雨不是将时闻花费在重复编写凡乎每个应用程序都需要的那些工作 上。 可访问性和用户界面一致性 这种体系结构的另一个优点是u i 一致性和可访问性。可用性是任何构建用 于商业受众或广泛部署的软件人员的要求。使用n e t b e a n s 运行时来构建此类应 用程序,就不会将时间浪费在重复工作上。基于n e t b e a n sp l a t f o r m 的应用程序 只需最少的投入就可以符合一流的j a v a 外观指导原则,而这些原则是专门为一致 性、可访问性和可用性丽设计的。基于n e t b e a n sp l a t f o r m 的应用程序用户可以 获得舒适、熟悉的界面。由于任何桌面应用程序所需的基本逻辑都由p l a t f o 肌进 行处理,因此,所得疲震程序将更强健,丽且与完全手工编码的应用程序相比, 所需的测试比较少,从而进一步缩短了上市时间。 对于那些构建用来协助残疾人的应用程序的开发人员,可访阅性交得越来越 重要。由于用户界面是使用j a v as w i n g 编写的,因此可访问性从一开始就内置 在用户界面中。n e t b e a n si d e 符合s e c t i o n5 0 8 即美国联邦政府的可访问性准 则。用最少的投入,在p l a t f o r m 构建漱色的应用程序。 更快的周转时间和更出色的用户体验 在n e t b e a n s 上构建的应用程序由p l a t f o r m 和实现特定于该应用程序的功能 的客户模块组成。n e t b e a n s 还提供称为a u t o u p d a t e 的技术: 直接通过应用程 序便可以下载新模块或更新模块。在n e t b e a n s 上进行构建的厂商不需要发布整个 新版本的产品,而只需进行更新,并强制所有客户下载它。更新可以异步递增进 行。在不同功能组工作的团队可以在该功能准备就绪时提交给客户。无震在锁 步中进行发布,由于其他组件尚未完成,因此,完成的功能不会提交给客户。 跨平台兼容性 豳子n e t b e a n sp l a t f o r m 基于标准和可重用的组件,因此基于它的j a v a 应用 程序将可以在支持j a v a2s t a n d a r de d i t i o n 的任何平台( 包括w i n d o w s 、l i n u x 、 m a co s - x 、s o l a r i s 、h p u n i x 、o p e n v m s 、o s 2 和其他平台) 上工作。软件世 界是不断变化的世界。确保编写的应用程序能够经受住时间考验的方法是,使用 标准并编写跨平台的应用程序。这就是n e t b e a n sp l a t f o r m 的功能。基于 n e t b e a n sp l a t f o r m 的应用程序不需要专用的二进制库或组件,只需要目标平台上 第三章协同开发插件的需求分析与设计 1 5 具有j a v a 2 运行时环境。 重用现有组件 、 如果您正在构建作为开发工具的应用程序,您将可以重用属于n e t b e a n si d e 的很多模块。对于不可能重用的情况,仍然有一些模块很可能实现类似于您需要 实现的功能,您可以使用这些模块作为编写自己的代码的基础。 开放源码意味着安全 在开放源码许可期限内,您可以使用p l a t f o r m 的源码执行任何所需的功能。 即使n c t b e a n s 项目将来消失( 它当然不会的) ,您仍然具有应用程序的源码全 部源代码。如果需要修改p l a t f o r m 以适合您的需要( 您可能不会) ,您可以自由 修改。 3 3 局域网消息传播与网络模型的分析 由于本协同开发平台主要针对局域网内部的协同开发,为了简化应珂,在现 有的点对点基础之上,提出并实现了单点多播和组群机理,下面将简述实现的逻 辑,为了清晰的表达关系和实现的原理,我们选取了最简单的三个参与者之间的 点对点,单点多播和组群模型。 点对点会话: 对于最简单的一对用户参与的远程协助和视频会话,是通过在某一对用户间 建立一对一的连接实现的。在最简单的即时消息聊天中,是通过这种方式进行消 息传播,但如果用户请求多个用户进行即时的视频协助时,由于不能进行多用户 的远程协助,为此我们引入了单点多播的会话机制。 单点多播会话 对于多个用户参与的视频会话的单点多播,是通过建立一对多连接来实现 的,对于a 、b 、c ,a 与b 、a 与c 建立一对一连接,则三者之间便形成了单点多 播的模式,即a 会话,b 、c 可以接收会话,b 、c 也可以与a 进行会话,但b 、c 之间不可会话,b 也无法获知c 对a 的会话。单点多播方式的引入虽然解决了上 面的问题,但对于特定的局域网内部多人同时需要进行实时的协作开发则存在问 题,为此我们又引入了组群会话的机制。 组群会话 组群会话是单点多播的一个扩展,我们采用第三方授权的方式来建立组群会 话,c 欲知b 对a 的会话并且欲与b 之间建立会话,就需要向b 提出会话请求, 通过b 的许可,这样不仅保证了通信内容的相对隐私,也实现了组群内部的互相 通信。通过这种消息机制,我们不仅解决了此前多种消息模型存在的一些问题, 1 6 基于n e t b e a n s 的协同开发平台的研究 同时也能兼容各种情形下的局域网消息传播的需要。 通过对局域网消息传播机制的优化,我们改进了传统的协同开发的掰络模型, 我们开发n e t b e a n s 即时协作插件有机结合开发平台来提高开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题01 热爱生活 热爱写作+作文选材技巧-【同步作文课】六年级语文上册单元写作深度指导(统编版2024·五四学制)
- 幼儿园小班音乐《红眼睛》课件
- 西京学院《影像设备创新设计》2023-2024学年第一学期期末试卷
- 西京学院《数控技术与编程》2021-2022学年期末试卷
- 冰淇淋素描课件
- 核心制度课件
- 管理会计实务 课件情境3、4 谋而后定:企业战略执行的有效工具、做好企业的战略参谋官
- 西华师范大学《体育科学研究方法》2023-2024学年第一学期期末试卷
- 西华师范大学《科学教育学》2022-2023学年第一学期期末试卷
- 移动机器人原理与技术 课件 第7、8章 移动机器人语音识别与控制、移动机器人的通信系统
- 二十四节气立春课件
- 感染性物质的运输管理与操作规范课件
- 职工转移申请表
- 《 东北三省》课件 (公开课获奖)2022年商务星球版地理
- 网络安全检查表模板
- 贵州省火力发电企业名录2017年125家
- 胸腔穿刺术液体脚本
- 二年级上册科学二单元《材料》教材解读
- 10-源代码编译指南
- 新教材湘教湘科版四年级上册科学 1.1 各种各样的声音 教案(教学设计)
- 《招标投标法》学习培训
评论
0/150
提交评论