说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

【开源专访】郑晔谈Moco框架的前世今生以及Java编程之道

HTML文档下载 WORD文档下载 PDF文档下载
在JavaOne 2013大会上,郑晔凭Moco框架获得“Duke选择奖”。Moco是一个为解决Java企业级开发中存在的集成问题而设计的搭建模拟服务器的工具。CSDN记者采访了郑晔,请他谈谈这一框架以及他关于Java和敏捷开发的经验。

在今年7月份在上海举办的JavaOne 2013大会上,ThoughtWorks首席咨询师郑晔凭借Moco框架获得了首届中国“Duke选择奖”。该奖项已在全球范围连续开展了十届,旨在表彰Java领域内杰出技术项目及个人。

Moco是为解决Java企业级开发中存在的集成问题而设计的一个搭建模拟服务器程序库/工具。Moco本身支持API和独立运行两种方式。通过使用API,开发人员可以在JUnit、JBehave等测试测试框架里使用Moco,极大程度地降低了集成点测试的复杂度。

Moco项目地址:https://github.com/dreamhead/moco

CSDN记者采访了郑晔,请他来详细谈谈Moco框架以及他关于Java编程、敏捷开发的一些经验。


CSDN:请先做个自我介绍吧!

郑晔:大家好,我是郑晔,一个有十多年工作经验的程序员,现在在ThoughtWorks工作。这些年做过很多事情,包括开发和咨询,除此之外,做过演讲,也写过文章,翻译过书,也贡献过开源,愿意与人畅聊技术,也愿意分享自己的经验。个人一直热衷于探索各种程序设计语言在真实软件开发中所能发挥的威力,致力于探寻合理的软件开发方式。我的blog是梦想风暴(http://dreamhead.blogbus.com/),新浪微博是@dreamhead。

CSDN:开发Moco框架的初衷是什么?

郑晔:集成,几乎是一个稍具规模的应用都躲不开的话题。集成的难点在于,我们无法掌控集成端,它通常是由第三方团队开发的,在我们开发时不能给我们提供服务,更有甚者,要集成的服务在开发时还不存在。所以,开发团队为了不耽误进度,通常会自己开发一个模拟服务器,模拟集成端。具体到模拟服务上,处理的手法也是各种各样,对于Java团队,因为服务以HTTP集成居多,无论是Web Service,还是REST,所以,一种典型的做法是,开发一个模拟服务,打成WAR包,部署到一个应用服务器上。而我们知道,一旦牵扯到应用服务器部署,就是非常耗时的,部署的时间量级通常是分钟级的。而且,模拟服务器通常不是一次性的工作,我们需要在开发过程中,反复调整,这就进一步增加了维护一个模拟服务器的成本。有的应用服务器是非常消耗资源的,要用专门的机器来部署它。更进一步,如果机器资源有限,团队就只能共享一台机器,这样,即便我为测试自己的部分做一个小的改动,很有可能因为得不到机器的使用权,而要等上几天时间。

Moco就是针对这样一个特定的场景而生的。

CSDNMoco能帮助我们解决开发中的哪些问题?它的原理是什么?技术上是如何实现的?

郑晔:Moco是针对HTTP集成而生的,不过,现在也有人把它用在其它需要一个模拟服务器的场景中。比如,在移动开发中,有人开发一个移动应用,需要有一个远端服务,但在开发时,这个服务还不存在,他就用Moco模拟了一个服务,保证移动应用可以顺利的开发。同样,也有人把它用在Web前端开发里,当我们的页面需要通过与服务器交互时,就可以用Moco模拟这样一个服务。这种做法在开发一个页面原型时,非常有用,因为那个时候,我们还来不及开发一个完整的服务。

Moco的原理其实很简单,它就是根据一些配置,启动一个真正的HTTP服务。当发起请求满足一个条件时,它就给回复一个应答。Moco的底层没有依赖于像Servlet这样的重型框架,而是基于一个叫Netty网络应用框架直接编写的,这样一来,绕过了复杂的应用服务器,所以,它的速度是极快的。

CSDN:您提到Moco的开发灵感来自其他的Mock框架(如Mockito和Playframework),与这些框架相比,Moco的特点和优势是什么?

郑晔:这里的灵感主要指的是,程序的表达性。相对于传统做法,Moco的主要优势在于,配置非常符合程序员的直觉,而且启动速度极快。这是有了这两个最基本的特点,程序员用起来就非常方便。我们可以把Moco用在测试框架里。能够在测试框架里使用,也就意味着当发现什么问题时,我们可以很方便的调试,集成的难度一下子就降低了,把原来分钟级甚至天级的等待变成了立即可做的事情。对程序员来说,集成测试难度的降低也就意味着,缩短开发周期。我们把省下来的时间做更多有意义的事情。

CSDN:我看到Moco已经发布了0.8.1版本,Moco的未来规划是什么?

郑晔:Moco工程里有一个叫plan的文件,里面记录了很多Moco未来要做的事情,其中包含了很多东西,比如,扩展其它程序设计语言的支持、增加更多工具的支持。从Moco本身的功能上来说,也有很多可做的事情,比如,未来可能会实现对Socket的支持等。近期准备实现的功能是,异步调用其它服务,这是为了实现诸如OAuth认证之类的模型所要支持的。

CSDN:恭喜Moco获得了“Duke选择奖”,您认为Moco能够获奖的最大原因是什么?它的创新点在于?

郑晔:站在我的角度来看,Duke选择奖是鼓励创新的,而Moco是创新性地解决了集成这个非常复杂的问题。Moco以一种四两拨千斤的方式解决了原来需要大动干戈的集成问题。另外,Moco的Java API是一种内部DSL,它也是对Java程序设计语言表达能力的一种探索,某种程度上,也算是一种创新吧!

CSDN:为什么选择将Moco开源?

郑晔:从涉猎程序设计以来,我一直对开源充满好感。把自己的代码贡献出来,与其他人做知识上的交流,帮助别人解决问题,对于知识工作者来说,这是一件很有成就感的事情。加入ThoughtWorks以后,我们内部对于开源是尤为鼓励的,那些与业务逻辑无关,可以解决通用性问题的项目,我们都会尝试着开源出来。所以,你会看到许多来自ThoughtWorks的开源项目,有一些项目甚至给业界带来了非常大的改变,像大家熟知的CruiseControl,它开创持续集成的先河,Selenium解决Web页面的可测试性问题。有了这样的土壤,开始动手写Moco时,我自然而然地就想到了以开源的方式进行。

CSDN:除了Moco,您还发起或参与过哪些开源项目?从事开源这么长时间,您最大的感悟是什么?

郑晔:除了Moco,我还参与过一些开源项目,比如大约6、7年前,我曾经是第一个Ruby编译器项目XRuby的主力开发者,也曾经为JRuby贡献过一些代码。在我的github上,还有一些用Ruby读写二进制文件的程序库、用Ruby处理Java字节码的程序、用Java的Annotation实现委托的程序库,等等之类的小项目。只是适用范围有限,所以,没有很大的影响力。

其实,从开源里,我更多的是学习,贡献的内容相对来说还是很少的。其实,大多数人都是这样的。在程序设计领域,最有发言权的就是代码,任何一个希望提高自己能力的人都能从开源项目上学习到许多东西,无论是手法,还是理念。在我职业生涯之初,我接触到Spring,当时版本还是0.8,从中学到很多东西,让我受益至今。所以,我个人也特别希望以自己的能力能够回馈开源社区,希望别人也能从我的代码中有所感悟。获取与奉献,相辅相成,才能让社区更蓬勃的发展,让个体从中受益。

接下来,郑晔为我们分享了他关于Java编程、敏捷开发的一些经验,请看第2页。

详解Visual Studio Emulator for Android,微软的Mobile First! HPC China 2014完美落幕,AMD Firepro荣获好评! 揭秘微软的Container技术之一Drawbridge AWS副总裁谈数据中心网络打造 【最具价值CTO评选秀】出门问问CTO雷欣:从技术极客到核心管理的秘密 《近匠》APICloud:“云”+“端”一体的移动API提供者 Oculus移动SDK发布!John Carmack操刀、集成Unity 4.5 11月15日深圳见!深圳微信开发者大会公布全部议程 参与2014中国大数据行业大调查 BDTC门票等你拿 HTML5规范尘埃落定,5个开发工具推荐 盘点最受开发者喜爱的Android 5.0 Lollipop API IoE Day侧记:想开发智能硬件?先要弄明白这几个问题 【问底】许鹏:使用Spark+Cassandra打造高性能数据分析平台(二) 微软承诺所有Lumia WP8设备将升级至Win10,用户会买账吗? 周末,深圳微信开发者大会等您来!(参会必读+名单) 营造云安全生态链 第五届云安全联盟高峰论坛在京顺利召开 中国大数据六大技术变迁记 【最具价值CTO评选秀】当当网CTO熊长青:结合行业及技术发展,规划技术方向 社交颠覆传统,环信技术交流沙龙纪实(组图) 揭秘经典案例炼成之道 微信开发者大会精华回顾 从一家电子商务网站学到的经验教训 【最具价值CTO评选秀】极路由CTO康晓宁:极客转型CTO的感悟 盘点这些年来的“微信万能论” 《近匠》亲加通讯云:IM即时通讯API的极致服务者 TCL杯HTML5智能电视开发大赛完美落幕,8项获奖应用大揭晓! Xcode 6.2 Beta发布,支持WatchKit的iOS 8.2 SDK来了! 【最具价值CTO评选秀】携程高级技术副总裁叶亚明:从呼叫中心到移动互联网的演进 为什么靠谱的公司都应该参加CTO评选? 【深度剖析】微软开源.NET:战略重心已从PC转移到云端 专访POWER 8编程挑战赛选手黄文超:非科生的编程算法之路 BDTC 2014干货精彩不断,四大全天技术论坛议题全面曝光 倒库出现的问题 寻求怎样写SQL语句的教程 JNI的问题: dll文件放在哪里能被servlet调用到? 好不容易收到第一份海外定单! 问ListCtrl的item上的右键菜单 怎样求出一个点的坐标??????急急!!!! 请大家看一看这个分页程序,为什么在页数大于20时,按下一页时下面的页数还是显示的1~10页!!谢谢!! 我的linux在放mp3時總愛死,為甚麼? 唉,弄了好几天了,如何解决?????????????? 请问哪里有免费的PHP+MYSQL主页空间呀! 大家快来帮忙:数据库的一个小问题 我现在想学一门新技术,不知道是学VC++,JAVA,还是刚刚出来的。NET技术呢?请高手指点呀。 高分征解:一个动态提示窗口的问题,给出答案必定给分!!!求救我啊!! 在这里赚分真不容易呀! 怎样检查FORM中CHECKBOX和RADIO的值呢 那里有在asp中操作word对象的详细教程? 请问:如何得到TForm的窗口句柄? authorware中的按钮。 哪里有发送mail成功的php程序!! 关于上传数据的一个特殊问题,有点难 怎么用OLE实现与手机的通讯?? 汉语分词算法 grid显示问题 成为Delphi高手须看哪方面的书籍,请高高手指教? 关于属性页的小问题? 为水园增加点正气: 大家都是斯文人吗,呵呵||||| 诗经国风2001版----之桃夭 高手高手教教我 +++++++++++++一个很奇怪的问题************* 请问:有没有专门介绍C++函数使用的书籍? 提個有點難度的問題.看問題的有獎. 高手请看:这语句错在哪? 哪儿有dos的原代码? 谁能平息这几天水园的争端^^^^^^^^^^一个详和的水园^^^^^^^^^^^我只能拿分支持 为何显示黑乎乎的一片,chick!!!!!!! 原来女人也好色,欢迎MM。 心芯蕊~来拿分~~~~MM要分能不给吗??砸锅卖铁也要给啊!~~~~55555,可怜我的分啊~~~~~~~~~~~ 着急??一小段代码!!谁来看一下?? 男子汉说到做到,我在此特地向一位女士道歉 高分求救!急急! ! ! ! 奇怪,编译DIRECTX例子正常,新建一工程后改写主文件后运行BltFast函数为何这样? 急求高人!不简单:关于common dialogbox控件的问题? 怎样学可视化编程? 用Jmail收信后,为什么WORD之类的附件打开总是乱码?? 请问如何使用BCB中的PageControl创建Wizard? 别人跟的帖子也应该能回复呀! Rational Rose2000 Enterprise Edition的License Key是什么? 哪位好兄弟肯给我一个Jbuilder4的序列号? 就有两个月了,还没怎么看书,不知道能不能过高程!!! -------我和我MM系列(转)几乎是完全版 有MM和没MM的都来看看吧 当然MM也可以看~~ 建议:在此开设一个程序之家聊天室。 请教一个简单问题!! a克氯酸钾与b克二氧化锰共热,生成c克氯化钾,生成氧气多少克? kclo3和mno2受热分解氧化还原反应?请问,kclo3氧化还原后,谁是氧化剂?谁是还原剂? 氯酸钾(KClO3)中氯元素的化合价为() A.-1 B.+3氯酸钾(KClO3)中氯元素的化合价为() A.-1 B.+3 C.+5 D.+7 a克氯酸钾于二氧化锰共热,完全反应后得固体b克,生成氧气多少克 KClO3不加MnO2加热会怎样分解条件纯加热和不加MnO2催化剂不是吧,KClO3=?,我记得一定不是KClO3=加热=KCl+O2↑ KClO3中各元素的化合价分别是什么啊? 若A克氯酸钾与B克二氧化锰的混合物加热到质量不再减少,得到剩余固体C克,则反映后生成氧气质量是多少,同时生成氯化钾质量为多少要思路 把104.6克KCLO3和5克MnO2的混合物加热一段时间,混合中的二氧化锰的质量分数变为5%生成氧气的质量和剩余固体中绿花钾的质量分数 氯酸钾的化合价(每个元素是几价要标出来) 氯化钾的化合价(每个元素是几价也要标出来) 将氯酸钾和二氧化锰的混合物30克 充分加热 完全反应 共产生9.6克氧气 计算固体剩余物中各物质的质量是计算题 把14.5克KCLO3和1克MNO2的混合物加热反应完全后 得残留物10.7克,求剩余固体有哪些,质量各几克?最好能把解题思路写一下 kclo3请写出每个元素的化合价 将6.5克KClO3和MnO2的混合物装入大试管中,加热制氧气 待反应完毕后,冷却试管后称量.剩有4.58克固体物质4.58克固体中含有哪些物质?各多少克? 把干燥的KClO3和MnO2的混合物15.5克装入大试管加热,当反应不再发生时,冷却、称重,得10.7克固体物试计算原混合物中氯酸钾的质量 请标写说明KClO3中各元素的化合价 实验室用过氧化氢溶液制取氧气时,忘记加二氧化锰,其后果是为什么是在加热条件下才能较快产生氧气?分解过氧化氢制取氧气的实验不需要加热啊. 现有KClO3和MnO2混合物共10g,加热至反应结束,剩余固体7.12g,求原有KClO3和MnO2各多少克,还有原混合物中氯酸钾的质量分数 求KClO3中钾元素的化合价 实验室用过氧化氢分解制取氧气时,忘了加入二氧化锰.则结果是快急A没有氧气放出B放出氧气速率低C产生的氧气总量减少D BC 有KCLO3和MnO2的混合物10g,其中MnO2 2g经加热一段时间后冷却,测得剩余固体中MnO2占25%,在把这些固体加热,求还可以制的氧气多少克 答案最后为1. HClO4 KClO3 MgCl2 氯元素的化合价怎么求3个元素在一起的 怎么求呀..郁闷死我了.. 用过氧化氢制取氧气时,忘记加二氧化锰,其结果是什么? 含二氧化锰的质量分数2%的kclo3、Mno2混合物,加热一段时间测得二氧化锰的质量分数升为3%,求氯酸钾分解率 氯酸钾中氯的化合价是多少 氯酸钾在二氧化锰做催化剂内的条件下加热产生氧气的化学方程式是什么 用加热32克的氯酸钾和二氧化锰混合物的方法制取氧气,完全反映后剩余固体总质量为22.4克求制得氧气的质量还有啊,确定原混合物中氯酸钾的质量和二氧化锰的质量(此题追加5分) 求:kclo3,cl2,clo3-,alcl3中cl的化合价, 氯酸钾和二氧化锰混合制取氧气用什么反应装置?文字表达式是什么 245克氯酸钾和3克二氧化锰混合物加热完全反应生成多少克氧气?反应后剩余固体的质量是多少 求化合价:Na2SiO3 Si【】 KMnO4 Mn【】 KclO3 cl【】 HclO4 cl【】 氯酸钾加热及加二氧化锰后可分解生成氧气,那怎样证明在这个反应中二氧化锰是催化剂?请设计一个实验方案~ 将25克氯酸钾和二氧化锰的混合物加热到不再放出气体时,可得15.4克固体混合物:求:(1)生成多少克氧气 (2)有 氯酸钾分解的化学方程式怎么读? 加热氯酸钾和二氧化锰混合物制氧气(文字表达式) 取氯酸钾(KCLO3)和二氧化锰(MnO2)的混合物31g置于干燥的试管中,加热到质量不再减小为止,冷却后测得剩余固体质量为21.4g.试计算置得氧气多少克? 假设FeSO4按KCLO3的方式分解,反应的化学方程式为假若他分解生成两种氧化物,他的反应方程式为 用氯酸钾和二氧化锰制氧气的实验目的 在原子团CN-中C显几价 氯酸钾(KCLO3)在二氧化锰催化剂并加热的条件下能较快的分解生成氯化钾和氧气,试写出化学反应方程式要得到8g氧气,需分解氯酸钾多少克? a克KClO3与b克MnO2混合后,充分加热,得剩余固体c克,反应后MnO2的质量为多少? 加热氯酸钾制氧气时,不加入二氧化锰,其结果是 原子团的化合价 KCLO3 加催化剂二氧化锰实验制氧气 可以改变KCLO3的浓度么?怎么改变? 书写高锰酸钾加热生成氯酸钾加二氧化锰加氧气的化学方程式 什么叫原子团?什么叫原子团化合价希望大家尽量讲详细一点咯!谢谢拉 在KCLO3制氧气中,如何证实二氧化锰是催化剂,制作一个实验 氯酸钾和少量二氧化锰加热至较低温度.为什么能迅速放出氧气 原子团的化合价到底怎么理解.莪不会原子团的化合价那根价是什么啊.. 实验室用二氧化锰催化KClO3制氧气时,分离提纯回收其中的二氧化锰,正确的操作步骤是 A.溶解,过滤,蒸发B 溶解,过滤,洗涤,干燥C 溶解,过滤,结晶D 溶解,结晶,干燥是选B么,为什么丫, 由KClO3与MnO2组成混合物.MnO2的质量分数为20%,加热一段时间后,MnO2质量分数为25%求参加反应的KClO3占原有KClO3的质量分数. 化合价是什么?怎么计算原子团中某种元素的化合价? a克氯酸钾与二氧化锰混合物共热,完全反应后,的固体b克,其中二氧化锰c克,生成氧气多少克?生成氯化钾的质量为多少克? 加热氯酸钾和二氧化锰的混合物10克,使之完全分解,在一定温度下将残留固体加入20克水中,有3.8克固体未溶.在相同温度下,再加入10克水中,还有2.5克固体未溶,经测定2.5克固体为混合物,则产生 在氧化还原反应中kclo3里面k,cl,的化合价为多少k的化合价为+1,cl的化合价为+5为什么那?cl的化合价不应该是-1么?如(nacl)cl的化合价不固定么?那k的化合价固定么?一般元素化合价固定么?什么样 a克氯酸钾与二氧化锰混合物共热完全反应后得固体b克其中二氧化锰c克生成氧气多少克 请帮忙解决一道化学题谢谢啦取mno2和kclo3d固体混合物25克,加热至恒重.在一定温度下,将残留的固体加入12克水中有12克固体未溶解再加入5克水,仍有10克固体未溶解.kcl在不同温度下的溶解度如 KClO3中Cl的化合价是多少,怎么算的, m克氯酸钾与2克二氧化锰混合加热,完全反应后剩余固体残余物n克,则生成氧气的质量? KClO3和MnO2反应KCLO3不用催化剂能不能生成氧气? 求出KClO3中Cl的化合价谢谢了,Cl不是-1价吗
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn