“J-Hi”Java開源平臺(tái)的生力軍
原創(chuàng)
張昊
J-Hi快速開發(fā)平臺(tái)團(tuán)隊(duì)核心成員,平臺(tái)項(xiàng)目的主要發(fā)起者與組織者。十多年來一直從事于J2EE企業(yè)級(jí)應(yīng)用開發(fā)及項(xiàng)目管理工作,對(duì)于軟件實(shí)現(xiàn)有自己一套獨(dú)特的理解。熱衷于設(shè)計(jì)模式、軟件架構(gòu)及項(xiàng)目管理方面的研究,對(duì)于目前主流的java開源框架均有深入了解。希望J-Hi這個(gè)開源平臺(tái)也能象那些主流開源框架一樣在中國(guó)開花結(jié)果,為中國(guó)的開源事業(yè)盡自己的一份綿薄之力。他目前主要的精力都放到平臺(tái)的推廣上。他喜歡看哲學(xué)與宗教方面的書籍,如果您有這方面的愛好也可以與他聯(lián)系,他的電子郵箱為:hao.zhang.hi@gmail.com
51CTO: 您是什么時(shí)候接觸到J-Hi這項(xiàng)技術(shù)的,基于什么樣的目的呢?
張昊:我是J-Hi項(xiàng)目的發(fā)啟者, 從2005年末時(shí)我就開始做這個(gè)項(xiàng)目了。當(dāng)時(shí)它還只是大家為了探索如何使程序開發(fā)更好、更快速、易于管理而又不影響開發(fā)人員的編程習(xí)慣的一個(gè)構(gòu)想,當(dāng)初它還只是個(gè)底層框架或開發(fā)工具,核心團(tuán)隊(duì)成員就是用這個(gè)小小的底層框架做了很多項(xiàng)目,從未想過會(huì)將它開源出來(因?yàn)槲覀冇X得做得還不夠好,擔(dān)心開源后會(huì)被同行笑話)。后來隨著所接項(xiàng)目的逐漸增多,J-Hi所涉足的行業(yè)領(lǐng)域也不斷廣闊,因此我們也不得不適應(yīng)需求的變化不斷的為它加入新的功能,慢慢的它變得越來越強(qiáng)壯。突然有一天有人提議我們將它開源吧,大家這才為平臺(tái)的開源做準(zhǔn)備。從我們今年1月14日開始推廣以來,有很多的愛好者加到其中,這樣我和我的團(tuán)隊(duì)感到很欣慰,覺得我們努力得到了大家的認(rèn)可!
51CTO :J-Hi這項(xiàng)技術(shù)有什么優(yōu)點(diǎn)?是否已經(jīng)在實(shí)踐中證實(shí)呢?
張昊:J-Hi這項(xiàng)技術(shù)主要有以下幾個(gè)幾優(yōu)點(diǎn)
快速的按需動(dòng)態(tài)搭建
目前平臺(tái)支持的框架有:webwork、struts2、spring、hibernate、ibatis2、ibatis3,對(duì)于這些框架您可以通過可視化(J-HI Studio,eclipse插件)的方式隨意組合,通過工程創(chuàng)建向?qū)?,自?dòng)化的按照你所選擇的框架快速的動(dòng)態(tài)搭建起開發(fā)工程。我們之所以將J-Hi做成多框架動(dòng)態(tài)搭建,主要是考慮到不同企業(yè)的開發(fā)團(tuán)隊(duì)對(duì)技術(shù)的傾向性會(huì)有很大差別,比如對(duì)于ORM有的人就喜歡hibernate,而有的人就覺得hibernate太強(qiáng)硬,喜歡用半自動(dòng)化的ibatis。J-Hi基于這個(gè)目的為開發(fā)者提供了更多的可選擇性。在此要注意對(duì)于平臺(tái)多框架的集成并不象一般意思上的集成(即幾個(gè)框架拼接在一起就可以象appfuse一樣),因?yàn)槠脚_(tái)的集成還要包括很多通用業(yè)務(wù)并且與數(shù)據(jù)庫(kù)表是有關(guān)系的(一般搭建多框架是沒有業(yè)務(wù)的所有的東西都要由你親自去開發(fā),而平臺(tái)會(huì)有很多的業(yè)務(wù)已經(jīng)預(yù)留在平臺(tái)中)。舉個(gè)例子:比如安全管理,這是平臺(tái)的一個(gè)通用業(yè)務(wù)包括角色、權(quán)限等。在切換到不同的框架比如struts或webwork;hibernate或ibatis時(shí),平臺(tái)的底層要自動(dòng)的適應(yīng)這種變化,這是有一定的創(chuàng)新點(diǎn)的J。當(dāng)然我們以后還會(huì)集成更多、更優(yōu)秀的框架在平臺(tái)之中,比如SpringMVC,SpringJDBC等等,在數(shù)據(jù)庫(kù)端我們也會(huì)再多支持一些數(shù)據(jù)庫(kù),當(dāng)然集成數(shù)據(jù)庫(kù)也不是傳統(tǒng)意義上的只是一個(gè)數(shù)據(jù)庫(kù)連接,而是針對(duì)不同的數(shù)據(jù)庫(kù)差異會(huì)做不同的方言,不同的數(shù)據(jù)庫(kù)腳本還要有相應(yīng)的生成模板等等。
完整而系統(tǒng)的生成方案
代碼生成或生成器這實(shí)際上在十年前就已經(jīng)有的東西,無論是實(shí)現(xiàn)原理還是具體的工具都不是新鮮事物。J-Hi之所以將代碼生成也算作自己的特色,是因?yàn)樗耐暾耘c系統(tǒng)性。從完整性來看,J-Hi的生成是一套含蓋從數(shù)據(jù)庫(kù)底層一直到頁(yè)面端全部的解決方案,包括數(shù)據(jù)庫(kù)表;權(quán)限、菜單、多語言等相關(guān)基礎(chǔ)數(shù)據(jù);java類文件;JSP、js文件;相關(guān)配置文件等等,因此保證了生成即可運(yùn)行,從單元體上來看生成文件是完整的,是可獨(dú)立運(yùn)行的。從系統(tǒng)性來看,生成的文件是隨著你選擇的框架不同而不同的,生成的基礎(chǔ)是隨著框架與數(shù)據(jù)庫(kù)的差異而隨需變化,系統(tǒng)的解決了生成器的僵硬性,從而靈活的適應(yīng)開發(fā)環(huán)境。因此J-Hi的生成方案是系統(tǒng)的,是適應(yīng)不同框架與數(shù)據(jù)庫(kù)的生成方案的。
組件化
J-Hi把組件劃分為四類,技術(shù)組件、實(shí)體組件、業(yè)務(wù)組件與系統(tǒng)組件,具體內(nèi)容請(qǐng)參見平臺(tái)組件化。J-Hi就是從實(shí)際的項(xiàng)目開發(fā)過程中誕生與完善起來的,它把主要把關(guān)注放在如何解決快速開發(fā)與降低成的問題上。如果從一個(gè)項(xiàng)目的整個(gè)生命期來看,實(shí)際上開發(fā)只占了總項(xiàng)目的成本的一小部分,然后就是這一小部分還是有大量的成本損耗。比如在管理上,人員變動(dòng)對(duì)開發(fā)的影響;在技術(shù)偏向性上,增加了開發(fā)人員的學(xué)習(xí)曲線從而使成本提高;在功能的復(fù)用性上,在項(xiàng)目開發(fā)過程會(huì)發(fā)現(xiàn)每次都會(huì)做一些稍有差異但實(shí)際是功能重疊的東西;在具體coding過程中,會(huì)寫一樣模式化的但又不得不寫的東西(如POJO等)。J-Hi就是為了解決上述問題而產(chǎn)生的。當(dāng)然J-Hi還有弱小,以后我們還不斷的完善,使它越來越強(qiáng)大。
51CTO: 哪些領(lǐng)域能運(yùn)用J-Hi這項(xiàng)技術(shù),您能有一些好的建議么?
張昊:我們用J-Hi做過很多領(lǐng)域,互聯(lián)網(wǎng)我們做過電子商務(wù)的網(wǎng)站,物聯(lián)網(wǎng)我們做過RFID的票務(wù)管理系統(tǒng),傳統(tǒng)行業(yè)的ERP、進(jìn)銷存、OA這些我們都有做過。J-Hi開發(fā)平臺(tái)實(shí)際上它是不拘泥于某種技術(shù)或某個(gè)領(lǐng)域的開發(fā)工具。我們拿sturts舉例來說,有人用它做互聯(lián)網(wǎng),有人用它做CMS,也可能有人用它做物聯(lián)網(wǎng)的表現(xiàn)層,而它本身是中立的它只是個(gè)工具不受限于具體的領(lǐng)域。J-Hi也是一樣
51CTO: 對(duì)于剛剛接觸J-Hi這項(xiàng)技術(shù)的人群,有什么好的學(xué)習(xí)建議么?
張昊:平臺(tái)類的產(chǎn)品對(duì)于使用它的開發(fā)者來說都有同樣的特點(diǎn):使聰明人更加聰明,使懶惰的人更加懶惰(從而失去了思想)。我希望所有接觸J-Hi的愛好者都能成為前者,而不是后者。因?yàn)樵贘-Hi的設(shè)計(jì)之初間中的一個(gè)理念就是,讓它成為希望了解主流框架人一個(gè)學(xué)習(xí)工具。從這一點(diǎn)來看,J-Hi也跟Appfuse很象,但要比Appfuse更完善,更全面,更貼進(jìn)去業(yè)務(wù)。
采訪總結(jié):
下面給出張昊先生博客鏈接:http://www.blogjava.net/hao-zhang-hi/MyPosts.html
【編輯推薦】