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

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

单页Web应用或引领下一代Web新趋势? [CTO俱乐部第89期]新时代的前端开发 [多图]160台Mac mini打造的数据中心机架 是谁动了我的CPU! 欧朋CEO:GPU加速是手机浏览器的新趋势 TOP30专访:Splashtop研发中心总经理Alex Xu 2012Q3国内App开发者半数以上入不敷出 细微之处见真章 为什么要在try-catch-finally里加大括号 独立开发者:面对攻击就要“脸皮厚+更自豪” IBM纳米光子芯片对付大数据 单个通道25Gbps AWS数据仓库服务Redshift是最好的选择吗? 又赚了一笔:微软向两公司收取Android专利费 深度解析:Android4.2系统“应用验证服务” 欧洲移动游戏大会:五大行业趋势 大揭秘:Windows Phone 8 键盘输入的8个设计精髓 朝鲜:探寻最神秘的移动互联网王国 如何让IE 10玩转响应式网站 Windows Server 2012:令CIO激动的三个新特性 高德和新浪微博战略合作 打通账号互调数据 乐观锁和悲观锁 你更钟情于哪一个? Apple索30%分成 iOS版微软SkyDrive更新搁浅 [简讯] Linux 3.7发布 开源图形卡驱动程序 高效敏捷的十大经验法则 佛瑞斯特资讯公司预测2013年云计算的十个变化 百会中小企业CRM年会成功举办 发布CRM选型指南 诺基亚创新体验中心NEIC训练团正式开班 新威胁:IE新漏洞允许网站跟踪鼠标 少编码多思考:代码越多 问题越多 [简讯] JDK 7u10发布 修复安全漏洞 搜狗茹立云:为何搜狗语音助手比Siri更精准? BlackBerry 10最终版SDK Gold发布 将web工程加到sourcesafe的问题,十万火急,帮忙解决一定给分,分数不够可以其他方式给。 在sqlserver中有字段类型为image,如何往该字段放图象?200分 基础问题 NT ,when boot ,can not find system 关于internet上的控件打包??????????????? 请各位高手帮忙解决!谢谢!! 谁能告诉我那几个网络论坛比较好 如何实现socket 的多线程 高手请这边来瞧瞧 如何在ODBC应用程序中使用CListView? excelapplication控件???教教我吧,我不知道为什么?很简单的。 关于internet上的控件打包??????????????? 谁知道autovuex.ocx 控件(可以显示CAD等图形)哪儿有下载??拒绝up 大家都用VC吧,这个怎么实现? 能否用变量的内容说明对象 在 广州那边招DELPHI程序员的公司多不多呀! 请问在网页里,图片在装载完前,显示的区域是一个小方框再扩成一个图像,是怎么做的? 如何在ODBC应用程序中使用CListView? 关于获取list控件值的问题!在线等候!谢谢! 请帮忙提供一点怎样学习Delphi的知识! fireworks4.0英文版关于动画的制作? 求租西三环,紫竹院,首师大,航天桥,花园村附近的一居,价位在1000左右 WORD问题 谁知道autovuex.ocx 控件(可以显示CAD等图形)哪儿有下载??拒绝up ●●●最恶心内容,谁看了谁吐,不信,试试看?! 如何从文本文件中读取数据? 怎样建立一个局域网? 高分那里有JBuilder7下载, 提供者都有分(每人5-20分) 请问如何让dbgrid支持多选? 桌面设置小问题? 调用embed 方法播放avi文件需要客户端安装相应软件么? 高分求教两个webbrowser控件问题。 哪里有1.4版的sun.*包的原码? 为什么我打印出来是乱码?打印预览是正确的中文。 因为我是初学者,问了很多问题,都没解决,但是分已经发完,所以请ERP2帮我把分拿回给我,并没有做弊? 测试工具 在 *.xsl 里关于条件语句的问题 问一个菜鸟问题,在线等候 请问如何结贴? =======================国际足联致中国足协的感谢信======================= 如何选取CListView(report格式) 中的一个值? 鉴定论文的高手请进 如何显示数据库里的JPG图片文件 请高手赐教:小弟是一局域网的网管,很想效仿那些提供免费主页空间的网站,随时可以申请主页空间,当场开通,并提供FTP上载服务。 怎样在pb8中用 sqlca.过程名 这样的格式调用oracle中包的过程??送100分 以前的女朋友问我的一个问题,我不会,希望各位大虾帮助解决!!!!!!!!!!!!! 如何选取CListView(report格式) 中的一个值? 关于去掉iis要求用户登录的问题 什么软件最流行??? 请问用where连结两个表与用join连结两个表有什么不同,如何用join连结三个以上的表 谁有不需要的163。NET的信箱能不能给我一个,谢谢 “贪婪者总是愚蠢的”怎么理解 一个圆柱形水桶,里面装有半桶水,倒出三分之二后,还剩7.8立方分米,已知桶的高5分米,求水桶的底面积.算式 胡辣汤怎么做 贪婪者总是愚蠢的 怎样理解 一圆柱形容器的内半径为3厘米,内壁高30厘米,容器内盛有10厘米高的水,将一底面半径2CM的金属圆柱竖放,水面刚好淹没金属圆柱.1,求金圆柱的高2,如果容器盛20厘米的水呢?列方程,写过程☺ 一道数学题,关于圆锥体的体积计算现在有一个标准圆锥体,已知它的重量是150克,材质是钢,确定钢的密度为7.8g/cm3,求:圆锥体的高度有多高?别人说这个问题的时候我不确定标准圆锥体意味着 人为是么总是那么贪婪啊 得到的东西部懂得珍惜 要等到失去才知道去珍惜 一圆柱形容器的内半径为3cm,内壁高30cm,容器里盛有18cm高的水,现将一个底面半径为2cm,高为15cm的金属圆柱竖直放在放在容器内,问容器内的水将升高()cm. 数学题把一个圆柱做成一个和它等底等高的圆锥,削去部分体积是圆柱体积的几分之几,削去部分体积是圆锥体把一个圆柱做成一个和它等底等高的圆锥,削去部分体积是圆柱体积的几分之几,削 我心中的和平 作文 不要战争类的好么.尼玛 - - 现在不是战争年代好么 我们和平的很阿~要不通过利比亚来写和平也okey。 1.圆锥体的体积是四分之三,底面积是二分之五平方分米,他的高是( )2.有一个圆柱形储粮桶,容积是3.14立方米,桶升2米,把这个桶装满稻谷后再在上面把稻谷堆成一个高0.3米的圆锥.这个储粮桶 圆锥体的数学题1.将一块长15厘米,宽10厘米,高20厘米的长方体木块削成一个最大的圆锥体,圆锥体的体积是()立方厘米.2.一个圆柱体的体积比一个和它等底等高的圆锥体的体积大24立方厘米, 小孩上课爱讲话怎么办 一个圆柱体和一个圆锥体的体积相等,他们底面积的比是3:7,圆柱的高14厘米,圆锥的高是()厘米? 要一篇关于科学发展观的社会实践论文!社会实践论文 孩子上课老爱讲话怎么办? 《这片土地是神圣的》生字组词,每个组三个词,急 一个圆柱体的侧面积是20平方米,底面半径是1米.这个圆柱体的体积约是多少立方米? 王芳和李莉同时摘樱桃,王芳平均每小时采摘8kg,李丽平均每小时摘7kg.采摘结束后王芳从她采摘的樱桃中取出了0.25kg给了李丽,这时两人的樱桃一样多.他们采摘用了多少时间?找出它们的量并按 盛字的组词声调是二声怎么组啊盛字的组词,二声怎么组啊 找几篇有关 科学发展观实践调查报告的论文该死的部长要我们写报告.我x.死巫婆,竟然要1000字.一拖再拖,明天终于要交了.我的兄弟只能靠我了,因此请各位找4篇或大于4篇,不要重复,最好要比 王芳和李丽同时菜摘樱桃,王芳平均每小时采8Kg,李丽平均每个时乎人7Kg,采摘结束后王芳从她采摘的樱桃中取出0.25Kg给李丽,这时两人的樱桃一样多,她们采摘用了多少时间?(解方程) 用“挨”的不同音调组词 一个圆柱体,高每增加1米,它的侧面积就增加31.4平方米.如果高是10米,它的体积是多少立方米? 我们要在别人贪婪的时候恐惧,在别人恐惧的时候贪婪:) 这句话什么含义? “暑期实践”英文怎么说指的是经济调查类的实践 红星乡今年实际工业总产值为200万元,比计划多40万元,实际工业总产值比计划增加了百分之几? 请问恐怖片《撕裂人》里面的那首英文歌曲叫什么名字 一篇英文暑期社会实践150字 某化肥厂计划全年生产化肥200万吨,前三季度已完成总产量的60%,如果10月份的产量为20万吨那么最后两个月中,月平均增长率为多少时才能完成火超额完成全年计划(精确到0.001) 问个美国恐怖电影的名字,情节大约是一个很恶心的大虫子,只能在沙土里快速运动,把一个人逼死在电线杆上后来把羊群杀了,然后杀了一个老头,只剩个头还在地上,后来把一堆医生夫妇拖进沙 原计划投资1000万建一所小学,实际用去1200万元,增加投资( )%. 2012年我国动漫产业总产量达760亿元,计划以年均增长率为40%的速度扩张,那么X年之 贪婪的意思营业员营业员营业员眼 教委投资新建一所小学,实际用去1200万元,比计划的多用了200万元,实际投资比计划增加了百分之几? 一圆柱形容器的内半径为3厘米,内壁高30厘米,容器内盛有15厘米高的水,现将一个底面半径为2厘米,高为35厘米的金属原子竖直放入容器中,问容器中的水将升高多少厘米?(其中水不会外溢) 用贪婪、堕落、点缀造句今天要 陈店小学的导游词作文450字 面包房原计划今天做1000个面包,实际做了1200个,相当于原计划的百分之几?超过计划的百分之几?要算式, 一项工程,甲单独做要10天完成,乙单独做要15天完成,两人合作2天后,还剩下40米没修.工程全长多少米? 圆柱体知道容积底面积\半径怎么算? 一圆柱形容器的内半径为3厘米,内壁高30厘米,容器内盛有 15厘米高的水..现将一底面半径2厘米,高18厘米的个柱形容器的内半径为3厘米,内壁高30厘米,容器内盛有15厘米高的水,现将一个底面半径 一项工程,甲单独做要10天完成,乙单独做要15天完成,两人合作两天后,还有40.工程全长多少米 一个底面直径是10厘米的圆柱形水桶里装有水,把一个底面半径是2.5厘米的圆锥形铁块从水中拿出,圆锥形铁块数学的体积是多少? 拿出后水面下降了一厘米。 修筑一项工程,实际投资1200万元,比原计划节省了40%.节省了多少万元? 为什么吗,妈妈爱孩子 一个底面半径为10厘米的圆柱形水桶中装有水,把一个底面半径为5厘米的圆锥形铁块浸没在水中后,水面上升了2厘米,且水没有溢出.铁件高是多少厘米 圆柱形容器内半径为3厘米,内壁高30厘米,容器内盛有18厘米高的水,现将一个底面半径为2厘米,高15厘米的金属圆柱竖直放人容器内,容器内水将升高多少厘米?最好十分钟之内, 关于不同英语国家的问候方式有哪些啊?最好是论文形式, 圆柱形水桶的底面半径为2分米,装了半桶水,投入一块半径为12厘米高5分米的圆锥形铁块,浸没在水中后,水面升高多少分米 一个柱形容器的内半径为3厘米,内壁高30厘米,容器内盛有15厘米高的水,现将一个底面半径2厘米,高18厘米的金属圆柱竖直放入容器内,水升高几厘米? 小孩为什么爱哭 一个圆柱体底面半径扩大5倍,高不变,他的侧面积扩大()倍,体积扩大()倍 一个盛有水的圆柱形容器底面内半径为5厘米,深20厘米,水深15厘米.今将一个底面半径为2厘米,高为18厘米的一个盛有水的圆柱形容器底面内半径为5厘米,深20厘米,水深15厘米.今将一个底面半径 一个圆锥形容器的高是9厘米,底面半径是6厘米.求:如果把这个容器装满水后,再将水全部倒入一个等底的长一个圆锥形容器的高是9厘米,底面半径是6厘米。求:如果把这个容器装满水后,再 一个圆柱体的底面半径是2厘米,高是5厘米,它的侧面积是(),体积是()?加一个表面积 怎样做胡辣汤 一个圆锥形容器高是9厘米,装满水后将水全部倒入一个等底的长方体容器里,这时水面高多少厘米? 某技术方案年设计生产能力为10万台,年固定成本为1200万元,产品单台销售价格为900元,单台产品变动为560元,单台产品营业税金及附加为120元.试求:(1)盈亏平衡点的产销量;(2)用生产能力利用 从一个圆锥体的高的上端1/2处截取一个小圆锥,小圆锥体是原圆锥体体积的()底面半径为什么也是原来的一半呢?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘