年前写了几篇有关国内开源的文章,看到网友们的回复,感到非常悲哀,给我的感受是:大家都瞧不起国内的开源。
我看blogjava上,只要是介绍国外开源技术如struts2、ext、spring的,不管文章质量如何,大家都叫好;而只要发现写介绍国内开源如jdon、springside、Operamasks、easyjweb的文章,不管质量如何,都会被大家讽刺为“托”,或者是都被骂等。这是一个非常怪的现象,像blogjava这样提倡完全言论自由的社区都这样,大家可以想象对于javaeye那样由一小部份人主宰的“民•主”社区会怎样?从这里现象可以看出,在很多人骨子里就印着:“中国人不可能做出像样的开源,做出的开源都是垃圾”类似的标签。
其实在我写的“第三只眼”系列文章中,都是在对这些框架进行较为细致的研究才得出的结论,而且所写的也完全是事实,至少到现在还没有哪一个当事人可以说我乱写了他们的东西吧。
很多人都说我只是盲目地夸国内的开源同仁们,没看到他们的不足,不客观,但是大家是否又看过我文中指出的这些开源项目中不足方面的内容呢?比如下面一些摘要:
“SpringSide的不足其实是很明显的,首先在软件界,没有真正的最佳实践,各种技术都是可选的,一个看似笨拙的东西,只要跟上一个搭档,本来是缺点也会得到弥补,比如EJB之于Spring,对于一个企业来说,现前最佳的肯定就是大家最熟悉而且又能解决问题的东西。“
“可以说JFox只是实现了JPA1.0中的一小部分。JPA最核心的是什么?对象及关系映射,而难度最大的环节面向对象的查询(EJBQL)以及各种对象关系及表关联的处理,比如OneToMany、ManyToMany。由于JFox是基于iBatis这样一个sql mapping的框架实现的JPA容器,所以说功能上受到了一定限制。”
“技术的进步是永无止尽的。Jdon框架的设计仍然还存在着很多的问题。比如,要求用户领域模型继承Jdon的Model类或实现ModelIF接口,添删改查的业务实现类中要包含类似createXxx(EventModel em)这样的方法,导致整个框架对业务层的东西侵入性太严重,不符合实际应用。另外,过多与Struts1.x紧密绑定的设计也不可取。”
“虽然已经形成了江南、CAC、差沙等组成的核心团队,但代码及文档产出上却基本上仍然是一个人;代码是开源项目的生命所在,而这样的项目要做好,要做成中国的AppFuse决定了这是一个人不可能完成的任务,因此离成功就会很远。”
“如果是开发Web应用,如果要用到EJB,而又不能支持分布式,我们又为何还选择EJB?Spring、Jdon、Guice甚至EasyJWeb 这些框架里面都有包含了IOC容器。而且更加POJO,为何还要选择用EJB及JFox呢?因此,这一方面我不知道这样的设计及限制是对JNDI的创新,还是因为JFox设计的局限性所导致。”
“虽然Struts1.x的市场仍然还是很大,但我们应该清醒地看到,今天已经有很多正在逐渐取代Struts1.x的Web框架出现,比如 webwork(或struts2)、easyjweb、operamasks(jsf)、grails等。Jdon作为一个应用框架,要能获得更多的应用支持,必须支持与这些框架进行集成,提供更多的支持,让开发者有更多的选择权。”
“SpringSide不善于合作,比如国内已经有很多优秀的开源项目或框架出现,比如operamasks、JFox、JDon、easyjweb 等,通过最近的深入研究,我发现他们都很不错。但在springside项目及文档里,没有一点与这些开源项目相关的!”
我觉得,中国的开源要做好,不但需要很多像我文章中介绍的这些开源斗士们的坚持不懈,更需要更多的人来使用这些开源,尝试这些开源,把使用心得在开源社区中进行学习、交流,更需要能客观地指出这些开源项目技术上的不足、问题方面的文章,而不是一棒子打死。
最后奉劝一些朋友们:搞技术,需要一颗平淡的心,当今社会已经是很浮燥了,如果再盲目,那么就更危险了。