年前寫了幾篇有關國內開源的文章,看到網友們的回復,感到非常悲哀,給我的感受是:大家都瞧不起國內的開源。
我看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項目及文檔里,沒有一點與這些開源項目相關的!”
我覺得,中國的開源要做好,不但需要很多像我文章中介紹的這些開源斗士們的堅持不懈,更需要更多的人來使用這些開源,嘗試這些開源,把使用心得在開源社區中進行學習、交流,更需要能客觀地指出這些開源項目技術上的不足、問題方面的文章,而不是一棒子打死。
最后奉勸一些朋友們:搞技術,需要一顆平淡的心,當今社會已經是很浮燥了,如果再盲目,那么就更危險了。