Wabacus是一個JavaEE快速開發(fā)框架,采用面向聲明的開發(fā)模式,可以不用編程或極少編程即可實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)展示、數(shù)據(jù)編輯、表單處理等功能,將JavaEE的開發(fā)效率提高5倍以上,代碼減少60%以上。 為了使大家對Wabacus框架有一個全面的了解,我們采訪了該框架的作者。 項目地址:http://code.google.com/p/wabacus 論壇地址:http://wabacus./ 目前該框架最新穩(wěn)定版本為3.4,你可以通過以下演示地址來了解: 演示地址1 演示地址2 演示地址3 如果你在部署和使用Wabacus上有任何問題,可以與作者聯(lián)系(QQ:349446658),或進(jìn)入QQ 群:203873792、94291972、35530847進(jìn)行討論,還可以進(jìn)入Wabacus論壇進(jìn)行提問。
歡迎大家推薦更多開源項目給我們,支持中國的開源項目發(fā)展,如果您和您的團(tuán)隊希望展示你的創(chuàng)業(yè)理念和有趣之處,或者有朋友在創(chuàng)造這樣的價值,請聯(lián)系我們,發(fā)信到blog@csdn.net即可。 1、Wabacus是什么? Wabacus是一個JavaEE快速開發(fā)框架,能快速實(shí)現(xiàn)完整的JavaEE功能,包括前臺后臺,因此與常見的框架jQuery、Extjs、Struts、Spring、Hibernate等不同,它們均只提供某一個方面的解決方案,開發(fā)人員必須組合使用它們才能完成JavaEE功能的開發(fā)。 另外,Wabacus與國內(nèi)的很多快速開發(fā)平臺也不同,國內(nèi)很多快速開發(fā)平臺只是對常用功能進(jìn)行了一下封裝,或者對簡單基礎(chǔ)代碼進(jìn)行了一下自動生成,并沒有在開發(fā)思想這個層次上有什么改進(jìn),這種改變只能說是“物理變化”,而不是“化學(xué)變化”。 Wabacus則是在開發(fā)思想這個層次上進(jìn)行改進(jìn),最大限度將開發(fā)人員從考慮“如何做”中解放出來,只需考慮做什么即可。因此與傳統(tǒng)開發(fā)思想相比,相當(dāng)于發(fā)生了“化學(xué)變化”,能成倍地提高JavaEE開發(fā)效率。 2、Wabacus所適用的領(lǐng)域,提供了哪些功能? Wabacus是一個JavaEE快速開發(fā)框架,能適用于任意類型的JavaEE項目、產(chǎn)品及應(yīng)用。不過由于前臺展示采用的是JS/CSS/HTML等,因此也只適用于B/S結(jié)構(gòu)的JavaEE項目,對于采用AWT/SWT等進(jìn)行前臺展示的C/S結(jié)構(gòu)的項目則不適用。 Wabacus框架不僅從開發(fā)思想層面給開發(fā)人員帶來了很大的好處,讓他們盡量從“如何做”中解放出來,而且對常用且很多是很復(fù)雜的功能提供了良好的支持,讓開發(fā)人員要開發(fā)這些功能時變得非常容易,只需簡單聲明即可,例如: 列過濾、列選擇、凍結(jié)行列標(biāo)題的報表、輸入聯(lián)想、文件上傳/下載、行/列分組報表、樹形表格、數(shù)據(jù)導(dǎo)入/導(dǎo)出、數(shù)據(jù)打印、交叉統(tǒng)計報表、主從報表、行排序等。 當(dāng)然,Wabacus框架給開發(fā)人員帶來的好處主要還是開發(fā)思想方面的根本改進(jìn),這個才是主要的,帶來的好處也是巨大的。 3、開發(fā)這個框架的初衷,它與其它框架相比有什么優(yōu)勢? 本人從事JavaEE開發(fā)與架構(gòu)將近9年的時間,后面大部分時間是負(fù)責(zé)公司各類項目、產(chǎn)品方面的架構(gòu)設(shè)計,在這方面積累了較為豐富的經(jīng)驗,這個框架的思想也是多年架構(gòu)經(jīng)驗的積累,用過在很多項目和產(chǎn)品中,取得了非常好的效果,凡是本人用這個思想設(shè)計的架構(gòu),在前期開發(fā)和后期維護(hù)方面都非常方便,新進(jìn)來的開發(fā)人員能快速上手,后期的各種維護(hù)改造工作也很容易。 印象比較深的就是用這個思想開發(fā)的一個大型網(wǎng)站項目,在開發(fā)時,幾個開發(fā)人員快速地配置了幾百個數(shù)據(jù)展示功能,在后期維護(hù)差不多每年一次的改版中,這幾百個數(shù)據(jù)展示功能也是最容易和方便改的,只要改幾個JS/CSS文件以及少數(shù)的幾個系統(tǒng)級配置文件就可以對它們的顯示效果、顯示結(jié)構(gòu)進(jìn)行整體調(diào)整。因此在項目組和客戶方面都反映非常好。 正是基于這些項目、產(chǎn)品的成功實(shí)施經(jīng)驗,本人決定將這個思想轉(zhuǎn)化為一個成熟的框架,讓更多朋友受益,也改變一下國內(nèi)開源框架原創(chuàng)性比較少的局面(比如國外搞IOC、AOP、O/R Mapping等方面的框架,國內(nèi)很多朋友也是照著這些思想搞這些方面的框架,只是實(shí)現(xiàn)方式上進(jìn)行一些改變,沒有提出原創(chuàng)性的思想)。 關(guān)于和其它框架的比較,我認(rèn)為Wabacus最大的優(yōu)勢就是開發(fā)思想的改進(jìn),將開發(fā)人員由傳統(tǒng)的“面向過程”、“面向?qū)ο蟆彼枷胫修D(zhuǎn)入更容易、更高效的“面向聲明”的思想中,大幅提高開發(fā)效率和降低開發(fā)復(fù)雜度。 4、代碼減少60%,開發(fā)效率提升5倍以上,是如何實(shí)現(xiàn)的? 首先說明一下,這里說的“60%”、“5倍”都是一個概數(shù),不是一個精確值,因為開發(fā)效率不能像性能一樣,能通過工具準(zhǔn)確定量測試,就好比問“交流時說話比打字快多少倍?”一樣,我們也不能給出一個精確數(shù),因為打字有快有慢,說話的語速也有快有慢,沒辦法精確說一定快多少倍,但我們知道整體上要快好幾倍。 wabacus為什么能大幅減少代碼量,成倍提高開發(fā)效率呢?原因就是它采用“面向聲明”的開發(fā)思想,我們來介紹一下什么是“面向聲明”的開發(fā)思想: 所謂“聲明”,就是只要把要做的功能說出來,而不需開發(fā)人員考慮如何實(shí)現(xiàn),具體如何實(shí)現(xiàn)交給Wabacus來完成,就好比“視頻聊天”,只要把字說出來,而不需考慮如何寫出這些字,就能表達(dá)自己的意思,因此比“寫字聊天”、“打字聊天”的方式都要快很多倍,因為后兩種方式都要考慮將字實(shí)現(xiàn)出來才能表達(dá)自己的意思,而傳統(tǒng)的開發(fā)思想就好比“寫字聊天”或“打字聊天”,要開發(fā)人員編寫大量的代碼將“字”實(shí)現(xiàn)出來。 使用wabacus開發(fā),不僅大幅提高了開發(fā)效率,而且對開發(fā)人員的要求也比較低,因為不太需要關(guān)注實(shí)現(xiàn),只需聲明,就好比“視頻聊天”一樣,不需考慮將字寫出來,因此文盲都能順利地交流。 其實(shí)面向聲明的開發(fā)思想也不是Wabacus獨(dú)創(chuàng),在很多框架中都有使用,而且都取得非常不錯的效果。比如Spring,就是將對象的依賴關(guān)系做成可聲明,提高對象依賴的靈活性和可維護(hù)性;再比如EJB或Spring,提供聲明性事務(wù),提高了事務(wù)控制的靈活性,減低了開發(fā)難度等等。但是它們只是著眼某一個方面,做的不夠徹底,帶來的改善是局部的。而Wabacus框架在更大的范圍提供了聲明性編程,盡量將用戶的整體開發(fā)效率提到最高,所以它對JavaEE開發(fā)帶來的好處是立體的,全方位的。 5、Wabacus擴(kuò)展性如何? Wabacus做為一個框架,需要滿足各種復(fù)雜的場合,因此非常注重可擴(kuò)展性,也提供了非常靈活的擴(kuò)展接口,大體體現(xiàn)在如下方面:
6、Wabacus能否與其它框架共存在同一個項目中,比如在已有項目中加入Wabacus框架快速開發(fā)新功能? Wabacus前臺采用的是標(biāo)準(zhǔn)JS/CSS/HTML,后臺采用的是標(biāo)準(zhǔn)Java實(shí)現(xiàn),都沒有用到其它框架,從它依賴的第三方j(luò)ar包中可以看到,除了數(shù)據(jù)庫驅(qū)動包,只有少數(shù)幾個第三方組件,因此不會與任何現(xiàn)有的框架有沖突,可以與它們(比如常用的SSH、SSI等)共存在一個項目中。 現(xiàn)在使用框架的朋友中,有很大一部分都是在老項目中用Wabacus開發(fā)新功能,而之前用其它框架開發(fā)的功能要么保持不變,要么逐步遷移,運(yùn)行時互不影響。 根據(jù)本人這么久的技術(shù)支持經(jīng)驗,很多朋友在用了Wabacus以后,雖然項目中可能還有其它框架,但有了新需求,第一時間想到的就是如何用Wabacus來實(shí)現(xiàn),盡量避開其它框架,因為相比其它框架,Wabacus的開發(fā)效率高太多,只有當(dāng)使用Wabacus不方便實(shí)現(xiàn)的時候,才會用其它框架開發(fā)。 7、Wabacus支持哪些數(shù)據(jù)庫類型? Wabacus內(nèi)置了對SQL Server、Oracle、MySQL、DB2四種常用數(shù)據(jù)庫的支持,每個數(shù)據(jù)庫類型對應(yīng)一個Provider類,比如Oracle數(shù)據(jù)庫的Provider類為:com.wabacus.config.database.type.Oracle,MySQL的Provider類為:com.wabacus.config.database.type.MySql等等,如果要新增對其它數(shù)據(jù)庫的支持,只要參照內(nèi)置的數(shù)據(jù)庫類型提供一個相應(yīng)的Provider類即可。 8、早期沒有完全開放源碼,是什么原因? Wabacus的源代碼開放是逐步的,在早期,只公開了80%左右的Java源碼,后面又開放了99%的源碼,現(xiàn)在已經(jīng)將所有Java源代碼開放了。 早期沒有開放所有源碼是沒有對所有朋友開放源碼,但對正在使用框架的朋友還是開放了他們想修改的任意源碼,也就是說他們想修改的源碼如果沒有在公開的80%或99%之中,他們是可以向我要的,我會發(fā)給他們,并教他們?nèi)绾胃?。這樣做的目的有兩個:第一、鼓勵大家使用框架;第二:早期版本不夠穩(wěn)定,我有可能會進(jìn)行比較大的重構(gòu),因此如果讓他們修改了太多源碼的話,以后升級會非常困難。 不過現(xiàn)在Wabacus架構(gòu)已經(jīng)非常成熟,所有Java源代碼都已經(jīng)公開了。 9、你所知道的有哪些項目使用了該框架? 因為一般項目用了什么框架都是一個保密的內(nèi)容,很多朋友不愿公開,尤其是外網(wǎng)能訪問到的網(wǎng)站之類的項目更是這樣,包括我自己用Wabacus的思想開發(fā)的大型門戶網(wǎng)站,也不愿意公開說出是哪一家,所以很多使用Wabacus的用戶我也不知道他們的項目名字,這里我列出一些愿意公開的項目:
10、用戶如何提交bug、參與貢獻(xiàn)? 目前用戶如果在使用過程中發(fā)現(xiàn)BUG,或者有需要改進(jìn)的地方,都是通過在QQ或QQ群中聯(lián)系我,然后我登記下來,盡早解決。此外,還可以通過在Wabacus論壇中登記BUG。 目前用戶參與貢獻(xiàn)都是進(jìn)行比較外圍的工作,比如錄制視頻、對新手進(jìn)行技術(shù)支持、制作新的主題風(fēng)格、提供DEMO演示服務(wù)器和論壇服務(wù)器、進(jìn)行捐助等等,在框架開發(fā)上的貢獻(xiàn)較少。 如果有朋友希望參與Wabacus框架的開發(fā),可以開發(fā)IDE工具之類的,Wabacus的核心還是不希望太多人經(jīng)手,擔(dān)心搞亂,畢竟框架代碼比較復(fù)雜。 11、作者簡介 本人2003年畢業(yè),一直從事JavaEE方面的開發(fā)與架構(gòu),開發(fā)的項目涉及銀行、政府、企業(yè)、證券等行業(yè)。對Java底層知識、面向?qū)ο蟮脑O(shè)計、可復(fù)用軟件的設(shè)計非常感興趣。 |
|