首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

Douyu vs Play

2012-11-20 
Douyu vs Play!Douyu vs Play!1.比较的版本:Douyu : 0.1,暂时没有对外开放源代码,仅用于学习、交流目的。Pla

Douyu vs Play!
Douyu vs Play!


1.比较的版本:

Douyu : 0.1,暂时没有对外开放源代码,仅用于学习、交流目的。
Play  : 1.0,稳定版、已对外开放源代码,能用于生产环境。


2.项目参与人数:

Douyu : 1个。
Play  : 至少大于1个。


3.项目开发时间:

Douyu :
2008年12月25号到2009年3月是萌芽期:先是有做个MVC框架的念头,浪费3个月时间折腾Servlet/JSP。
从2009年4月开始推翻Servlet/JSP从头来过,到2009年11月16号发布0.1版的Douyu,
算下来真正用于开发Douyu的时间不超过7个月。

Play  :
在http://groups.google.com/group/play-framework中有讨论记录的时间最早是2007年5月13日
在http://download.playframework.org/releases/中发布的第一个play-1.0-stable1.zip是2008年2月2号,
如果play也有0.1版的话,保守估计下来到今天至少也开发了2年半时间


4.源代码、大小、及第三方jar:

Douyu : 目前不依赖任何第三方jar,
Douyu的源代码的总行数是11万行左右(这里必须包括javac编译器,因为我修改了javac编译器),
共有400多个java源文件,其中javac编译器占了260,douyu自身占了140左右,
发布包解压后1.4M。

Play  :目前默认提供的第三方jar超过50个,
在Play\framework\src目录中给出的源代码总行数是25000行左右,共有180多个java源文件,
发布包解压后84M左右。


5.社区:

Douyu : 没有官方网站,没有讨论组
Play  : 有官方网站,也有讨论组



接下来详细比较Douyu与Play!的实现细节:


6.控制器层:有必要RESTFul吗?有必要多加个routes配置文件吗?

我的问答是没有必要。

比如最简单的Hello(这个例子不是用来比较代码量大小的,只是用来讲解实现原理)
Douyu版:


public class SimpleTest  {public void run() {int result1 = compare(1,0);assertEquals(result1, 1);int result2 = compare(1,1);assertEquals(result2, 0);int result3 = compare(1,2);assertEquals(result3, -1);}}

当然,自动化测试的复杂性远比上面的这个例子要难上无数倍,
虽然有难度,但是这个领域也是值得研究的。

我认为现在的测试工具,像Junit、testNG这些都只是小工具,称不上什么自动化测试,
你只不过是用这些工具把你的代码中的实现流程重新写一次罢了。

Play也是用这些工具来实现测试的,也没有什么大的突破,只是简单封装了一下Junit。

Douyu如果要整合Junit、testNG这些小工具也是相当容易的,
但是这种整合还是离我的要求相差太远了。


solonote 写道
7.关于第三方类库依赖以及大小
Douyu依赖的开源库很少,Play依赖了很多开源库,比如Hibernate等等.Douyu很小,Play下载下来需要90mb(其中还包含了python的解释器).
但我认为,作为一个非桌面应用程序来说大小和第三方类库的依赖完全不是评价一个framework的关键.

定位不同,Douyu的目标是基础平台,你甚至可以在Douyu中直接使用Hibernate、Ibatis。

solonote 写道
8.J2ee体系的支持
Play的应用程序发布以后会打包成一个war包,值得一提的是这个war包还是可以轻松的修改代码的.而且基本的程序结构也没发生什么变化.Play的war包可以运行在标准的J2ee容器中.
Douyu不支持原来的J2ee体系,只能运行在自己的服务器中.我不谈Douyu服务器和其他J2ee服务器的优劣.但是有一点
当前没有Douyu的Hosting提供商,你想用Douyu必须自己有一个服务器.而开发一个Play网站,仅仅租用一个tomcat空间就可以发布.
这会让Douyu陷入无人使用的境地,如果陷入这种境地,那么它就全无价值了.


Douyu生成的类都是些很普通的Java类,打包后仅仅是个jar文件,
我现在发现只要写个拦截器在web.xml文件中配置一下就能运行这个打包后的jar,

Douyu也不一定就得支持J2ee体系,真要是强大了,颠覆J2ee体系也不是不可能。
Play没法脱离J2ee体系是因为Play用到了JPA。

solonote 写道
9.其他的一些支持
Play对GAE也有支持,它还有很多的功能,比如Play的在运行出错时的报告非常的直观,你可以自己去了解和实践.

这些都是小功能,只是需要时间完善,Douyu目前在细节方面做得不好。



最后总结



Douyu与Play的设计目标是完全不同的,
我把Play看成是一种胶水框架,是因为Play是横向扩展的,需要什么就引进第三方库来实现,
而Douyu是紧紧围绕编译器作文章的,是纵向扩展,尽量挖掘编译器未被发现的潜力。

Douyu也非常容易形成一套规范,
Douyu向普通开发人员开放的都是些接口API或者是一些简单的工具类,
接口与实现分开,就像Servlet一样,一套接口API本身就可以看成是一套规范,
围绕编译器实现一套规范是一种另类的尝试,我在开发Douyu的过程中越来越觉得有趣。
1 楼 guolimin19821118 2009-12-03   还是蛮支持作者的
不管现在做到什么程度
只要有树的种子 总会有一天长成大树的 2 楼 超级潜水员 2009-12-03   希望Douyu好好发展,以后一定好好学习下. 太强大了. 3 楼 Laynepeng 2009-12-03   呃,LZ很有干劲,非常不错~

我不评论到底哪种方式好,没有最好的实现只有最适合的。:)

收藏这一页,等待强人出现来辩论。。。

热点排行