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

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

【快讯】SAP联合中国电信,又一外商公有云曲线入华 微软CloudOS云操作系统构建企业级三云合一 IE11支持JavaScript新型API,Web应用国际化更便捷 谷歌推订阅应用Play Newsstand:杂志+RSS阅读器 【信息图】到2020年开发者、设计师、测试员的数量将达到史无前例的高度 推广与盈利专题论坛:中国影响世界,世界定义中国 SlideIdea CEO李建忠:移动产品的技术面思考 BDTC→→百度林仕鼎、腾讯蒋杰、阿里唐洪论道大数据平台与技术 谷歌首席互联网布道师:隐私保护并不是一种正常行为 微软公开“挑衅”谷歌,出售反谷歌标语T恤 四大UX设计原则,打造网站最佳浏览体验 【BDTC讲师】黄晓庆:从小灵通到Hadoop与实时大数据分析 【BDTC讲师】杨强:从禽流感预测到图片语义解释 2013中国大数据技术大会讲师议题正式发布 “2013中国大数据周”即将开幕 正式发布中国大数据现状白皮书 搜狐畅游发布3D游戏引擎Genesis-3D 基于MIT协议开源 传闻微软将收购AOL旗下的Winamp和Shoutcast 【BDTC讲师】大数据时代“掘金机”:百度、360、一淘搜索技术分享 谷歌董事长:审查,将会在十年内消失 50万奖金+天使投资:创维天赐家庭互联网创新大赛开幕 专利案苹果获胜:获赔2.9亿美元 三星不服将继续上诉 Google正打造Spark:一个基于Chrome App的集成开发环境 研发周报:成为一名PHP专家其实并不难 将Vistual Studio打造成为Node.js IDE 度量Web性能的关键指标 路由器未火够!高通发布互联网处理器 Unite2014大会:移动开发者的饕餮盛宴 玩与学并存 Kano kit让你自制Raspberry Pi电脑 【BDTC讲师】Hortonworks Gunther&amp;amp;Ted:HBase、Stinger的发展与实践 人人网推出开放平台2.0 多项重大改进吸引开发者回流 红帽高管:将Linux价值理念和做法延伸到OpenStack 在CEDIT的CHANGE事件中怎么不可以用CEDIT::REPLACESEL()?? 打印高手请进 谢了 简单的键盘消息! 如何在表里添加列? dll调用的问题 请知道NotesSMEI的高手帮忙 奇怪错误 如何用ATL创建一个全局COM(只启动一个实例)供所有客户端使用? 如何修改一个域的值?用@SETfield吗? 怪! 怪! 怪! 为何存储不上数据???(急) 我真惊了,小弟刚用VB6,请问,VB6怎么会有乱吗问题?怎么解决!各位大侠请帮忙!! 急救!!用pb写登陆界面出现的大问题! 欢迎大家来! 急!如何在一个form窗体里面来移动线条,就象类似于画基本的电路图那样,谢谢高手的指教!!! 哪儿有<<新编计算机绘图>>下载啊? 给高分 急!如何在一个form窗体里面来移动线条,就象类似于画基本的电路图那样,谢谢高手的指教!!! 可以用网页文件重新启动机器吗? 高手请看看!!!如何用ATL创建一个全局COM(只启动一个实例)供所有客户端使用? 哪里能下载到vs.net正式版?(100分) pascal 谁知道有没有创建Service的好工具? 谁来介绍一下CORBA ? 请教ODBC SQL中 CONVERT的用法? 笔记本电脑开不了机!!!! 关于ClientDataSet SQL动态参数的问题? 关于在PB的script中直接嵌入SQL 单机使用什么数据库最好! 怎么远程启动一个程序? 一个XSLT的小问题 C++Builder高手回答!!(关于在NOVELL上的应用) 急!请问哪位高手知道怎么用VB来开发组态软件。请多提提建议! 大家好!~新人来了!~ 如何实现MicroHelp即状态栏的分段 麻烦各位介绍几个有SCJP模拟题的网址!谢谢!!!! 关于Read&Data! 现在只能显示最新的120篇,能不能家多点呀,例如最新1000篇? VS.net哪里有正式版的下载呀?大侠们有没有地址呀? 谁能告诉我哪儿有TR下载,不是TRW,谢谢!50分相送~ 求助!!急!急!…… console下可以用ado访问sql server数据库马? 诸位仁兄,帮小弟推荐一本学J2EE的书。 DataModule4.ClientDataSet1.Locate的问题求救! NetLocalGroupEnum 如何使用列举远程用户 谁有有关游戏开发方面的软件工程文章? 各位大虾有无利用VC打开JPEG(JPG)图像并显示的源代码? 有关单文档多视图的一个小问题,答出有100分可拿!!! 如何优化编译,让编译后的文件最小? 请问软件是vfp3.0写的但是现在只有6.0,能转换么?是否需要重新编译?怎么编译,谢谢 vs.net 在PHP中如何把E_MAIL同时发给两个人? 有关注册表和其他一些问题 接近开关应用问题用12伏接近开关控制12伏电动机,电机电流1.5安左右,电源12伏20瓦,这样前提下接近开关,电机,电源都可以正常工作吗?如果电源瓦数高会烧坏开关或是电机吗? 酶和无机催化剂的原理一样么?酶可以使被催化的物质的能量提高? 在一个图上面要画出4个力,从物体重心向下的一个重力,还有支持力、摩擦力、拉力.我不太记得是不是4个力了, 高中化学有机反应的条件对苯二酚为什么不能发生加聚反应和水解反应? 酶与无机催化剂相比具有高效性,那这样说酶是有机催化剂吗?什么又是无机催化剂? 细菌和真菌引发的人类疾病有哪些?要20个 高中化学有机推断典型反应条件总结 24V两线接近开关跟PLC怎么接线 如何利用细菌或真菌防治疾病 关于高中化学的反应条件就是对于点燃 加热 高温 我们老师说到高考时候这些条件只要不是实验题特别要求,写哪个都可以算对?真的吗 我怎么那么不信- - 保持空气干净英文 细菌真菌与疾病防治写大概300字 高中化学各类反应的条件是什么啊? 空气干净吗?如果干净说出为什么如果不干净也要说为什么 在一只锥形塑料瓶中灌满红颜色的水,再将瓶口用插有细玻璃管的橡皮塞塞紧.然后用双手挤压瓶身,能观察到什么现象,这个现象说明了什么,就像这种瓶子,上面再查个吸管 接近开关的工作电压与负载电压要一致吗?我的负载是220V的,怎样选接近开关,急等负载是220V的电吹风,接近开关已买好了,是5V的,好用不? 江苏镇江空气干净吗 建筑工地上一台起重机一 1m/s 的速度匀速提起质量5吨的物体时,绳子对物体的拉力是多少?如果这台起重机以2m/s的速度匀速提起这个物体,则绳子对物体的拉力是多少?顺便问下,对物体的拉力和 接近开关型号一般有哪些组成 1,古寺有一座变音钟,随着钟下燃烧的香火越旺,敲出的声音越高亢,分析其原因可能是A 香火使钟的温度升高,他振动的幅度变大,使响度变大B 香火使钟的温度升高,它振动的频率变大,音调变高2, 1,底面积是0.1平方米,重300N的铝块,放在面积是3×10的负二次方平方米的水平凳面上,铝块受到的压强是多少?说明理由~2,一块砖块能承受的压强是5×10的六次方Pa,当砖块放在水平地面上时,它与地 接近开关型号说明E2E-X20MD1S-M1.E2E-CR8C1.E2E-X1R5E2 各个字母和数字分别是什么意思啊? 接近开关连线我想用接近开关(三线或两线)控制交流继电器,怎么把其接入电路啊,我积分不多了,麻烦高手不吝赐教呀,能不能具体给各图示呀 汽车尾气所含成分有哪些! 在有强磁场中,做定位信号用什么型号的接近开关, 在通风不畅的室内使用煤炉时,易发生煤气中毒用化学方程式表示. 汽车尾气全部成分 接近开关分哪些种类,都有什么用途? 冬季可用煤炉取暖,分析下列做法或现象中的原理.①生煤炉时,需先引燃木材.-----------------②开始时煤燃烧较弱,过一会变得剧烈.------------------③煤层上方有时会出现蓝色火焰.--------------④用 一个物体以每秒一米的速度在水平桌面上做匀速直线运动,受到的摩擦力是40牛,若物体速度增大到每秒三米是,仍在该水平桌面上做匀速直线运动,此时,它受到的摩擦力是( )A.大于40N B.小于40N C. 将0.1mol/L醋酸加水稀释,下列说法正确的是( )A.溶液中c(OH-)和c(H+)都减小 B.溶液中c(OH-)增大C.醋酸电离平衡向左移动 D.溶液的pH增大我不是很明白c(H+)降低了.为什么c(OH-)必然就增大了呢?. 洁净屏 空气洁净屏空气洁净屏的价格贵吗?有空气洁净屏的现货吗? 为什么植物病原菌以真菌居多,动物病原菌以细菌居多? 请问一接近开关(感应开关)的接法一接近开关,型号GRAVITY SN04-N,有三跟线,黑色,蓝色,棕色,开关上标有代码,BN-10~30V,BU-0V,BK-NPN.NO,表示额定电压我知道,请问这三个表示都对应哪种颜色的线 碳和水反应的催化剂是什么?在常温至100度下有活性,加热到270度再回到常温依然有活性的.最好是无机物. 为什么动物病原菌以细菌居多,而植物病原菌以真菌居多?就死以上? 免烧砖机接近开关是什么意思 接近开关与设备怎么接线 近接开关,接近开关,限位开关有什么区别? 接近开关有AB.前卫的有AB级! 两线接近开关怎样接线 高中化学全部知识点归纳(含选修) 接近开关码是什么 氧化铝是碱性氧化物这句话对吗 汽车尾气的成分,只要成分! 谁能帮我总结一下初二物理下册的概念最好有个耐心的。教学还比较不错的物理老师的qq号,求你们啦 感染细菌,植物,真菌,动物,人的病毒分别称为什么 高中化学能否根据方程式去穿知识点 怎么理解电压 电压是什么? 以下病症是由什么类型的细菌真菌病毒引起的?爱滋病 百日咳 腮腺炎 脊髓灰质炎 非典 肺结核 扁桃体炎 流感 口蹄疫 肝炎 麻疹 痢疾 癌症 水痘 流脑 肺炎 皮肤癣 狂犬病 高中化学有机的知识点和表达式 电势差定义是什么? 真菌和细菌哪种会使人生病?就是真菌可怕还是细菌可怕? 高中化学知识点总结高三专用的 接近开关电气符号上带个Fe是什么意思?如图, 引发人生病的细菌或真菌与人类的关系主要是1 寄生2 共生3 腐生4 捕食 请问哪位好汉可以帮个忙!有没高中阶段化学的知识点`想提纲那样子的!有的话请帮帮!最好是详细的`````从高一开始归纳的那中~越详细偶越感动! 接近开关用在哪里,怎么用?谢谢 下列属于纯净物得是:A清新的空气B冰红茶C清洁的海水D冰醋酸希望说名原因 原因详细一些 托起物体所用的力是不是跟这个物体所承受的地心引力的重力一样?比如说托起两个鸡蛋要用1N的力,那么这两个鸡蛋的物重是不是也是1N?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘