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

【开源专访】郑晔谈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页。

简化工作流程,10款必备的HTML5开发工具 六大领域考评鲍尔默微软掌舵能力,只一“C”尔? 剥离自雅虎的Hortonworks:低调发展,三年融资近1亿美元 Google的中国梦如何死于傲慢与不得力公关 [回顾]昨日黄花,那些被人们遗忘的11个操作系统 管理企业级API的7个最佳实践 Java 与 .NET 的平台发展之争 英特尔正在开发3D深度感知摄像头 可读出人类的情绪等 从数据平台到运营平台:国产开源移动统计Cobub Razor发布0.6版本 八月网络事故频现,CN域名遭最大规模网络攻击 Google云平台或将成为Amazon最大竞争对手 Camera360宣布完成1800万美元B轮融资 利用ZK Ajax框架 高效扩展Web App Web开发者需养成的8个好习惯 GitHub工程师专访:奶昔+海象+游泳池=开源 Paymill发布移动SDK,实现应用内直接支付 免费到付费:全球第二开源Web Server Nginx“堕入”商业化 乐视发布新版智能电视操作系统LetvUI 2.3—Schnauzer 进步还是灾难的开始?科学家首次通过互联网实现“心灵感应” 叫板Apple TV 谷歌发布Chromecast的iOS应用 性能提升100倍的秘密武器:一行SQL代码的妙用 60个开发者不容错过的免费资源库 专门针对初学者的Node.js教程 初创公司Parse.ly:1年内捕获1.6亿独立访问用户,收入增5倍 融资新方式:用未来10年收入的6%融资10万美元 小米手机-HAXLR8on:创客32小时全纪实 图文:看苹果下一代iPhone细节 能吸引你购买吗? [开源推荐]Intention.js:通过HTML进行响应式开发 Android副总裁Hugo Barra将加盟小米 三星将召开首届开发者大会 推新SDK和S Pen 15个步骤创立技术公司,并收获千万用户(三) 谁有这两本书,请帮忙发到我的邮箱里,100分相送 到底应该怎么办? 大家好,如何打开DLL文件? 建议成立一个程序员协会 关于IE中图片的保存 VB 语言支持问题 高分求李维《delphi5.xDELPHI5.X ADO/MTS/COM+高级程序设计》示例源码!!!! 请yangshu进来!给妳点分!!!倒分! 请教各位如何实现dbgrid中按住shift多选的问题? 请问把sql-server7中的数据文件copy出来行吗? 找不到类,请大家帮忙解决,谢谢 异常处理问题 怎样恢复被损坏的"本地用户和组" 小弟在线等待,一小问题,,大家来帮忙?? 求jsp树的原代码 最好是jsp+js+xml 执行效率要高。(从数据库中动态生成的)在线 关于多层结构中事务处理的问题. VB6.0升级到VB.NET的问题。 在ASP中使用ActiveX Control ADOTable表名如何在运行时“递进” 这样的待遇能招到人吗? 不好意思,问个技术问题。其他版实在没人气!只好来这问! 不爽,辞职,散分! 在线等待(100)往一个表的字段赋值,怎么不行啊! 急!在线等待! 如何把一个窗体内嵌到另外一个窗体的指定位置? 电源键设置问题 假设有一个变量CString str,调用str.GetBuffer(ncount);上面函数的参数应该为多少,才能取得缓冲中的全部字串值? 如何做局域网中的机子通讯 有关Enumerations的问题 请教英文语法检查的算法. 给些提示或参考资料好吗? 简单的关于对话框关闭的问题 关于新闻联播! 哪位有USB1或2.0的开发文档或相关资料? 关于JAVA的问题!请教高手~! 在delphi中用什么样的函数可以将十六进制数转换成十进制? 在MotoSDK3.1的moto388c上模拟正常,但换成T720出现严重问题。 开发“办公小助手”,我准备用VB开发,各位给点思路! 在2000下telnet到Solaris机器,c++编译的问题 droplist 女人啊女人 无法进入系统了,请大家帮我看看怎么回事。谢谢! 如何通过串口来读写数据? 急!想要得到机器安装的物理内存数量!最好还能得到锁定的内存数量! 如何在编辑框中输入完后,按回车鍵能响应到一个确定按钮 在delphi 程序中 如何控制 sql server 服务器的启动与关闭,也就是把 sql server 的服务停止,也就是屏幕右下角的 sql server 服务器中的 [欢迎讨论]J2EE之EJB与MySQL 金山毒霸升级的注册码。。。。。。。 请PB高手来看看,因对我今后DW设计会有很大的影响,请尽量详细些。 关于分辨率的问题 发神经,送分了 请教:如何做屏幕保护程序? 新编初中版文言文助读的第32篇是什么?求原文! 下落不明的明是什么意思? 为什么芳香烃不能与溴水反应?芳香烃就是有苯环类的有机物 朱厚熜是一个怎么样的皇帝,是一个好皇帝吗? 正午牡丹中何以明之?意思 网络上的纠结哦!别人都说什么纠结, 法华经主要讲的是什么 后见之明是什么意思? 吾未见其明也的其字与也字是什么意思 法华经总共有几部我买了法华经7部,不知道有没有买齐, 求有妇人夜起溲溺这篇文章的翻译 “小学而大遗,吾未见其明也”翻译成现代汉语什么意思? 吃了一块烧焦的肉怎么办 “秦时妇人”文言文翻译及课后练习 利用化学知识制作日常生活中用到的东西,比如简易净水器、灭火器,求原理方法! 一道化学离子推断题在一种酸性溶液中可能存在NO-、I-、Cl-、Fe3+中的一种或几种离子.向该溶液中加入溴水,单质溴被还原.由此可以推断该溶液中:含有什么?不含什么?不能确定什么?请给出具 不堪吏人妇,岂合今郎君 求翻译古文,thx 英语翻译晋师従齐师,入自丘舆,击马陉.齐侯使宾媚人赂以纪甗、玉磬与地.不可,则听客之所为.宾媚人致赂,晋人不可,曰:“必以萧同叔子为质,而使齐之封内尽东其亩.”对曰:“萧同叔子非他 神将世界陈宫曹仁谁厉害? 请无视我做的和划掉的什么的 明可分开的意思 透彻点的 新编初中文言文助读第38篇,原文,注释 化学离子推断题某无色透明溶液中,可能含有以下离子中的若干种:K+、Mg2+、Al3+、Fe2+、Ba2+、NO3-、SO42-、CO32-、I-和Cl-,取该溶液进行如下实验:①将溶液滴在pH试纸上,呈红色.② 道可道非常道 明可明非常明 新编初中文言文助读(增订本)1 邴原泣学 我吃过烧焦肉?咋办呢?那天在奶奶家一不小心吃了烧焦的肉,我也知道烧的肉不好吃.但我已经吃了,咋办呢?有没有什么可以补救的办法.5555555我真得挺害怕的 初中的第一篇文言文是什么 急求《新编初中文言文助读》 第28课的译文 唐太宗纳谏唐太宗将大臣们的奏章贴在强上,原因是 目的是 用原文回答 一篇初中文言文,求解答 新编初中文言文助读杨振中编的,下篇37、38,只有名字也行, 谁有唐太宗纳谏的小故事?请给我一些.不需要太长,字数最好在100以内(不要文言文). 纱布怎么灭菌我在药店买的是医用脱脂棉纱布,上面说出厂时未作灭菌,我要怎么给它灭菌呢·?一定要用高压锅吗~可是我这里没有.还有其他办法吗? 嘉靖皇帝是朱元璋哪个儿子的后代? 高中班级太乱,老师管不了怎么办?我是新高一,高中不算太好,是私立,一班60人,有几个混混不管老师说什么都起哄,他们一起哄就有好多人跟着起哄,因为是私立,老师都不爱管不,但是我是因为中 在家里如何为纱布灭菌?我常常需要给褥疮病人换药. 嘉靖多少个儿子、 有关无甲l醛胶水配方 什么叫做"郭敬明效应"具体一点点.并且说点例子,关于郭敬明效应的. 千军易得一将难求兵和将是什么意思 室内空气 voc多少是超标 郭敬明为什么叫小四呢? 经师易得,人师难求.怎么理解 什么是VOC?雾霾现象是由于NOx与VOC增加了大气氧化性雾霾现象与PM2.5污染主要是由于NOx与VOC增加了大气氧化性,所以应控制NOx与VOC的排放.NOx来源主要是化石燃料燃烧,易集中控制,VOC来源主要是化 当你在老师面前、同学面前评价自己父母时有感触的说道;: “千军易得,一将难求”的“军”和“将”两个字是什么意思? 灭菌纱布与灭菌脱脂纱布有什么区别? 当你在老师、同学面前评价自己父母时,你深有感触地说:“_____,__ ___.” 一定能在下列溶液中大量共存的离子组是A含有大量铝离子:钠离子,铵根离子,硫酸根离子,氯离子B含有大量三价铁离子的:钠离子,镁离子,硝酸根离子,SCN2- 医用脱脂纱布家庭如何杀菌?买的医用纱布说明书称为非无菌,不可直接接触创口,请问在家里如何使纱布无菌呢? 明太祖规定商人只许穿布是什么政策?对社会有利还是不利? 下列溶液中,一定能够大量共存的离子组是A、滴加石蕊试液显红色的溶液:Fe3+ .NH4+.Cl-.SCN-B、常温下,由水电离出的c(H+)=10^-14mol/L的溶液:CO32-.SO42-.Na+.K+C、与铝反应放出氢气的溶液:K+.SO42-.N 刘琨怎么读? kang康熙真的传位给十四阿哥是四阿哥改了诏书吗 下列溶液中一定能大量共存的离子组是?A加入Al粉有氢气生成的溶液中镁离子、铜离子、硫酸根离子、钾离子B使PH试纸呈红色的溶液中Fe2+.I- NO3- Cl-C常温下,c(H+)=十的负十四次方的溶液中钠离子 介绍一下西晋的八王之乱? 物体M沿粗糙的斜面下滑,请画出它的受力示意图.是画3个还是4个为什么不画4个,支持力 摩擦力 重力,还有一个向下的力呀如果说是3个,为什么泥石流的图就要画4个滑冰运动员传车冰鞋在冰面 下列四组离子在溶液中能够大量共存的是A.Na+、CO3 2-、Cl-、H+ B.Cu+、Cl-、Na+、S2-C.H+、S2-、Cl-、K+ D.K+、Cl-、Na+、S2+ “何以明之”的意思 当人们在大气层外,恰好在地平线上方有一个空间站,人们希望通过发送一束激光与空间站进行联络时,应该将激光对准:A 略高空间站 B略低 C直接对准 D都不对光路可逆我觉得不对啊,这不是和 黑客因不满新加坡媒体局规定威胁将发动加拿大女子相亲网站“钓男人”吃免费餐新加坡两名少年不满被人抱怨挥棍打人被新加坡公共交通“有人味儿”国际新闻早报:美国总统与伊拉克总理谈韩国将重组国军网络司令部 以提高工作克里急赴中东安抚沙特 美沙关系因叙问土耳其4名女议员戴头巾出席会议 打破梅德韦杰夫谈监听丑闻:美国不能这样厚俄“彼得大帝”号核动力巡洋舰进入地中英国检方称《世界新闻报》曾窃听哈里王泰国机长驾照过期在南京被停飞 乘客机黄坤明辞去杭州市人大常委会主任职务 浪漫升级 新加坡7大蜜月旅行地39岁杨采妮今新加坡出嫁 明星闺蜜到朴槿惠首谈“网军干涉选举”梅德韦杰夫:美国窃听外国领导人的行为普京登顶权势榜 只怪奥巴马不争气韩国三四流整形医生赴中国淘金 自称顶韩国三四流整形医生赴中国淘金 自称顶杭州启动最高规格专项督查 严惩公款请世界第二 娜姐有盼了降雪来袭 多条高铁限速若单位无规定 则应同工同酬电视节目雪“中戏”$20万悬赏 并入纪念奖学金睡前几小时内所做的一切事都应有助于你公交25条线有变“这怎么话儿说的”受降雪及路面结冰影响 京津冀苏皖等地6名上海驴友春节“探险”被困武夷山已英国17岁女孩“喊话”教育大臣 呼吁莫文蔚套用歌词怀念亡父:爸爸,I l乌鲁木齐一急救中心护士遭患者家属殴打新疆库木塔格沙漠发现一具女尸 疑为徒男性养生:男人养生离不开的9大日常食香港金融管理局:近期无大量资金进出香香港官员:单程证制度不应仓促改变香港金融管理局:香港假钞问题不算严重香港金融管理局:随着美国退市 资金将新疆春节金价依然保持“2”时代
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘