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

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

VB 5.0中实现鼠标拖放 VB5.0下工具条的制作 VB5.0中基于桌面的屏幕技巧 VB5.0中实现字体闪烁效果 VB5实现窗口图像缩放、滚动技巧 VB6.0动态加载ActiveX控件漫谈 VB编程步步高-表单篇 VB编程常见问题 VB编程中如何锁定鼠标 VB创建位图菜单 VB实现按钮浮动效果 VB应用程序中的工具提示和状态显示 VB中处理长列表框项的两种方法 VB中多级下拉列表的实现 VB中防止将重复项目添加到列表框控件中 VB中实现菜单分割 VB中实现带预览的对话框 VB中实现同一窗口的多个实例及控件的动态增减 VB中阴影字体的实现 VB自定义数据结构的传输转换 Visual Basic 窗体背景花纹的实现 Visual Basic 中的界面设计原则和编程技巧 Visual Basic 中文本框处理技巧集萃 Visual Basic 中字符淡出淡入的实现 Visual Basic窗体背景花纹的实现 Visual Basic下工具条的制作 Visual Basic中的界面设计原则和编程技巧 Visual Basic中在同一界面输入大量数据的几种方法 VisualBasic中的界面设计原则和编程技巧 VisualBasic中用户界面的设计原则 把 VB 标准的工具栏变成平面式 关于SOCK5代理服务器的第二次协商问题? 为什么oracle的sql语句的表名必须加“”??? 谁能解决工具条中的一问题?50分相送 ##### 100分求教:如何实现框架集下页面的定向输出?##### 菜单菜单!!! 如何用Schema验证XML文档 JSP中jsp文件和bean的class文件的相对位置是怎么样啊? excel中的两个问题:1、如何关闭userForm1窗口?2、如何在打开userForm1窗口时使主窗口最小化? Dll函数问题 咋判断用户点的四点能围成一个四边形? 网站中的某一页嵌入VB的AtiveX 控件,客户端能访问网站,但不能打开AtiveX控件。。。高分 请问怎么把 string 型转换成 System.Data.SqlDbType 型? 机器无法启动 主板有问题吗 高分请教 创建不了C#Web项目,急!!!(刚学C#) [求助] 用fopen函数读不出URL文件? 怎么判断listview是否有一个item被选中? 请说一下硬盘容量和内存容量的关系! ▄▅▆▇█ 水园的大背景离不开吵架 █▇▆▅▄ 请教mm有个问题! linux下的编程问题 以Oracle为例说明如何通过ODBC将数据库中的指定表导出到MDB数据库。(原创) 关于一种特殊按钮 SQL语句小问题!!在线等待! 想学ColdFusion 请看我的转载的贴子 Troj_Hacline.A是什么病毒? 关于XML的问题,150分赠送,急 dll问题。很简单。 感慨!!!(潜水一年,吐个泡,顺便发表一点意见) 帮个忙 怎么在Installshield中创建对话框,并操作ACCESS数据库? 连续给分:邮件服务器防病毒问题! 我想编译一个像API一样的dll 启动rose就出错,高手来看,100分 关于打印的一个问题 急!!!请提供一段设置Session的全部代码,谢谢!! 请问,从第二帧开始播放的代码的什么??? 老师要求编写五子棋的程序可是我实在想不出该怎么设定估价函数啊帮帮忙啊? 感觉压力比较大,活不下去,想跳楼自杀的进来侃侃 一个关于php提交表单的问题。 各位大侠,要命问题! 怎么在Installshield中创建对话框,并操作ACCESS数据库? win2000server的管理员密码让人改了,怎么办呀! 太气愤了,帮帮我? 用BDE连接MS SQL SERVER,为什么运行后出现未知用户名或密码的错误? datagrid中能不能进行统计 如何编写“outlook”风格的界面 如何实现flash截图?我研究了好久也不明白,希高手指点!(在线等待) 程序调用的DLL 在delphi中,用ADO如何实现将SQL中多表导出到一个Access中? 无聊啊无聊 热力学上的二级相变是什么? 1.管理原理的主要特征为____、____、____、____.2.管理和战略,____告诉我们怎样"做正确的事",____在 一道比大小的题,答对了加分,1小时15分大于还是小于还是等于1.15小时? 陨石 爆炸会引发黑洞不? 一、填空题 1.管理原理的主要特征为____、____、____、____. 2.管理和战略,____告诉我们怎样"做正确的 分数比大小,填大于小于或等于,题在下面32/24O21/9 15/12O24/16 51/17O100/25 O里面填大于小于或等于 宇宙里,被卷入黑洞后,会去哪里?我觉得不应该消失的无影无踪,因为你可以自己想想,一个物体不会忽然没有这个物质了吧?我觉得被卷入黑洞后,是不是带物体去了另外一个空间?(不是宇宙里 管理原理是具有普遍指导意义的基本规律,它的主要特征有? 几道关于一次函数的题目;大于或等于初2者进①下列是关X与Y变量与的关系式:1;Y=X 2;Y*Y=X 3;2X*X-Y=0 4;2X-Y*Y=0其中是的函数有_______.(填序号)②已知关于X的方程AX-5=7的解为X=1,则一次函数Y=AX- 我国武装力量是由哪几部分组成的?分别说明,具体点, 自动控制原理的主要特征是什么 最近比较火的事情是什么?最近娱乐圈有什么比较火的事情吗?还不是特别清楚. 果园今年收苹果450千克,收的梨比苹果的4倍少168千克,果园今年收梨多少千克? 岛津义弘怎么死的 现在全世界最关注的事情是什么 人非生而知之者 孰能无惑的而 鬼石曼子是谁? 世界上所有注入印度洋的河流有哪些主要的河流 4条就行了 2012光子带 什么样子的人会死去 岛津公司与战国时的岛津义弘等有何关系?家徽都一样. 用长,宽,高分别是3厘米,1厘米,1厘米的小木条拼成一个正方体,至少需要这样的小木条()条 2012进入光子带时会怎样,要全一点的,进入之后呢?什么人会死 丑鬼只是一种外号而已吗?很多人都说我不丑``但是又有很多人老是叫我丑鬼!难道只是外号而已吗?还是为了不想伤我自尊而说的? 一根长4米宽2厘米厚1.8厘米的木条一个立方要多少根 2012会进入光子带吗?我们会死吗?我才14岁啊 不要复制 看多了我艹 真死假死 不能开玩笑的! 《春望》中表达诗人对国土沦陷触目伤情的诗句是? 关于一道数学题,关于轴对称的要求合情合理,不超出七年级范围如图,△ABC中,ABPC-PB. 想自己在家里用电灯泡孵化小鸡,我找到个资料,不到能不能孵,有经验的人提提意见.准备个箱子要孵多一些箱子就大些,在底下垫棉花,把鸡蛋放在上面,拿一个60瓦的灯泡,放在比鸡蛋高一寸的地 国土半壁沦陷,民族存亡危难怎么翻译成英文呢? 如果把南极的企鹅养在我们居住的地区,要注意什么问题?现在回答,有急用! 人非生而知之者,孰能无惑告诉我们一个什么道理 1、我的名字叫勾践,士兵被杀,国土沦陷,堂堂国王当马夫,每天卧薪尝胆.我的名字叫张海迪,每天只能坐轮椅,高位截唐虽然苦,自强不息超过你.我的名字叫桑兰,本是优秀运动员,一朝不慎身瘫痪, 能不能把南极的企鹅放到北极去养? 用19这个数字和创造结合起来设计一个标志, 英语翻译最好能体现出"本就"这两个字(我用google翻译本就为this to,用这个怎么造句) 把南极的企鹅移养到我们的居住地区应注意什么? 如图,直线CD,EF相交于点O,OA⊥OB,OF平分∠AOD,∠BOE=2∠BOC,求∠BOC的度数如题 沦陷区比实际控制国土还大的国家有哪些?东亚的这几个不用说. 如果把沙漠中的仙人掌和南极的企鹅移居到福建这种温暖的地方,要注意什么问题? Western杂交中,为何要引入二抗?为何不在一抗上直接加上放射性同位素或者GFP? 含反义词的成语写出五个 战国名将岛津义弘名气为什么比将他打的落花流水的陈璘大有此看来 前田和真田和伊达和柴田等都是垃圾 western杂交可否用于检测酵母菌基因组特征 谁能打出下面这个符号 急用 已有林权证,是否还需办理土地使用证?某部队与村委会购买林地,已办理林权证,期限至2078年.现某部队又申请办理土地使用证,是否能给予办理? 要是住在南极的企鹅生活在热带会怎么样 人非生而知之者 孰能无惑的意思 历史上的武则天到底是什么样的人? 南极的企鹅可以在北极生活吗? 怎样防止小鸟吃田地里的庄家 武则天有喜欢的女人吗?很多皇帝不仅有女宠也有男宠,武则天有女宠或者是比较喜欢的女人吗?拜托三楼的,你们不要乱讲可以么,贾静雯是饰演武则天的演员的名字啦.你们可以给点具体的确切 如何去掉质谱中的杂峰? 用LCMS测试样品时质谱中总是存在143的峰,更换流动相后仍有此问题,请问如何解决 诱使1998年嫩江和松花江大洪涝灾害的根本原因是什么 武则天是个怎么样的人? 为什么热力学基本关系式不适用与相变? 人非生而知之者,孰能无惑.快 武则天是哪个皇帝的女人啊? 请问为什么说热力学公式一般只适用于恒组成的均相封闭体系?比如等压反应热等于焓的改变值的公式适用条件是封闭体系等压的物理化学变化过程就可以了,那和上面的说法又不一样了…… 测泥浆性能个种仪器的使用方法 求赞美家乡的作文!家乡比较有名的是蔬菜,是著名蔬菜之乡家乡变化比较大 着重写家乡的道路,城市建设,晚间景色(喷泉,霓虹灯等),家乡的弥河水 多伦多市长涉吸毒视频被查获 其友涉嫌美澳等多国驻外使馆被曝精心伪装 监听美墨边境发现新贩毒地道 配电力轨道和经济滞缓导致欧元区通胀率降至2009英媒窃听案中两名涉案编辑被传系恋人关美将俄歌星列入黑名单 俄抗议表示不可美国一客机收到炸弹威胁 现已紧急转降伊朗“巴斯基”武装力量在伊展开演习 日媒醋意评价朴槿惠外交策略 称其无视德媒:斯诺登与德绿党议员见面 有意前万圣节狂欢化装派对 萌“小鬼”们惹人国际刑事法院再次推迟肯尼亚总统出庭受澳维州出台新法规定性侵犯再犯案将不准秘鲁组成新内阁 塞萨尔 比利亚努埃瓦盟友也要区别对待 日本德国仍是美国监英国房价一年上涨5.8% 专家警告“温家宝2010年与大学生座谈:大学生日议员向天皇塞信望其了解民间疾苦 或温家宝出书谈教育忆童年 部分通信首次观察:中国高层释楼市调控信号 长效机日本大规模夺岛军演科目敏感 专家:在教育部关于同意东北农业大学成栋学院绝迹25年后,黑犀牛重返家园复旦宣传片事件的必然逻辑教育部关于同意中南财经政法大学武汉学教育部关于同意建立福州理工学院的函教育部关于同意建立厦门华厦学院的函教育部关于同意在贵州商业高等专科学校教育部关于同意甘肃中医学院更名为教育部关于同意湖北工业大学商贸学院北京“史上最严禁烟令”实施首日见闻“东方之星”客船翻沉事件已救起11人最新消息:沉船内部有生命迹象湖南邵阳矿难共致8人死亡长江沉船涉事旅行团由上海协和旅行社组落水乘客3位目前还在住院人员均为男性李克强现场指挥客船翻沉救援古代快递业:魏晋时颁布法规 唐代运送焦彦龙:践行“三严三实” 苦干实干打中国舰艇编队首访克罗地亚 054A舰易车与观致达成战略合作 开启汽车电商亚马逊中国携美泰、国贸商城 开启托马
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘