访MOCO创始人郑晔:谈MOCO框架技术和Java未来发展

原创
开发 架构
51CTO记者采访到了Moco框架创始人郑晔。关于Moco,和记者分享了更多的其诞生过程的设计理念、成长过程的思考、未来发展的期望。还对未来几年Java技术的发展情况和Java编程风格的现状和未来趋势阐述了自己的观点和期盼,让我们对未来几年如何提升和把握企业Java项目开发有了新的认识。

MOCO是一款基于Java开发、用来简单搭建模拟服务器的程序库。MOCO的目的,旨在解决企业级系统集成测试等方面的问题。简化传统Jetty或Tomcat等应用服务器上部署一个新的JAR所需要的耗时工序,同时,MOCO的API设计采用了内部 Domain Specific Language (DSL)的 方式,提升了代码的可读性。与此同时,还将新的Java编程风格融入其中、并不断加入新的功能来满足更多企业项目需求。

为此,51CTO记者采访到了Moco框架创始人郑晔。关于Moco,和记者分享了更多的其诞生过程的设计理念、成长过程的思考、未来发展的期望。还对未来几年Java技术的发展情况和Java编程风格的现状和未来趋势阐述了自己的观点和期盼,让我们对未来几年如何提升和把握企业Java项目开发有了新的认识。

[[83127]]

郑晔,ThoughtWorks公司首席咨询师,MOCO框架创始人。JavaOne 2013大会上,首届中国“Duke选择奖”得主之一。对Java和Ruby等方面的开发有着深刻的理解,致力于探寻合理的软件开发方式。07年加入ThoughtWorks公司后,投入到敏捷开发方法的实践之中,为其他公司提供敏捷开发方法方面的咨询服务。可以说MOCO的诞生,就是在ThoughtWorks创新传统下催生的。

以下是采访的具体内容:

记者:MOCO项目获得了今年Duke’s Choice Awards最具创新项目奖,能不能具体的说说MOCO框架在企业系统的集成测试方面有哪些针对性的优势?

嘉宾:可以说所有的团队在项目上都会遇到企业集成问题,但是却一直没有做出非常好的解决方案。我们知道,在测试的时候,我们需要一个模拟服务器。十几年前去做开发的时候没有现成的服务器,我们就从Socket最底层开始一层一层写到应用层,完成一个HTTP级的应用服务器。有过开发Java经验都知道,一次应用的重新部署,看似简单,但重复多次会影响整个团队项目的开发速度。所以就一直在想,能不能找到更好的解决方案,让开发人员在项目中省去这样的重复环节、让这个过程变得更轻松。这也是我直到现在都在追求的目标。

开始着手去做MOCO之前的一段时间,我翻译了Martin Fowler的《特定语言》这本书,从书里获得了很多新的知识和想法。凭借十几年项目开发的经验总结,我决定开始自己动手解决这个问题。然后就有了MOCO这样一个解决方案,可以成功的解决企业集成问题。

记者:您刚才提到,在实际开发中很多团队都会遇到企业集成的问题,但却一直没有好的解决方案提出来。您认为导致这个现象的原因是什么?

嘉宾:目前来说,其实很多的项目开发团队都在尝试去解决这些问题,甚至有些公司还在自己的的开发团队里专门设立一个项目组去维护这样一个类似项目。但他们所做出来的框架仅仅用来解决自身项目,并没有想过把这样的框架泛化出来,作为一个通用的解决方案,应用到不同的项目中去。 所以,解决方案就停留在解决某个特定项目的层面上。

现在做技术,不应该仅仅是为了某个人或某个项目去做,而是应将技术成果分享出来,不断去完善和发散,使它成为一个通用技术方案,方便更多开发者使用。最近一段时间,公司一直在谈“创新漏斗”这样一个概念。“创新漏斗”倡导的就是在工作中发现问题,持续改进从而解决问题。然后,从中抽象出具有普适性的概念,再去积极地推广它。发现痛点、解决问题、泛化桥接、推广宣传。这也是MOCO的诞生之道。

记者:除了上述原因,从技术方面讲,它的实现有没有很高的技术要求在里面?抽象出来问题,但是在技术实现的层面会有一些难度?

嘉宾:有这种可能。其实整个软件开发过程中最难的事并不是代码的编写,而是能提供出一个问题的抽象模型。

在做MOCO解决方案的过程中,遇到的一些技术难点并新鲜。从十几年前做第一个项目开始就已经遇到过的,但一直都没有很好的解决办法。原因是无法将这些问题的概念抽象出来。经过了这些年的项目经验积累,脑子里才开始有了对这些问题的抽象概念。所以,直到去年才开发出来MOCO这样一个解决方案。

记者:有了新的功能以后,会不会把新的功能集成在MOCO框架里面,让它成为一个通用的功能?

嘉宾:会的。 MOCO去年已经基本完成了,但实际上直到现在MOCO框架的内容还在不断的修改和扩充。使用过MOCO框架开发团队,很及时的将他们在使用过程中遇到的问题和需求反馈给我,如果提出的需求符合MOCO框架的设计理念,就及时的将新的功能加到框架里,。只有这样MOCO才会不断地成长,这也是通用解决方案必须做到的一点。

记者:MOCO的发展是随着实际企业项目的需求而不断前进的,那么除了企业级的系统集成测试之外,它还具备了哪些较好的应用场景吗?

嘉宾: MOCO的设计目的旨在解决企业级项目系统集成问题。但实际上,MOCO的第一个应用,用在了移动开发项目里面。当时我们给成都的一家图书馆做一个项目,项目包括手机端和服务器端两个应用。一开始大家都想去做手机端的项目,而想去做服务器端的人寥寥无几。当时就在想,如果只有一个手机项目,我们怎么让他运转起来?后来的办法是,我们用MOCO搭了服务器,提供各种服务给手机应用。问题就这样解决了。也就在没有服务器端应用的情况下,把手机端实现了。后来服务器端的开发人员就参考MOCO的这套配置,比较轻松的将服务器端做了出来。

在技术交流过程中,很多人给我提出建议,希望MOCO可以支持这样或是那样的API。所以慢慢的MOCO应用的场景将会越来越对,功能会更加的丰富,具体还会有哪些方面的应用大家拭目以待。但MOCO的核心目标不会改变,现在的实际应用中,大多数团队还是将MOCO用来解决企业系统的集成测试的问题。

记者:做为一款轻量级解决方案,MOCO拥有很高的工作效率。对于他人提出的功能需求,您怎样判断这些需求是否符合框架的主线发展?

嘉宾:首先MOCO的架构方式确保了这个服务器不会加入特别复杂的东西,因此,不会影响服务器的工作效率。其次,在新的功能加入之前,还要衡量这个需求多大程度上能够在MOCO框架范围之内去解决。总结成一句话。如果能几句话概括清楚这个需求怎么在MOCO中实现,那么它就是符合MOCO本身特性的。这样的话,我就会把它加进来。

#p#

记者:现在国内的开发人员参与MOCO项目维持在什么程度?又是以什么方式进行参与?

嘉宾:开源项目本身是没有国界的。在使用中,我们不会去特别强调这个是中国人做的,还是外国人做的。目前,绝大部分的代码还是我一个人在写。有些人会提供一些新的功能建议,然后给MOCO做一些调整和修改,再给我看。大部分人是直接把问题提出来,我和他们就一起来讨论这个问题,有了结果后,功能的实现还是我一个人来完成。。

记者:现在国内的大众点评网在使用MOCO,对他们目前的使用情况有所了解么?还有哪些开发团队在使用MOCO框架?

嘉宾:首先我们公司内部的很多项目都已经开始使用MOCO了。除此之外,我在OpenParty上做过技术分享后,有更多的公司知道MOCO,然后邀请我去给他们公司更加深入的讲解MOCO,之后就在他们自己的项目中用MOCO解决问题。大众点评网开始使用MOCO的,我也是最近才知道。在上海的活动上,和他们项目的负责人简单的做了了解,他们。他们也说了,有了技术上的问题或需求会及时的沟通反馈。这也正是我所需要的。

记者:对MOCO框架未来的发展方向,您有怎样的计划?

嘉宾:最初的想法没有变,MOCO还是在实际应用中不断的进步。只要有好的建议提出来,MOCO就会一直改进。比如MOCO现在是简单地模拟服务器端,未来,也许MOCO会有客户端的模拟功能。总之,用的人多了、意见就多了,集思广益,MOCO就会集成更多的特性,变成一个更强大的模拟服务器。这是我对MOCO未来发展的一个预期。

记者: MOCO这个框架,最开始的发行版是3000行代码,相当轻量级的一个框架。根据您十几年的开发经验,把代码由多写到少,其中的关键点是什么?

嘉宾: 最近这段时间,虽然在进行MOCO的更新,但是还在做一件更重要的事:总结关于Java开发的一些新知识。这里我想说说函数式编程,这种编程风格已经被我用在了MOCO的代码编写中,个人认为这种编程方式将会是未来编程发展的一个重点趋势,会让Java程序员对Java世界编程有一个重新的认识。实际上在Java 8里面已经有了”Lambda"的引用,”Lambda"就是函数式编程里面最最基础的东西。这种编程风格可以大幅度提升Java代码之间的灵活度,减少对特定API的依赖,让用户来决定怎样使用这个API,缩减代码的编写量。 我现在也在对外推广这种编程方式。

记者: MOCO框架是基于Java编写的,在刚刚JavaOne的技术大会上,发布Java EE未来发展的路线图,您是怎么看待Java未来发展的?

嘉宾:Java语言一直是编程语言中的佼佼者。每个月的编程语言排行榜上,Java基本是排在前三的。所以未来很长的一段时间里Java必然还会是软件开发语言的核心力量。对于已经采用Java平台的客户来说,很难在短时间内做出抛弃Java的决定,因为Java不仅仅是一种语言,还是一个平台,我们能看到越来越多的设计语言利用Java平台,发挥各自的威力。同时为Java编程带来新的设计理念。

Java作为一个平台,所需要的的不是被推翻,而是不断地更新。不可否认的是Java确实存在自己的弊端,比如Java语言的更新和其他新型语言比起来显得缓慢。但是我们能看到Java世界里的逐步变化。函数式编程风格的推广、Java8的发布,都会对Java世界产生巨大影响。

记者:基于Java平台开发的方式会相对固定,这个现象您怎么看?

嘉宾:Java语言的最大优势在于,编程容易上手、开发项目比较简单。但也因为这样,大多数人写Java的风格按照教科书上讲的一板一眼,一直保持这钟传统的编程风格。但这种传统编码风格不适合现代项目开发。从零二年到现在,软件开发的巨大变化,让我们对敏捷开发变得不再陌生,让我们了解了越来越新的编程理念。

Java所需要的新风格,得靠拥有其他开发经验的人带进来。GO、Scala等新型语言的出现,会让我们看到Java世界里的东西在慢慢的改变,更多的开发思想、编程风格会涌入Java。那个时候,Java程序员的设计模式会有新的标配,对编程方式会有一个新的认识。

 

 

责任编辑:陈四芳 来源: 51CTO
相关推荐

2014-07-26 22:18:51

2015-05-22 08:59:04

Java十年Java路Moco创始人郑晔

2015-05-18 14:39:23

MySQL开源OpenStack

2016-06-16 17:13:59

Hadoop

2013-08-15 13:29:52

Moco程序库设计

2009-07-02 08:59:56

ubuntuLinux开源

2009-05-20 13:40:22

GoogleTwitter即时搜索

2009-02-06 17:23:13

NetApp闪存固态盘

2019-01-02 09:10:13

RustGraydon Hoa社区

2009-09-09 17:45:25

Ruby的blocks

2016-06-21 11:16:49

小牛学堂大数据

2009-10-28 08:46:31

WIndows 7Ubuntu对比

2011-09-28 09:32:14

Linux

2011-04-29 14:30:05

2010-10-11 10:21:49

Flipboard移动开发

2012-04-10 09:58:11

UbuntuLinux乌班图

2014-10-23 09:03:40

创业合伙人

2011-09-22 15:24:34

Python

2014-10-24 10:17:56

程序员

2011-12-22 10:18:28

Marc Andree软件发展
点赞
收藏

51CTO技术栈公众号