您的位置:首页 > 编程语言 > Java开发

基于Google Trends的Java Web 开发框架选型比较(2013)

2014-01-16 09:49 477 查看
Java Web Developing Framework Comparison Based on Google Trends

(基于Google Trends的Java Web 开发框架选型比较 2013版)

在基于java的webapp开发中,什么java框架最实用最受欢迎,特别是在国外?

前一阶段需要设计开发一个物联网监控平台,要用java,所以做了如下调研,与大家分享。我希望用数字支持观点,所以让我们用google trends做一个尽可能客观的调研,基于搜索引擎的search数据而不是个人偏好。

采用搜索词语:wicket java, spring mvc java, struts 2 java, restful java

采用搜索词语:wicket web, spring mvc web, struts 2 web ( 这里不再加restful web关键词,因为这个词的搜索量太大,使得其他几个方案的对照不明显)

1 worldwide范围内

Search 1



Search 2



从这几张图的输出可以看到:

1)

两种比较方法得到的结果曲线近似相同:Spring MVC一花独秀,仍在稳定上升,wicket和struts 2份额都有所下降,但google forecast对未来趋势的预测是持平,且这二者比例差不多。

2)

采用搜索词语:wicket web, spring mvc web, struts 2 web

wicket web: 美国100% (该结果可能混杂了其他含义的结果)

spring mvc web: 印 100 中国 25 美国 14 德国 10 英国 10

struts 2 web:印100 美10

3)

采用搜索词语:wicket java, spring mvc java, struts 2 java
wicket java: India 100, Germany 68, Japan 59, United State 32

Spring mvc java: India 100, China 23, United state 14, United Kingdom 9, Germany 7

Restful java: India 100, United States 17, United Kingdom 10, Germany 8

Struts 2 java: India 100, Brazil 8, United states 7

以下为我的个人评述,也许会带点个人观点:

1) 中、美/德/英、印是有显著差异的三类开发群体, 美/德/英显然是世界IT业趋势的领导者,值得关注和跟随;印因为其历史悠久深渊的软件外包传统,所以历史的延续性较强,这体现在India在很多搜索指标上都排列前茅,如wicket java, spring mvc java, restful java, struts 2 java,但其趋势并不值得看重;中国程序员看似基数很大,但在世界影响力有限,主要是体现在Spring mvc java上(这与国内taobao/alibaba使用spring mvc并引领了一批企业采用之有关)。德国是一个开源传统比美国还要开放且严谨的国家,在开源趋势引领上自成一派(其实是代表了欧洲),也很值得关注,特别是wicket在德国应用广泛,被多家德国大银行所采用,考虑到wicket的技术优点,wicket的流行抵消了restful java在德国的部分搜索量(但这不是说restful java没有前途)。

2) spring mvc的稳定上升趋势毋庸置疑,企业采用之并结合restful开发应是未来较长时间内主流。

3) restful java作为框架参与比较不甚合理,但作者很希望了解其趋势,故也拉进来参与比较,不必对此过多批评。

3) Struts 2在全世界范围内除了印度一花独秀、美国有少量(<= 10)、发展中国家巴西有一些贡献之外,已经在世界范围内被排除出了新兴主流开发选择,不能代表未来的趋势。

对技术比较强的新兴公司,不建议选择struts 2作为其主流技术解决方案。

在国内 struts仍能保持比较大的用工市场,是因为过去用的人多,但在国外新人用得已经较少了,国内由于许多公司技术水平落后仍明显跟不上国外技术进步。
从纯技术的角度看,国内开发团队的眼界和思想还有待提高。

4) wicket作为一种component based developing framework,技术特色鲜明,但在与restful java的竞争中,应该说处于下风,但若与struts 2这类传统框架比起来,优势比较明显,在以德国为代表的发达国家使用较多,美国因为技术选择多,分解了搜索量,所以在这一搜索指标上仅有德国的一半,但应该说也是很Ok的。如果一家公司,传统java的开发实力比较强,可以考虑选择wicket。个人认为德国流行wicket的重要原因是德国有大量严谨的java程序员,他们更倾向于用严肃的语言写程序而不是沉溺在某些短期流行的新语言上。事实也证明,在Enterprise开发领域,基于java的严肃方案仍是主流和核心,而许多基于脚本语言的方案只能是外围补充。

2 In United States

美国作为IT业最发达的国家,其趋势很值得我们关注:





美国

1)

wicket java: California 100

spring mvc java: New Jersey 100, Illinois 97, Massachusetts 97, California 92, Virgina 87, New York 68, Texas 57

struts 2 java: New York 100, Califonia 98

restful java: New Jersey 100, Massachusetts 66, California 65, Virginia 59, Georgia 52, Illinois 50, New York 46, Texas 44

2)

Wicket web: 无足够历史数据

Spring mvc web: New Jersey 100, California 74, Illinois 74, New York 50, Texas 43

Struts 2 web: 无足够历史数据

分析

1)

在wicket框架的选择上,加州真是一花独秀,考虑到硅谷在加州,出现这样的结果不难理解。这除了加州创业公司对新东西很开放之外,个人认为一个很重要的原因是要求一个创业团队掌握多种技能是可遇而不可求的的,但很多人都会java这种强大、传统、严肃的语言,为了快速出东西和充分利用现有经验丰富的java程序员的历史积累和经验,选择wicket就顺利成章了。

2) 但wicket在其他州的接受有限,反映了传统企业对新生事物的接受速度还没有那么快,老技术的继承性对企业IT建设还是很关键的。(但我还是不主张我们具有较高素质的毕业生去为了近期的就业机会去学老东西)

3) springmvc在全美采用比较平均。struts 2在美国接受程度也有限。大量公司基本上都是用spring mvc代替原来的struts 1.0而不是升级为struts 2。顺便问大家个小问题,为什么New Jersey在许多排名中会胜过California? 想想有什么公司在New Jersey? ps: 真不知道java的Restful框架Jersey和New Jersey有什么联系。

4) struts 2在美国接受程度也有限。基本上可以肯定的说,新公司选用技术框架可以放弃它了。

3 In Germany

德国还是要看看的,因为它是欧洲的代表。看德国趋势也就是看欧洲趋势。总体上感觉欧洲出品不多,但多是精品,这与其程序员的高素质和其文化传统是分不开的。





德国

wicket java: Bayern 100, Hessen 68, Nordrhein-Westfalen 60

Spring mvc java, struts 2 java, restful java: not enough search volume to show the results

wicket web, spring mvc, struts 2 web: not enough search volume to show the results

结论:

看来在德国,wicket的流行不是简单说说的,它甚至压过了老牌的struts 2和spring mvc。

想去德国的同学(特别是如果进德国的银行业),看来有必要学习wicket。

4 United Kingdom





英国:

google trends未能给出更进一步区分。

但趋势上看,spring mvc和restful java在英国是主流,wicket和struts可忽略。

看来,英国不仅是在政治上追随美国,在技术上也follow美国。

以后可以不用再关注英国了 :)

5

Japan



另:搜索词wicket web, spring mvc web, struts 2 web 无足够数据显示曲线。

日本的wicket搜索量雄踞第一,完全压倒其它三种选择。

考虑到德、日这两个民族的严谨传统,选择wicket这种严谨的框架倒也匹配 :)

但google给出的搜索地都是Tokyo占100%,这就有点不合理了,可能是google的地理位置区分还是不够吧

6 India





wicket java: Maharashtra 100 (不知为什么印度这个地点的搜索量是主流?谁能解释?)

Spring mvc java: Karnataka 100, Andhra Pradesh 93, Tamil Nadu 68, Maharashtra 38, Dlhi 15

Struts 2:

Restful:

城市也比较多,就不多列了。大家可以自己用google trends

总体上看

Spring mvc已经是印度的主流,struts 2仍有较大市场,但趋势是降,但降低到一定水平后应维持稳定,毕竟还有大量历史客户。wicket在印度情况不乐观,可能印度接不到欧洲的外包单吧

7 China





最后一组来看看中国,但看来google的搜索数据明显不全。除了能看出spring mvc受到大家重视外,看不出更多有价值的信息。希望百度能开放其统计数据,做一家更为开放的企业.

8 补充

从未来趋势引领上,我们只需重点关注美国(北美)和欧洲(德国代表)即可,其它国家仅作参考即可。

可能我的关键词和比较不是很合适,还请大家给予补充和指正。

对市场上流行的其它框架,我们在设计开发物联网监控平台的时候并未选择,也是有一些考虑,这些考虑是否合适,也请大家评判:

放弃Struts 1.x:因为已被Struts 2代替

放弃Struts 2:个人认为已被Spring MVC从技术上代替,SSH的第一个S也许今天应更多的理解为Spring MVC而不是Struts 2,尽管市场上的人员还是大量以Struts 2居多。但应看到,这种所谓的“主流”主要集中于低端程序员,高端程序员选择struts 2的意愿已大大降低。特别是Spring MVC和Restful开发方式结合,在实际中更有生命力和前途。

放弃Grails:有了wicket和restful,就不会再选择Grails。东西再好,但是也还是在服务端执行大量逻辑,我们希望采用Browser Application + Web Server Application的分解方式,将UI呈现、部分逻辑的处理迁移到Browser端而不是继续在服务端运行。

放弃RoR:从来不觉得一个严肃系统选择RoR是个好选择,特别是我们有大量没有UI交互的服务。

放弃PHP:同放弃Grails的理由。最多拿来处理处理界面吧

放弃Python:其实不是真放弃,只是没找出来什么地方适合Python。可能以后后台的无UI交互的个别服务和数据分析会用Python吧,前台UI交互是不会用Python的,browser application + restful方案仍是首选

放弃JSF: 与其它框架和技术的集成不好,且被大家认为使用复杂(没有亲用)。wicket虽然也是component based,但至少还有wicket-bootstrap和wicket-atmosphere,总之,在与wicket的比较中,jsf应该是被放弃的。

放弃Play: 因为我们需要典型的分布式系统,play更适合单机系统开发。如硬要改造成适合分布式系统开发,反而会失去play的快速开发特色。

放弃.NET方案:实在是因为MS$的方案到后期花钱太多。想想MS$的主营业务就是这个,让他降低价格可不容易。

Restful值得重视,但对于我们这种除了基本资料维护,还需要承载数据流传输和处理的应用场合,传统的老式的java开发模式依然不可缺少,restful有其适用的领地但非所有场合,也不是一上rest就可以轻松搞定所有问题的。

但restful的出现,有助于将原来在服务端执行的一些UI逻辑前移到Browser端成为Browser Application是有重大意义的,准确的说,Browser Application 和 Web Server Application的相互剥离和松耦合是要点,是最大的价值点,而restful / jsonrpc / xmlrpc / ajax call 都是具体的实现方式(但ajax显然做的不彻底)。

wicket走了相反的技术思路,它又可以让我们不必顾及Browser Application和Web App之间的通信直接以一套一致的java开发模式应对,看似技术的倒退但避免了程序员考虑Browser Application和Web Application之间的通信问题(wicket代劳),且很多情况下可以通过组件复用有效降低工作量,因此在企业开发领域仍会有一定发展,如果掌握的好,开发速度也会很快。考虑到wicket的技术特色,它在未来的java web开发中应该会继续保有一份领地(但目前来看不会是Java Web开发Top 1的选择,将来也不会,但进入Top 3是有可能的,进入Top 5几乎是肯定的),特别是在开发团队有着娴熟深厚的java开发技能而web方面积累不够的情况下很值得考虑。

至此,我们的开发技术选择和技术路线应该是明了了 :)

方案1:Spring MVC Restful,并用基于Backbone的Browser Application来做呈现

方案2:Apache Wicket + WickeJersey Restful,并采用Wicket Bootstrap控制风格,Wicket JQuery Ui 增强控件交互(非必需)

作者 OpenWSN

2013.08.04

版权所有,欢迎转载,请注明出处 http://my.oschina.net/openwsn/blog/150428
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐