仓酷云

标题: 了解下JAVA的八个改良Java遗留体系的技能 [打印本页]

作者: 灵魂腐蚀    时间: 2015-1-18 11:28
标题: 了解下JAVA的八个改良Java遗留体系的技能
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。
你没看错,就是这个标题:即便是Java体系也会酿成“遗留”体系。每当我们想起遗留体系时,我们就会想起那些存储着大批文件数据并只能用COBOL会见的嘎吱嘎吱作响的年夜型主机。但现实是,Java已是一门具有15年汗青的开辟言语,用Java写就的不计其数的体系已乐成运转了十年乃至更久。
因而,思索到很多读者城市事情在某个遗留的Java体系上,我依据本人的履历专程攒了这八个技能,来匡助团队更新和激活他们的遗留Java使用。
技能1:利用剖析器
剖析器供应了任何其他工具没法供应的功效,从而可以深切反省你的使用。假如你的使用已有一年多工夫没有被剖析过了,那末它一定会有年夜块年夜块的低效代码,埋伏在某个暗中的角落。市情上有很多分歧的或收费或贸易的剖析器。关于CPU剖析,我最喜好的是JProfiler,由于它充足壮大能剖析出年夜多半成绩,同时易于设置,特别当你利用它内建的设置导游的时分。而诊断内存成绩时,我最亲睐的工具是EclipseMemoryAnalyzer,由于它利用的是纪录在磁盘上的索引,而不是把全部堆的快照放到内存中。
一般来讲,埋没着的易耗尽CPU的代码包含低效的hashCode()大概equals()办法(在卷动JTable时和利用Javacollection类时,它们会被挪用上百万次),和一些出人意表的出自Sun之手的低效类,好比SimpleDateFormat。
剖析器大概会分明地让你的使用变得很慢,以是你必定要在测试情况中利用它。
技能2:监控数据库利用情况
剖析器除能够显现你的使用过分占用CPU时钟的细节,它们也能够对你的使用在哪些中央长工夫做了数据库的操纵给出提醒。但更好的用来监控数据利用的工具,是像ProactiveDBA大概HPDiagnostics,大概任何其他来自于你的数据库产物厂商的工具。这些工具能够告知你,哪些代码做了长工夫的SQL挪用,和哪些代码在短工夫内对统一行做了屡次挪用。来自数据库厂商的工具还能够匡助发明那些堵塞了其他挪用的查询;固然在我的履历里,如许的堵塞成绩基础不外是些复杂的、低效的SQL用法。
我写了一个新的工具叫做jdbcGrabber,它可让你以可视化的情势形貌出哪些代码正在会见哪些数据表。经由过程这类可视化出现,你能够很简单发明那些屡次会见数据库中分歧部分信息的代码,从而将其调剂为一次兼并的哀求。
技能3:构建和部署主动化
很多遗留体系缺少一种完整主动化的体例,来构建它们的代码,更不必说主动部署了。主动化构建和部署关于进步遗留体系开辟者的效力来讲,是一种复杂间接而又低风险的体例,并且一般不必要修正代码。
没有主动化的构建和部署历程,新的开辟者不能不从头创造轮子,跟那些先辈们早就奋斗过的一样成绩从头来斗,并且每次反复的部署成绩产生,开辟者城市创造出分歧的办理计划。
固然Maven是一款出色的并且利用普遍的构建工具,但它对你的源码树布局和库依附有着刚强的请求,以是把它用在遗留使用中会有点坚苦。但充足优异的Ant应当更容易于利用,由于它处置起遗留代码布局加倍天真,也更简单部分接纳,而不是通盘接纳。
技能4:主动化你的操纵并利用JMX
别的一种进步遗留使用的效力但不会带来修正代码的风险的体例是,改良它的运维。很多外部开辟的企业体系,一样平常都必要大批出人意表的手把手引导和保护,即便如许是不该该的。
既有的Java功效能够经由过程利用JMX很简单地表露给卖力运营的人们,而不会带来负面影响。很多开辟者对JMX对照熟习是由于,他们用JMX来跟JBoss和WebLogic如许的使用服务器举行交互,但他们不分明把JMX用在他们本人的使用中是何等便利。任何Javaclass都能够经由过程JMX表露出来,几近没甚么负面效果,也没有甚么风险。
好比,假如你的使用有一个当地的静态HashMap作为cache,你就能够经由过程JMX来表露功效,从而很简单地扫除谁人cache。
一旦使用经由过程JMX表露,运维团队大概开辟者就能够以优秀的体例来操纵使用,无需间接会见运转着使用的呆板。
技能5:创立单位测试
一旦你对遗留体系的修正损坏了某个功效,你所面对的最年夜停滞之一就离开了。一些工具传播鼓吹能对代码举行反向工程,并为其创立单位测试,但我对这些工具没有太多的信念。要想有充足的信念,你的单位测试切实其实掩盖了你希冀它们掩盖的代码,你就不能不亲身创立它们。
很侥幸,为遗留代码创立单位测试并没有一入手下手感到上的那样坚苦。我利用了MichaleFeathers在WorkingEffectivelywithLegacyCode一书中解说的“遗留代码修正算法”:
确认修正点
找出测试点
冲破依附
编写测试
修正偏重构
无效利用这个算法的秘诀在于第3点:冲破依附。有良多手艺能够用来干这个,但个中年夜多半都是关于移除静态援用和在接口和facade下埋没内部援用和庞大代码。一旦你具有如许冲破依附的感到了,打仗遗留代码就不会是一件让你心惊肉跳的事变了。
<p>
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。
作者: 爱飞    时间: 2015-1-21 07:46
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 柔情似水    时间: 2015-1-23 12:24
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 金色的骷髅    时间: 2015-1-31 15:54
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 若天明    时间: 2015-2-6 20:22
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 第二个灵魂    时间: 2015-2-7 02:36
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 海妖    时间: 2015-2-19 21:17
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 莫相离    时间: 2015-2-25 19:27
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 若相依    时间: 2015-2-26 21:23
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 谁可相欹    时间: 2015-3-4 01:11
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 再见西城    时间: 2015-3-11 14:36
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 山那边是海    时间: 2015-3-11 17:21
Java 编程语言的风格十分接近C、C++语言。
作者: 透明    时间: 2015-3-19 03:13
是一种语言,用以产生「小应用程序(Applet(s))
作者: 兰色精灵    时间: 2015-3-27 02:37
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2