




已阅读5页,还剩52页未读, 继续免费阅读
(计算机系统结构专业论文)怎样解决java企业应用开发中的性能问题.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 r ( 自从j a v a 问世以来,关于j a 、,a 性能的争论从来就没有平息过。而j a v a 也在对其性能的争论中不断发展,从最初的互联网领域逐步发展并且进入了企业 应用领域,成为企业应用领域中主要的开发工具之一。j 烈,a 在我国的发展时间 比国外更短,但也应企业用户的需求进入了企业应用领域。与此同时,国内存在 大量的初、中级j a 、,a 开发人员,4 0 a i ? 迫切需要对j a v a 企业应用性能开发有一 个系统的认识以指导他们进行j a v a 企业应用开发。 j a v a 企业应用性能开发的主要目标是在给定的开发时间内开发出达到性能 目标的应用。但是应该如何进行j a v a 企业应用性能开发才能最大程度地保证这 一点呢? 目前国内外存在大量的文章对此问题进行了研究。主要存在两种看法,一种 看法认为性能开发技术是导致j a 、,a 企业应用开发中性能问题的主要原因,认为 解决了性能开发技术问题就能够解决j a 、,a 企业应用开发中的性能问题。另一种 看法则认为性能开发过程是导致j a 、,a 企业应用开发中性能问题的主要原因,认 为解决过程问题就能够解决j a v a 企业应用开发中的性能问题。这两种看法最终 发展成为两种解决方案一技术解决方案和过程解决方案。技术解决方案倾向于使 用高性能的设计与实现进行应用开发,过程解决方案倾向于依靠有效的性能开发 过程进行应用开发。但是两种解决方案都存在不足之处,尤其是在开发人员经验 不足的情况下。 为避免技术解决方案和过程解决方案的缺点,使开发人员能够比较系统地认 识和解决j a v a 企业应用中的性能问题,本文提出了一个相对完善的解决方案, 它包括重新认识性能开发技术、全面了解性能开发过程和在开发过程中结合性能 开发技术与性能开发过程。 因为开发人员对j a 、,a 企业应用性能开发的认识将影响j a v a 企业应用开发 过程,所以本文提出的解决方案能够帮助开发人员更加系统地认识和进行j a 、,a 企业应用性能开发,从而具有重要的实际意义。、斗一 本文共分为五章。 第一章引言介绍了当前j a v a 企业应用开发的发展送况,在j a v a 企业应用 性能开发中存在的问题和一般解决方案,最后提出了本文的解决方案和其理论及 现实意义。 第二章首先提出了j 瓜,a 企业应用开发中存在的常见性能问题,然后对造成 这些问题的原因、当前的研究现状和目前存在的解决方案进行了分析,最后,指 出这些解决方案的不足之处。 第三章首先提出了我的解决方案,然后对性能开发技术和性能开发过程进行 详细的论述,最后讨论了如何在开发过程中结合性能开发技术和性能开发过程。 第四章以一个j 2 e e 网站为例展示本解决方案的应用,证实了本解决方案的 可行性。 第五章结论总结了本文的主要观点,并重申了本文提出的新的j a v a 企业应 用性能开发解决方案的意义。 关键词: j a v a 企业应用,性能,性能开发过程,设计模式,最佳实践 a b s t r a c t t h ed i s c u s s i o na b o u tj a v ap e r f o r m a n c eh a sn e v e rb e e ns t o p p e ds i n c ej a v aw a s b o m b u tal o to fp r o g r e s sh a sa l s ob e e nm a d ew i t hj a v a ,w h i c he n t e r e de n t e r p r i s e a p p l i c a t i o nd o m a i nf r o mi n t e m e ta n dh a sb e c o m e o n eo ft h em a j o rt o o l st od e v e l o p e n t e r p r i s ea p p l i c a t i o n i th a sa l s oe n t e r e dc h i n e s ee n t e r p r i s ef o ra r a t h e rs h o r tt i m e , a n dm o s td e v e l o p e r sh e r ea r en o tw e l le q u i p p e dw i t hj a v a s ot h e r ei sah i g hu r g e n c y f o ra c o m p r e h e n s i v e a n dc o r r e c t u n d e r s t a n d i n g o fj a v ae n t e r p r i s e a p p l i c a t i o n d e v e l o p m e n t t h e d e v e l o p m e n t o fj a v a e n t e r p r i s ea p p l i c a t i o n f o r p e r f o r m a n c et a r g e t s a t p r o d u c i n ga p p l i c a t i o nt h a tr e a c h e st h ep e r f o r m a n c eg o a l si nag i v e n t i m e b u th o wt o a c h i e v et h i st a r g e t ? t h e r ea r eal o to fa r t i c l e sb o t ha th o m ea n da b r o a dw h i c h s t u d yt h i si s s u e ,a n d w h i c hp r o v i d et w om a j o rv i e w s t h ef i r s to n er e g a r d sp e r f o r m a n c ed e v e l o p m e n t t e c l m o l o g y a st h e m a j o rc a u s e o ft h ep e r f o r m a n c ep r o b l e m si nj a v a e n t e r p r i s e a p p l i c a t i o n t h eo t h e ro n e t a k e s p e r f o r m a n c ed e v e l o p m e n tp r o c e s s a st h em a j o rc a u s e t h e s et w ov i e w sl e a dt ot w od i f f e r e n ts o l u t i o n s o n ei s t e c h n o l o g ys o l u t i o nw h i c h d e p e n d sn l o r eo nt h ed e s i g na n di m p l e m e n t a t i o no fh i l g hp e r f o r m a n c e ,a n dt h eo t h e r o n ei s p r o c e s s s o l u t i o nw h i c h d e p e n d s m o r eo n w e l l o r g a n i z e dp e r f o r m a n c e d e v e l o p m e n tp r o c e s s b u tb o t hs o l u t i o n sh a v et h e i ro w n d e f e c t s i no r d e rt or e m o v et h ed e f e c t so ft h et w os o l u t i o n sa n dt o h e l pt h ed e v e l o p e r s u c c e s s f u l l ys o l v et h ep e r f o r m a n c ep r o b l e m si nj a v ae n t e r p r i s ea p p l i c a t i o n ,t h i sp a p e r p u t s f o r w a r dan e wa n dd i f f e r e n t s o l u t i o n ,w h i c h i n c l u d e s r e t h i n k i n g a b o u t p e r f o r m a n c ed e v e l o p m e n tt e c h n o l o g y , c o m p r e h e n s i v e l yu n d e r s t a n dp e r f o r m a n c e d e v e l o p m e n tp r o c e s s ,a n dc o m b i n i n gb o t hi nt h ed e v e l o p m e n tp r o c e s s t h i ss o l u t i o n h a sb o t hi t st h e o r e t i c a la n d p r a c t i c a ls i g n i f i c a n c e t h i sp a p e ri sd i v i d e di n t of i v ec h a p t e r s c h a p t e ro n es e r v e sa sa ni n t r o d u c t i o no ft h eb a c k g r o u n do ft h i sp a p e r , a n d p u t s f o r w a r dt h ep e r f o r m a n c e p r o b l e m s i nj a v a e n t e r p r i s ea p p l i c a t i o n c h a p t e rt w of i r s t l i s t st h e g e n e r a lp e r f o r m a n c ep r o b l e m si nj a v ae n t e r p r i s e a p p l i c a t i o n ,a n dt h e i rc a u s e s t h e ni ts t u d i e st h e p r e s e n ts o l u t i o n sa n d t h e i rd e f e c t s c h a p t e rt h r e e f i r s t e x p l a i n sm yo w ns o l u t i o n ,t h e n d i s c u s s e si nd e t a i la b o u t p e r f o r m a n c ed e v e l o p m e n tt e c h n o l o g ya n dp r o c e s s ,a n da tl a s ts h o w s h o wt oc o m b i n e b o t hi nt h ed e v e l o p m e n t p r o c e s s c h a p t e r f o u ru s e saj 2 e ew e b s i t ea sa ne x a m p l et od e m o n s t r a t eh o wt oa p p l yt h e n e ws o l u t i o ni n t op r a c t i c e c h a p t e r f i v ec o n c l u d e st h em a j o r p o i n t so f t h i sp a p e r k e y w o r d s j a v a e n t e r p r i s ea p p l i c a t i o n ,p e r f o r m a n c e ,p e r f o r m a n c ed e v e l o p m e n tp r o c e s s , d e s i g np a t t e r n ,b e s tp r a c t i c e 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 电子科技大学硕士论文 第一章引言 自从j a 、缇问世以来,关于j a 、後性能的争论从来就没有平息过。而j a v a 也在对其性能的争论中不断发展,从最初的互联网领域逐步发展并且进入了企业 应用领域,成为企业应用领域中主要的开发工具之一。j a v a 在我国的发展时间 比国外更短,但也应企业用户的需求进入了企业应用领域。与此同时,国内存在 大量的初、中级j a v a 开发人员,他们迫切需要对j a 、,a 企业应用性能开发有一 个系统的认识以指导他们进行j a v a 企业应用开发。 j a v a 企业应用性能开发的主要目标是在给定的开发时间内开发出达到性能 目标的应用。因为性能不能达到性能目标而导致应用不能按时交付使用是j a 、,a 企业应用开发过程中存在的常见问题之。应该如何进行j a v a 企业应用性能开 发才能在最大程度上保证应用达到性能目标昵? 开发人员常常存在如此的疑问。 目前国内外存在大量的文章对此问题进行了研究。主要存在两种看法,一种 看法认为性能开发技术是导致j a v a 企业应用开发中性能问题的主要原因,认为 解决了性能开发技术问题就能够解决j a y a 企业应用开发中的性能问题。另一种 看法则认为性能开发过程是导致j a v a 企业应用开发中性能问题的主要原因,认 为解决过程问题就能够解诀j a v a 企业应用开发中的性能问题。这两种看法最终 发展成为两种解决方案技术解决方案和过程解决方案。技术解决方案倾向于使 用高性能的设计与实现进行应用开发,过程解决方案倾向于依靠有效的性能开发 过程进行应用开发。但是两种解决方案都存在不足之处,尤其是在开发人员经验 不足的情况下。 为避免技术解决方案和过程解决方案的缺点,使开发人员能够比较系统地认 识和解决j a 、,a 企业应用中的性能问题,本文提出了一个相对完善的解决方案。 它包括重新认识性能开发技术、全面了解性能开发过程和在开发过程中结合性能 开发技术与性能开发过程。所谓重新认识性能开发技术是指性能开发技术不仅仅 包括高性能的设计与实现,还包括提高应用的可用性和灵活性的开发技术,并且 可用性与灵活性优先于高性能。全面了解性能开发过程要求开发团队了解并掌握 性能开发过程,因为性能开发过程是应用开发中与性能相关的开发过程,有效的 应用性能开发过程将为j a v a 企业应用性能开发的成功提供保障。在开发过程中 结合性能开发技术与性能开发过程是指性能开发技术和性能开发过程都是j a 、,a 企业应用性能开发的重要组成部分,应该在开发过程中结合两者,避免侧重于其 中一个部分却忽略了另一部分,以便在最大程度上保证j a v a 企业应用性能开发 的成功。 电子科技大学硕士论文 因为开发人员对j a v a 企业应用性能开发的认识将影响j a v a 企业应用开发 过程,所以本文提出的解决方案能够帮助开发人员更加系统地认识和进行j a 、,a 企业应用性能开发,从而具有重要的实际意义。 电子科技大学硕士论文 第二章j a v a 企业应用性能开发中的常见问题及其解决方案 j a 、,a 企业应用性能开发的主要目标是在给定的开发时间内开发出达到性能 目标的应用。然而对许多开发人员来说,j a v a 企业应用性能问题都是一个难于 解决的问题,许多j a v a 企业应用的开发人员都被性能问题困扰。随着应用交付 时间的临近,开发人员会因为应用存在的性能问题而变得越来越忙碌。对开发人 员来既,最艰巨的问题也许就是如何在交付时间前达到性能需求目标。 本章首先提出了j a v a 企业应用开发中存在的常见性能问题,然后对造成这 些问题的原因和目前存在的研究现状与解决方案进行了分析,最后,指出这些解 决方案的不足之处。 2 ,1 常见的性能问题及其原因 j a v a 企业应用存在的常见性能问题主要表现为应用在交付时不能达到性能 目标,不能按时交付使用,或者应用中交付后依然存在性能隐患,在使用过程中 发现性能问题。本文总结了一些常见性能问题如下。 1 、应用中存在可用性问题 可用性在此处指的是:首先,应用能够正常运行;然后,应用的设计与实现 是清晰的,易于调试和测试;最后,应用中基本不存在隐含的错误。然而当应用 开发进入性能调整阶段时,开发人员常常发现虽然应用的功能已经开发完成但是 应用中存在可用性问题。应用可能只能在输入有效数据时才能正常运行,输入无 效数据或者进行异常操作时应用的行为完全在意料之外。同时,因为系统中出现 的异常基本上无助于问题的解决,导致错误的原因查找变得非常困难。而因为开 发团队需要花费大量的时间用于查找性能问题的原因,性能调整的时间将会大大 延长,从而导致整个应用开发时间的延期,并最终可能导致项目失败。并且可用 性问题可以导致应用中存在潜在的性能隐患,这些隐患可能会在应用交付使用后 才暴露出来。 2 、应用中各组件难于修改 即使在找到导致性能问题的原因的情况下,也有可能因为应用中各组件难于 修改,而导致性能调整时间的延长。这种情况出现的原因是因为应用中各组件的 紧密耦合使修改工作很难进行或者会花费大量的时间_ 例如,性能调整过程中发 现性能问题的主要原因是不合理的数据库结构,但是应用中采用在e j b ( 企业 j a v a b e a n ) 中直接使用j d b c 代码进行数据库访问的方式获取数据,从而使得 皇王型垫查茎堡主堡苎一 业务逻辑与数据库结构紧密耦合,对数据库结构进行变更将导致大量的代码修 改,从而会使用大量的时间。如果这些时间超出了预期的性能调整时间,将导致 应用延期交付。 3 、低性能的设计与实现 低性能的设计与实现也是常见的性能问题之一。开发人员没有掌握设计与实 现的设计模式与最佳实践是造成低性能的设计与实现的主要原因。即使开发团队 熟悉性能开发过程并熟悉性能测试工具的使用,对低性能的应用进行性能调整与 高性能的应用相比将使用多得多的时间,从而可能使性能调整时间超出预期。 4 、没有准确的性能需求 准确的性能需求要求明确、量化的定义应用的吞吐量或者响应时间,同时准 确地分析用户行为。这是一个非常难于解决的问题,用户行为有时很难准确定义。 缺乏经验的开发团队有时没有取得足够的性能需求数据,与用户的不良沟通也将 导致性能需求的不准确。性能需求过高将导致开发团队花费过多的时间用于性能 开发过程,可能使应用不能按期交付使用,性能需求过低又将导致用户验收不合 格。 5 、性能测试数据收集不足 性能测试数据包括组成应用运行环境的各服务器的运行数据,j v m ( j a v a 虚拟机) 性能测试数据、应用服务器的数据、数据库服务器收集的数据等等。必 须要有尽可能完善的数据才能进行比较准确地进行性能瓶颈分析。性能测试数据 不足将可能导致错误的分析结果,并使开发团队向错误的方向努力,从而延长了 性能调整的时间。 6 、对性能测试工具不熟悉 在性能测试过程中将使用大量的性能测试工具。开发团队如果不熟悉性能测 试工具的使用,将花费时间在学习性能测试工具的使用上。如果开发时间充足, 开发团队有足够的时间熟悉性能测试工具的使用,那么对于开发进度没有影响, 否则这也将导致性能调整时间的延长。 7 、没有准确的性能测试 相对于定义性能需求而言,对性能的准确测量有时是个更加困难的任务。 它要求测试环境尽可能接近真实环境,。并且尽可能模拟真实的用户行为。但实际 上,有些测试环境与真实环境不具备可比性,因此不能用测试出的性能预测真实 性能;模拟的用户行为也不准确。在没有准确测量性能的倩况下,很难对性能是 电子科技大学硕士论文 否达到性能目标进行评估。 例如界面设计:界面设计是影响j a v a 企业应用性能的一个重要方面,但因 为开发工作和测试工作通常都在局域网中进行,因界面设计原因导致的延迟远远 小于真实网络环境。在开发团队经验不足的情况下,可能会忽略界面设计对最终 性能的影响,从而有可能导致验收成功而运行失败的项目。 2 2 研究现状 性能问题是j a v a 企业应用开发中的常见问题,它引起了大量的讨论。人们 纷纷根据自己在j a v a 企业应用开发过程中的经历对j a v a 企业应用性能开发提 出了解决方案,在网上和各类书籍中可以看到大量的关于性能开发的文章。有些 文章主要讨论了提高性能的技术问题,另一些文章则主要关注性能开发过程,却 很少有文章同时讨论性能开发技术与性能开发过程。出现这种情况的原因可能是 因为人们具有性能开发技术或性能开发过程两方面中某方面的能力,所以遭遇的 问题也只是其中之一,也可能是作者为了便于论述或者突出文章的主题而只对其 中某一方面进行了详细论述。这些文章对开发人员存在潜在的误导,开发人员在 学习过程中可能就技术与过程两者中选择其一,或者至少是有所侧重。 目前对性能开发技术的研究主要包括对j 2 e e 性能的研究、对j a 、,a 开发语 言性能的研究、对应用服务器性能的研究、对m 性能的研究、对j a v a 应用 开发中经常出现的些性能方面问题的研究等等。对j 2 e e 性能的研究内容基本 上是研究提高j 2 e e 应用性能的设计模式和最佳实践。对j a 、,a 开发语言性能的 研究内容主要包括对j a 、值类库的性能改进,提供更高性能的j a 、,a 类库,如何 更有效的利用j a v a 语言的优势回避j a v a 语言的性能缺点等等。对应用服务器 性能的研究内容主要由应用服务器开发厂商对如何提高应用服务器性能的研究 和开发者对应用服务器使用经验的总结两部分组成。对j v m 性能的研究内容主 要表现在对更高提高j v m 线程、锁、垃圾回收机制性能的研究和对j v m 垃圾回 收算法的改进。对j 越,a 应用开发中经常出现的一些性能方面问题的研究通常以 单独主题的形式出现,主要集中在异常处理、内存泄漏等方面。这些研究通常都 是以专题的形式独立的进行,其内容很少涉及其它研究。而这些研究相互间的关 系、发生冲突时应该如何选择以及这些研究在性能开发技术中的地位等等内容很 少有人提及。 对性能开发过程的研究主要有对软件性能过程( s p e ) 的研究和对性能测试 或性能调整进行的研究两种。软件性能过程研究的目标是通用的性能开发过程, 通过在性能开发过程中采用通用的性能开发过程以最终达到所需的性能。但是软 电子科技大学硕士论文 件性能过程对开发人员而言,过于抽象,并且j a v a 企业应用使用j a v a 语言实 现,因为j a 、,a 虚拟机实现机制从而与其它企业应用相比具有更高的复杂性,这 都导致了通用的软件性能过程难于应用到j a v a 企业应用开发的实践中。对性能 测试或性能调整进行的研究则主要是由各性能测试工具厂商进行的研究和专业 人员的开发经验组成,这些研究集中在性能测试工具的使用经验上,很少涉及整 体的性能开发过程。目前基本没有将软件性能过程与j a v a 企业应用开发相结合 的研究。 2 3 通常解决方案 与目前的研究相符合的是,通常解决方案也分为侧重于技术的技术解决方案 和侧重于过程的过程解决方案。 2 3 1 技术解决方案 技术解决方案的支持者认为性能开发技术是导致j a v a 企业应用开发中性能 问题的主要原因,认为解决性能开发技术问题就能够解决j a v a 企业应用开发中 的性能问题,并且他们认为性能开发技术主要是指提高性能的开发技术,指高性 能的设计与实现。技术解决方案的主要思路是研究技术中与性能相关的设计与实 现,在开发过程中尽量使用高性能的设计与实现。技术解决方案倾向于使用经验 丰富的开发人员,力求一次性开发出达到性能目标的应用。 但是,技术解决方案存在很多问题,这些问题将导致技术解决方案不能完全 解决j a v a 企业应用的性能问题。在进行j a 吼企业应用开发时,技术解决方案 的支持者在多种设计与实现方案中进行选择的重要依据是哪一个设计与实现方 案具有更高的性能。他们执着的在每一个子系统,每一个类,甚至每一行代码中 寻找最高性能的解决办法,我甚至看到过某个开发团队对+ + a ,a + + 和a + = 1 哪一 个实现具有更高的性能进行了讨论。这种性能优先倾向会带来很多问题。首先, 开发人员可能会过于注重开发的细节,在细节中为性能花费过多的时间,而失去 了对整体性能的把握,可能最终并不能开发出一个高性能的应用。其次,性能优 先倾向会使开发人员写出更高性能但难于理解的代码,可能还会忽视数据有效性 检查等从某方面看是降低性能的解决方案,从而降低应用的可用性,使性能问题 的查找变得困难,或者是使开发人员开发出紧密耦合的应用,降低了应用的灵活 性,使性能问题难于修改。再次,因为在设计和实现中总是采用最高性能的解决 方案需要开发人员花费大量的时间,从而使可用于性能调整的时间减少,当发现 应用不能达到性能目标时已经没有足够的时间进行性能调整。 电子科技大学硕士论文 2 32 过程解决方案 过程解决方案的支持者认为性能开发过程是导致j a 、後企业应用开发中性能 问题的主要原因,认为解决过程问题就能够解决j a v a 企业应用开发中的性能问 题。技术解决方案的主要思路是研究性能开发过程,认为性能依赖于性能调整, 采用先做出来,再考虑性能的开发方式,通过尽早进行性能测试和性能调整等等 方式来实现j a v a 企业应用性能开发。 但是,过程解决方案依然不能完全解决应用中的性能问题。过程解决方案的 支持者依然会被技术问题困扰。应用仍然可能存在可用性问题从而使性能问题的 查找变得困难,同时还可能使应用存在性能隐患;灵活性差的设计与实现使应用 难于修改,增大了性能调整难度和时间开销;低性能的设计与实现将大大延长性 能调整的时间。 2 4 总结 技术解决方案和过程解决方案都存在缺陷,因为性能开发技术和性能开发过 程都对性能问题起着至关重要的作用,侧重于任何一方面而忽视另一方面都可能 使得性能问题不能圆满解决。即使是同时应用技术解决方案和过程解决方案,仍 然会因为对性能开发技术或者性能开发过程的错误认识而导致性能问题的出现。 下一章提出的新的解决方案则可以避免上述两种解决方案存在的问题。 皇王翌垫查兰堕主笙壅一一 第三章我的解决方案 本章首先提出了我的解决方案,然后对性能开发技术和性能开发过程进行详 细的论述,最后讨论了如何在开发过程中结合性能开发技术和性能开发过程。 3 1方案概述 为避免技术解决方案和过程解决方案的缺点,使开发人员比较系统地认识和 解决j a v a 企业应用中存在的性能问题,本章提出解决方案如下:重新认识性能 开发技术,全面了解性能开发过程,同时在开发过程中结合性能开发技术与性能 开发过程。 本解决方案主要基于下列事实:j a 、,a 企业应用性能开发的主要目标是在给 定的开发时间内开发出达到性能目标的应用。在j a v a 企业应用开发中,开发人 员需要同时对性能开发过程和性能开发技术都有良好的掌握,遗漏任何一种性能 开发技术或者不了解性能开发过程都有可能对性能开发的成功造成不良的影响。 因为不能保证一次性开发出达到陛能目标的应用,所以j a v a 企业应用性能开发 需要进行性能调整。 本解决方案的主要目标是:比较系统的对性能开发技术进行整理和分类,明 确了各开发技术在整个性能开发中的地位以及在各开发技术相互冲突时如何进 行选择;将对软件性能过程的研究应用到j a v a 企业应用中,结合对性能测试、 性能调整的研究,给出一套基本可以实行的j a v a 企业应用性能开发过程;明确 提出解决j a v a 企业应用开发中的性能问题需要性能开发技术与性能开发过程相 结合的思路,并简述如何在开发过程中进行两者结合。 下面是对本解决方案的详细阐述。 3 1 1 重新认识性能开发技术 j a v a 企业应用性能开发的主要目标是在给定的开发时间内开发出达到性能 目标的应用。在j a v a 企业应用开发过程中,性能调整是j ,a 企业应用性能开 发中的重要活动,如何在性能调整过程中大幅度的提高应用性能是能否达到 j a 、,a 企业应用性能目标的关键。同时,性能调整时间是有限的,能够提高性能 调整效率的开发技术有助于j a v a 企业应用性能目标的实现。因此,本解决方案 中将能够提高开发过程中性能调整效率、避免性能问题出现的开发技术和能够提 高j a 、,a 企业应用性能的开发技术统称为性能开发技术,它主要包括可用性、灵 活性和高性能的设计与实现三个方面的内容,而原解决方案中性能开发技术则主 电子科技大学硕士论文 要是指高性能的设计与实现。 首先,性能开发技术包括了提高应用可用性和避免可用性问题的开发技术e 可用性首先是指应用的设计与实现是清晰的,易于调试和测试;然后,应用中基 本不存在可用性问题,也就是不存在性能隐患。在j a 、,a 企业应用开发过程中应 该首先解决可用性问题,因为不能够正常运行的应用无法进行性能调整,应用存 在的隐含错误是巨大的性能隐患或者其它隐患。难于理解的设计与实现将会使查 找和解决性能问题的时间大大延长,从而降低性能调整的效率。然后,性能开发 技术还包括提高应用灵活性,使应用易于重构的开发技术。具有高灵活性的软件 易于修改和重构,从而可以提高性能调整的效率。最后,性能开发技术还包括高 性能的设计与实现。高性能的设计与实现可以使应用在性能调整开始时具有较高 的性能,因而可以在更短时间内调整到所需的性能。 有些时候,性能开发技术的三个方面并不矛盾。但当三者出现矛盾冲突时应 该如何进行选择呢? 选择的方式是必须保证第一条,尽量保证第二条,最后保证 第三条。软件的可用性可能会导致性能的降低,例如数据有效性检查、日志记录 等等为保证软件可用性所做的工作都将导致性能的降低。但是,软件的可用性是 性能调整的基础,没有可用性的应用无法进行性能调整,而且有可用性问题的应 用中存在巨大的性能隐患,因此无论在什么情况下都要优先保证应用的可用性。 当灵活性与高性能的设计与实现间发生冲突时,除非确定该设计与实现将导致性 能问题( 应该通过性能测试而不是猜测来确定性能问题) ,否则都应该优先采用 高灵活性的方法,因为具有高灵活性的应用可以方便在开发后期进行性能调整。 某些高性能的设计与实现如缓存因为提高了应用开发的复杂性,同时降低应用的 可用性和灵活性,所以通常在性能调整过程中实现。 3 ,12 全面了解性能开发过程 性能开发过程是应用开发中与性能相关的开发过程,有效的应用性能开发过 程将为j a v a 企业应用性能开发的成功提供保障。没有熟练掌握性能开发过程是 j a v a 企业应用性能开发不能顺利完成的主要原因之一。例如,如果对性能测试 工具不熟悉,会使收集的性能相关数据不够准确从而可能导致开发团队对应用性 能的错误判断:如果在需求获取过程中忽略了部分与性能相关的数据将可能使开 发团队制定错误的性能目标。因此,本解决方案要求开发团队全面了解性能开发 过程。 3 1 3 结合性能开发技术与性能开发过程 综上所述,性能开发技术和性能开发过程都是j a v a 企业应用性能开发的重 电子科技大学硕士论文 要组成部分,因此在j a v a 企业应用性能开发中必须同时结合性能开发技术与性 能开发过程,才能取得良好的收效。性能开发技术是基础,良好的性能开发技术 将使开发团队在进入应用性能调整阶段时有一个易于调整的具有较高性能的应 用,从而方便性能调整工作的进行:性能开发过程是保证,因为即使开发团队拥 有良好的性能开发技术也不能保证能一次性开发出满足性能要求的应用,这就需 要在j a v a 企业应用开发过程中包括性能开发过程,从而保证按期交付达到性能 目标的应用。 3 - 2j a 、,a 企业应用性能开发技术 本节的主要目标是对j a v a 企业应用性能开发技术进行详细论述。如前所述, 性能开发技术主要包括提高应用可用性的开发技术,提高应用灵活性,使应用易 于重构的开发技术和提高应用性能的开发技术。 3 2 1可用性 可用性是j a v a 企业应用性能开发的最低要求,灵活性和高性能的设计与实 现都是建立在可用性的基础上的。可用性首先是指应用的设计与实现是清晰的, 易于调试和测试;然后,应用中基本不存在可用性问题,也就是不存在性能隐患。 通常来讲,如果在开发过程中遵循下述基本编程原则,那么开发出的软件就能够 符合可用性的笫一个要求。该基本编程原则如下所述:清晰性和简洁性是最为重 要的;一个模块( 模块是指具有独立逻辑意义的系统组成部分,可以指类中的方 法、类或者子系统) 的用户永远也不应该被该模块的行为所迷惑;模块要尽可能 的小,但又不能太小;代码应该被重用,而不是被拷贝;模块之间的依赖性应该 尽可能的降低到最小;错误应该及早被检测出来,最理想的是在编译时刻。但是 基本编程原则并不容易遵守,实现是否符合基本编程原则有时候很难判断,对不 同的开发人员来说模块的适宜大小各不相同,开发人员很难在开发过程中的所有 时间都遵循所有的基本编程原则。那么,要如何进行开发才能保证实现具有高可 用性的应用呢? 这个问题很难有一个明确的解答,但是至少应该避免出现损害应 用可用性的问题。可用性问题是巨大的性能隐患,存在可用性问题的应用很难讨 论其性能。在下文中,我们总结了几个常见的可用性问题并简单讨论了如何解决 这些问题,这些问题包括异常处理,数据有效性检查,曰志记录和内存泄漏。 3 2 1 ,1 异常处理 j a v a 中的异常处理机制是开发人员进行应用开发的基础,清晰、明确的异 常信息将使应用中调试和闯题查找变得更加轻松。开发人员在应用开发过程中通 过不断跟踪导致抛出异常问题的所有代码以及代码中的所有不同分支进行应用 皇王型垫查堂堡圭丝墨一 调试。在应用运行过程中,异常处理机制同样会帮助开发人员查找应用中的潜在 问题。但是j a v a 中的异常处理机制是开发人员最难掌握的问题之一,对异常处 理机制不正确的使用会导致很多问题,包括降低应用的可用性。本节将就异常处 理机制对可用性的主要影响进行研究,而异常对性能的影响将在高性能设计与实 现中进行讨论。 1 、异常处理中的常见问题 异常处理中的常见问题主要包括如下3 种。 忽略异常 开发人员为了开发的便利,有时会采用忽略异常的做法。另外,在众多学习 资料中作者为更清晰地描述问题和突出主题,大量的示例代码也忽略了异常,使 用这些资料进行学习的初学者常常会被这些资料误导。忽略一个异常比处理一个 异常容易得多,只需将方法调用用一个t r y 语句包围起来,并且包含一个空的c a t c h 块,如下所示: 忽略某个异常 t r y d os o m e t h i n g ; ) c a t c h ( s o m e e x c e p t i o ne ) ) 但无论是被检查的异常还是末被检查的异常都不应该被忽略。不管一个异常 代表了一个可预见的例外条件,还是一个程序错误,忽略异常都将导致程序在遇 到错误时悄然执行下去。然后有可能在将来的某个时间点,当程序无法再容忍错 误源带来的问题时,它就会失败。而且忽略异常将可能导致应用出现无法预料的 行为,一些莫名其妙的错误将会出现,并且难于查找导致这些错误的真正原因。 没有对异常进行相应的抽象 与忽略异常相比,另一个极端情况是抛出所有的异常。抛出所有的异常将会 导致方法抛出的异常与它所执行的任务没有明显的关联关系,这将使错误查找与 定位变得更加困难。在应用使用分层体系结构的时候,尤其如此。为了避免这个 问题,高层的实现应该捕获低层的异常,同时抛出一个可以按照高层抽象进行解 释的异常,这种方法通常被称为异常转译,如下所示: i f 异京转译 电子科技大学硕士论文 t r y d os o m e t h i n g 1c a t c h ( l o w e r l e v e l e x c e p t i o ne ) 捕获低层的异常 t h r o wn e w h i g h e r l e v e l e x e e p t i o n ( ) ;进行异常转译 ) 异常转译一般又分为两种方式,其中一种方式是屏蔽了低层的异常,根据低 层的异常提供的相关信息构建一个全新的高层的异常,此时通常需要对低层异常 进行记录,另一种方式是用高层的异常将低层的异常保存起来,并且高层的异常 提供一个公有的访问方法来获得低层的异常。 如果可能的话,处理来自低层异常的最好做法是:在调用低层方法之前进行 数据有效性检查,确保它们会成功执行,从而避免抛出异常;只有在无法阻止来 自低层的异常时才进行异常转译。 e j b ( 企业j a 、,a b e a n ) 中的异常处理 e j b 中的异常处理稍微与众不同,这是由e j b 规范所决定的。e j b 规范规定, e j b 容器拦截e j b 组件上的每个方法调用,结果使方法调用中发生的每一个 异常也被e j b 容器拦截到。e j b 规范只处理两种类型的异常:应用程序异常和 系统异常。当发生应用程序异常时,除非被显式要求回滚事务,否则e j b 容器 就不会这样做。 在e j b 中同样不能忽略异常,忽略异常的后果将可能使事务不能回滚,因 此即使在忽略异常时也必须进行显式事务回滚。同时,因为e j b 作为一个独立 的逻辑层,它还需要对异常进行相应的抽象。因此,当应用程序异常发生时,如 果既要回滚事务又要使用高层抽象,最好的做法就是把受查异常作为非受查异常 抛出。这样,每当发生受查系统异常时,都应该通过包装原始的异常抛出e j b 异常或其子类。 2 、异常处理的基本要求 根据对上述异常处理中常见问题的讨论,为避免上述问题的出现,作者总结 了以下关于异常处理的基本要求。符合下列要求的异常处理机制能够达到可用性 的基本要求。 如非必要,不要忽略异常 异常是应用中问题的探测器,它能够对应用运行进行监测并在出问题的地方 里三型垫奎兰堡主堕兰 一 进行记录。关闭异常就是关闭了探测器,它使你的应用失去了安全防护,应用将 可能在无法预料的时间得到灾难性的结果。即使有充分的理由忽略异常时,也至 少应该在c a t c h 块中包含一条说明,用来解释为什么忽略掉这个异常是合适的。 根据分层的体系结构设计建立对应的分层异常模型,并进行层间异常转译 j a v a 企业应用通常都采用分层的体系结构模型,应该根据应用的分层体系 结构没计建立对应的分层异常模型并进行层问异常转译。例如,为数据访问层建 立数据访问异常。 3 21 2 数据有效性检查 没有进行足够的数据有效性检查是开发人员易于犯下的错误之一。数据有效 性检查就象汽车驾驶中的安全带,系上安全带可能会带来一时的不舒适但从长期 来看将保证您的安全。 1 、缺乏数据有效性检查带来的主要问题 难于进行错误查找 大多数方法都对传递给它们的参数值有某些限制,在方法的起始处对参数进 行检查,就可以强迫实现这些限制。如果不进行参数检查,在错误发生时将很难 判断错误的来源。因此可能使应该进行性能调整的时候,却花费大量的时间检查 错误出现的原因,最终导致项目延期。 存在潜在的性能隐患 缺乏数据有效性检查的应用存在潜在的性能隐患。在应用开发中有一个重要 原则:错误应该及早被检测出来以避免更严重问题的出现。在分层应用中,应该 在最前端进行数据有效性检查。此时,如果缺乏数据有效性检查将使无效的数据 进行系统后可能在数据库层才被发现,从数据库层抛出异常将导致应用中大量的 异常抛出并具有极大的性能代价。我曾经在一个网站中看到,因为该网站缺乏数 据有效性检查,当用户输入大量的无效数据时该网站的性能急剧降低。 2 、数据有效性检查最佳实践 数据有效性检查是一项繁重的工作,在应用中所有具有输入、输出数据的地 方进行数据有效性检查将花费大量的时间。因此,开发人员可能会不情愿进行完 全的数据有效件检查。但从长远来看,这些时间投入是非常值得的。下面是一些 关于数据有效性检查的最佳实践,合理的使用这些最佳实践将减轻数据有效性检 查的工作量,并提高数据有效性检查的准确性。 电子科技大学硕士论文 在值对象中进行数据有效性检查 值对象模式是j a v a 企业应用中的一个重要的设计模式。它不仅仅能提高应 用的性能,提高应用的复用性,它在数据有效性检查中也非常有用。因为值对象 是分层的j a v a 企业应用中在层间传输的主要数据,因此在值对象中进行数据有 效性检查与各层分别进行数据有效性检查相比可以有效减少数据有效性检查的 工作量。 空对象模式 空对象模式通过提供一个什么都不做的对象来简化数据有效性检查的代码, 从而简化了代码,减少了数据有效性检查的工作量,并降低了因开发人员疏忽带 来问题的可能。 例如:找到某城市i d 对应的城市,找到则显示城市名称,否则显示其它地 方。 g e o g r a p h yg e o 2 g e o g r a p h y d b g e t g e o g r a p h y ( c i t y i d ) ; s t r i n gd i s p l a y = n u l l ; i f ( e = = n u l l ) f 数据有效性检查 d i s p l a y = “其它地方”: ) e l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025大唐华北电力试验研究院内蒙分部(呼和浩特)招聘15人考前自测高频考点模拟试题及1套完整答案详解
- 2025甘肃酒泉市肃北县人武部招聘2人考前自测高频考点模拟试题带答案详解
- 2025海南三亚人民医院四川大学华西三亚医院海南医科大学校园招聘模拟试卷及参考答案详解一套
- 2025年西安医学院第二附属医院招聘(84人)考前自测高频考点模拟试题及1套完整答案详解
- 2025河南许昌市公安局招聘230人模拟试卷带答案详解
- 班组安全培训记录内容案例课件
- 2025福建福州市长乐区行政服务中心管理委员会招聘编外人员2人模拟试卷(含答案详解)
- 2025年长江工程职业技术学院人才引进24人模拟试卷附答案详解(典型题)
- 2025年福建省三明市明溪县公安局招聘13人考前自测高频考点模拟试题及答案详解(名师系列)
- 2025辽宁省生态环境厅直属事业单位赴高校现场公开招聘工作人员模拟试卷及参考答案详解一套
- 2025至2030全球及中国两轮组合仪表行业产业运行态势及投资规划深度研究报告
- 工业机器人讲课件
- 2025年屏山炒青茶市场分析报告
- 部编版三年级语文上册日积月累
- 第11章综合与实践低碳生活课件人教版七年级数学下册
- 税务师事务所管理制度
- 建设工程监理专业教学标准(高等职业教育专科)2025修订
- 心理治疗师考试试题及答案
- 兵团职工考试试题及答案
- 老年人70岁驾考三力测试题库
- 2025年中路高科交通科技集团有限公司-企业报告(供应商版)
评论
0/150
提交评论