|
Java快速開發(fā)平臺:J-Hi J-HI是一款JAVA WEB應(yīng)用軟件快速開發(fā)開源平臺,主要服務(wù)于軟件企業(yè)和傳統(tǒng)行業(yè)企事業(yè)單位信息中心的開發(fā)人員,為他們提供一套完整的一站式的JAVA WEB應(yīng)用軟件快速開發(fā)解決方案。 J-HI是什么 J-HI是一款JAVA WEB應(yīng)用軟件快速開發(fā)開源平臺,主要服務(wù)于軟件企業(yè)和傳統(tǒng)行業(yè)企事業(yè)單位信息中心的開發(fā)人員,為他們提供一套完整的一站式的JAVA WEB應(yīng)用軟件快速開發(fā)解決方案。 平臺包括如下幾個部分: 1、J-HI平臺集成環(huán)境:J-HI團隊開發(fā)了一個集成開發(fā)環(huán)境J-HI Studio,在此集成開發(fā)環(huán)境之上,開發(fā)人員能夠快速搭建自己的開發(fā)環(huán)境,創(chuàng)建自己的模型,快速生成代碼。 2、核心框架:平臺為Java代碼與JS代碼之間提供了一套完整的面向?qū)ο蟮暮诵目蚣苤蜗到y(tǒng),可以認為這是一個抽象層,無論是在頁面表現(xiàn)上,還是 在 CURD的任意一層,平臺均提供了最大限度的抽象。用以保證平臺本身的可擴展性、穩(wěn)定性及靈活性。J-HI平臺中提供了大量的API(Java與JS),為用戶在開發(fā)過程中隨需調(diào)用,從而進一步加快開發(fā)速度,保證代碼質(zhì)量。 3、業(yè)務(wù)平臺功能:包括權(quán)限管理、組織結(jié)構(gòu)、枚舉管理、國際化管理、任務(wù)管理、日志管理、Excel報表管理、消息管理等。 4、工作流:包括工作流引擎及流程編輯器等。 J-HI有什么特點 1、基于業(yè)務(wù)模型,可以快速生成,提高大大提高開發(fā)速度。 2、與傳統(tǒng)開發(fā)模式相同,是傳統(tǒng)開發(fā)模式的有益補充。 3、更大的靈活性,無論是生成的源代碼還是生成器模板,用戶均可自由修改。 4、多框架支持,為您的開發(fā)提供了更大的可選擇空間。 5、基礎(chǔ)框架完全開源,用戶可以按需自我調(diào)整(實際上平臺底層已經(jīng)非常強壯,無需調(diào)整)。 6、組件化管理,組件重用、擴展、移植更加方便。用戶可以有選擇的使用部分組件。 7、容易上手,無論是學(xué)習(xí)還是作用項目開發(fā),平臺容易掌握,學(xué)習(xí)曲線低。 8、優(yōu)秀的學(xué)習(xí)資料,平臺是多年經(jīng)驗積累的結(jié)果,您可以通過平臺分析了解更多的技術(shù)解決方案,與設(shè)計思想。 為什么會選擇J-HI 通過技術(shù)路線我們會發(fā)現(xiàn)無論是軟件還是硬件,如今的系統(tǒng)越來越高精密,越來越復(fù)雜,需要掌握的知識也越來越多。J-HI平臺本身就定位在“大規(guī)模集成”這一環(huán)節(jié)上,目的是將主流的框架集成于該平臺當(dāng)中,為用戶呈顯一個高效、穩(wěn)定、可復(fù)用、低耦合、通用化并且功能齊全、用戶體驗友好的套件產(chǎn)品。J-HI平臺的目的就是通過平臺的集成能力,化繁為簡。從而提高開發(fā)效率,讓軟件工程師將主要的精力放在最核心的業(yè)務(wù)邏輯上,而非寫一堆的POJO類或頁面導(dǎo)航的配置文件這些瑣然無味又沒有技術(shù)含量的工作中。 平臺也是一個了解主流開源框架很好的學(xué)習(xí)工具,因為它本身是一個設(shè)計良好開放的框架,除了支持目前主流的表現(xiàn)層webwork、struts,業(yè)務(wù)層spring以及持久層HIbernate和ibatis開發(fā)框架,用戶還可以通過擴展平臺實現(xiàn)其它非主流的開發(fā)框架,例如頁面可是vm/ftl/pdf等,在持久層上用戶可以采用JDO等。并且所有文檔及代碼注釋均采用中文,為快速了解平臺及相關(guān)Java框架提拱一條便捷有效的學(xué)習(xí)途徑。 J-HI平臺的宗旨無非八個字“提高速度,降低成本”,在提高開發(fā)速度方面: 1) J-HI平臺采用模式驅(qū)動代碼生成的方式會生成從數(shù)據(jù)庫腳本、Java代碼、JSP頁面到相關(guān)配置文件所有文件,從而使您從枯燥繁瑣的編輯配置文件、寫模式的Java代碼(如POJO、Action、DAO)中解放出來。 2) 平臺本身提供了很多通用的、可配置的功能模塊(如權(quán)限管理、附件、枚舉管理??)我們稱之為通用組件。因為這些通用組件都是十分常用的,可以說在一個系統(tǒng)中它們無處不在,所以利用通用組件可以大大加快項目的開發(fā)速度。 3) J-HI平臺底層是一個設(shè)計良好的框架,可以說容入了當(dāng)今大多數(shù)主流的開源框架。通過向?qū)У男问狡脚_可以提供對不同框架間的一站式快速搭建。 4) 除之以外如何快速響應(yīng)客戶的需求的不斷變化一直是做軟件項目的一場噩夢,而J-HI平臺在這方面有一些自己的經(jīng)驗與嘗試,即使是增、改數(shù)據(jù)庫表字平臺本身也有自己的解決方案。 在降低成本方面: 1)風(fēng)險成本,為了提供開發(fā)速度降低項目的經(jīng)濟成本采用平臺或工具(即使是采用一些開源框架)這已是業(yè)界不可逆轉(zhuǎn)的趨勢。隨著平臺化產(chǎn)品的不斷涌現(xiàn),如何選擇好的產(chǎn)品以降低風(fēng)險已是作為決策層首當(dāng)其沖考慮的問題。在這方面可以說J-HI平臺在同類的產(chǎn)品中風(fēng)險是最低的,一、它是開源的沒有任何瓶頸;二、它生成的所有代碼全部可見,J-HI平臺不制造規(guī)范而只是Java世界中主流規(guī)范的執(zhí)行者,本身沒有任何技術(shù)陷阱;三、可以說J-HI平臺是程序員為程序員開發(fā)的一個工具,它的開發(fā)模式與傳統(tǒng)開發(fā)模式完全相同。 2)人力成本,快速開發(fā)本身就意味著人力成本的降低,對于企業(yè)來說通過平臺可以將人員分出梯次從而進一步的控制人力成本。對于個人來說通過對J-HI開源平臺的學(xué)習(xí)(因為可以說平臺本身就是目前很多主流框架的一個容器),可以快速的提升自己的技能,特別是在企業(yè)級開發(fā)上,從而實現(xiàn)自身價值的提升。 3)管理成本,人員的流動尤其是核心人員的流動一直是企業(yè)面臨的棘手問題,而對該問題的最好解決方式是在項目管理與開發(fā)上的標(biāo)準(zhǔn)化。J-HI平臺為開發(fā)的標(biāo)準(zhǔn)化提供了一個基礎(chǔ),原因在于代碼生成無論是代碼樣式、風(fēng)格及配置文件的規(guī)則完全相同。這樣就保證無論人員如何流動但這套標(biāo)準(zhǔn)是不會變化的。 上圖是在功能上對J-HI平臺的高度概括。通過該圖可以看出平臺采用JavaEE接合Spring實現(xiàn)從數(shù)據(jù)庫端直到業(yè)務(wù)端的全線貫通。從總的技術(shù)路線來看平臺充分發(fā)揮 Spring IOC與AOP的強大功能,實現(xiàn)業(yè)務(wù)層兩端(即表現(xiàn)層與持久層)的完全解藕與無縫集成。在此要強調(diào)這種集成并非傳統(tǒng)意義上的提供一套簡單的配置文件,而是結(jié)合業(yè)務(wù)對每個框架的集成均提供一套更符合業(yè)務(wù)、調(diào)用更友好的抽象層,抽象層除封裝、集成外還提供一套客戶可配置,擴展性良好的通用API。而對于顆粒度較大的功能項,我們以通用組件的形式發(fā)布于平臺之中,如樹的展示、對象化的樹型結(jié)構(gòu)等等。在頁面表現(xiàn)上平臺除提供可客戶化擴展的標(biāo)簽庫外,還為您提供一整套以ajax技術(shù)為核心的客戶端,從而使用戶感受更好,更像是web2.0技術(shù)實現(xiàn)。除此之外,平臺更加貼近實際業(yè)務(wù),提供了一些通用的應(yīng)用服務(wù),包括權(quán)限管理、組織結(jié)構(gòu)、任務(wù)管理等等,對于 通用的應(yīng)用服務(wù)我們以后的版本中不斷加入,可以看出平臺是一個開放的不斷擴充的集成開發(fā)工具。最后,生成器貫穿于所有層面,可以生成任何層面的文件與代碼。 原文鏈接: 論J-Hi平臺的特點 最近很多網(wǎng)友問我同樣的問題,那就是J-Hi與其它的平臺類產(chǎn)品有什么區(qū)別?它有哪些獨特的特點。實際在我看來J-Hi與目前任何其它平臺類的產(chǎn)品的出發(fā)點或稱之為初宗都是相同的,那就是想解決如何使開發(fā)更快速、更高效,如何降低項目的成本(不只是快速開發(fā)所帶來的成本降低,也包括項目的管理成本)。 總的來說,目前市場上的平臺類產(chǎn)品所采用的核心技術(shù)無非兩種,一種是模型驅(qū)動(后臺有一個模型引擎來負責(zé)解析與計算這些業(yè)務(wù)模型從而得到預(yù)期的運算結(jié)果);另一種是代碼生成(按照定義的模型通過生成器生成全部源文件)。從技術(shù)本身來看,這兩種技術(shù)都不算什么新鮮東西,只是隨著計算機運算能力的提高,相關(guān)技術(shù)的不斷成熟,使這兩種技術(shù)應(yīng)用于業(yè)務(wù)開發(fā)平臺成為可能,因此單純從技術(shù)先進性來看,那我覺得都沒有什么在技術(shù)可以稱道的地方。反之,平臺它是多種技術(shù)的融合體,尤其是業(yè)務(wù)開發(fā)平臺不只包括技術(shù)本身還會包含一些通用的業(yè)務(wù)以及一些開發(fā)工具。因為這些的差異,就形成了各類平臺產(chǎn)品的差異性。在此讓我們來分析一下J-Hi Java快速開發(fā)平臺自身的特點(即與其它平臺的不同之處): 快速的按需動態(tài)搭建 目前平臺支持的框架有:webwork、struts2、spring、hibernate、ibatis2、ibatis3,對于這些框架您可以通過可視化(J-HI Studio,eclipse插件)的方式隨意組合,通過工程創(chuàng)建向?qū)?,自動化的按照你所選擇的框架快速的動態(tài)搭建起開發(fā)工程。我們之所以將J-Hi做成多框架動態(tài)搭建,主要是考慮到不同企業(yè)的開發(fā)團隊對技術(shù)的傾向性會有很大差別,比如對于ORM有的人就喜歡hibernate,而有的人就覺得hibernate太強硬,喜歡用半自動化的ibatis。J-Hi基于這個目的為開發(fā)者提供了更多的可選擇性。在此要注意對于平臺多框架的集成并不象一般意思上的集成(即幾個框架拼接在一起就可以象appfuse一樣),因為平臺的集成還要包括很多通用業(yè)務(wù)并且與數(shù)據(jù)庫表是有關(guān)系的(一般搭建多框架是沒有業(yè)務(wù)的所有的東西都要由你親自去開發(fā),而平臺會有很多的業(yè)務(wù)已經(jīng)預(yù)留在平臺中)。舉個例子:比如安全管理,這是平臺的一個通用業(yè)務(wù)包括角色、權(quán)限等。在切換到不同的框架比如struts或webwork;hibernate或ibatis時,平臺的底層要自動的適應(yīng)這種變化,這是有一定的創(chuàng)新點的J。當(dāng)然我們以后還會集成更多、更優(yōu)秀的框架在平臺之中,比如SpringMVC,SpringJDBC等等,在數(shù)據(jù)庫端我們也會再多支持一些數(shù)據(jù)庫,當(dāng)然集成數(shù)據(jù)庫也不是傳統(tǒng)意義上的只是一個數(shù)據(jù)庫連接,而是針對不同的數(shù)據(jù)庫差異會做不同的方言,不同的數(shù)據(jù)庫腳本還要有相應(yīng)的生成模板等等。 因此你會發(fā)現(xiàn)快速按需動態(tài)搭建,并不是傳統(tǒng)意義上的多框架集成那么簡單,而是對應(yīng)每一種框架(數(shù)據(jù)庫)平臺都會提供一套完整的解決方案。總之多框架集成對于J-Hi來說,是牽一發(fā)而動全身的事情,變動一個框架,包括每一個頁面,每一個java類,每一個配置文件都要隨之而動態(tài)的變化。因此它是系統(tǒng)級的工程而非簡單的多個框架拼接。 完整而系統(tǒng)的生成方案 代碼生成或生成器這實際上在十年前就已經(jīng)有的東西,無論是實現(xiàn)原理還是具體的工具都不是新鮮事物。J-Hi之所以將代碼生成也算作自己的特色,是因為它的完整性與系統(tǒng)性。從完整性來看,J-Hi的生成是一套含蓋從數(shù)據(jù)庫底層一直到頁面端全部的解決方案,包括數(shù)據(jù)庫表;權(quán)限、菜單、多語言等相關(guān)基礎(chǔ)數(shù)據(jù);java類文件;JSP、js文件;相關(guān)配置文件等等,因此保證了生成即可運行,從單元體上來看生成文件是完整的,是可獨立運行的。從系統(tǒng)性來看,生成的文件是隨著你選擇的框架不同而不同的,生成的基礎(chǔ)是隨著框架與數(shù)據(jù)庫的差異而隨需變化,系統(tǒng)的解決了生成器的僵硬性,從而靈活的適應(yīng)開發(fā)環(huán)境。因此J-Hi的生成方案是系統(tǒng)的,是適應(yīng)不同框架與數(shù)據(jù)庫的生成方案的。 平臺到底生成了些什么? 組件化 在軟件世界里組件這個概念真是千差萬別,每個系統(tǒng)與工具軟件對組件都有各自不同的定義。尤其在Java世界里更是如此,小的從一個頁面元素一直到大的一個業(yè)務(wù)功能系統(tǒng),在各自的領(lǐng)域都會給它們定義為組件。按照《計算機百科全書》給組件的定義:是軟件系統(tǒng)中具有相對獨立功能、接口由契約指定、和語境有明顯依賴關(guān)系、可獨立部署、可組裝的軟件實體。由此定義我們來談一下J-Hi Java快速開發(fā)平臺對組件的理解與解決方案。 實際上說到底無非是對組件顆粒的劃分問題,在不同的條件與環(huán)境下組件的作用與功能會有很大差異,其次在定義組件時要保證功能的相對獨立并且可組裝可部署,由此J-Hi將組件根據(jù)用途與范圍的不同劃分為如下四類組件類型:技術(shù)組件、實體組件、業(yè)務(wù)組件、系統(tǒng)組件,它們之間的關(guān)系是逐級遞進,互為基礎(chǔ)的。 在我們在深入探討之前,先來簡單的解釋一下上圖中各種組件類型之間的關(guān)系。比如一個OA系統(tǒng)我們就可以把這理解為一個系統(tǒng)組件,而多個系統(tǒng)組件(倉儲系統(tǒng)、人力系統(tǒng)等)可以動態(tài)搭建更大的應(yīng)用系統(tǒng)(ERP)。每個系統(tǒng)組件下會有多個業(yè)務(wù)組件,例如在OA系統(tǒng)下會有報銷單、會議管理等多個業(yè)務(wù)組件。因為大部分業(yè)務(wù)組件之間一般都是松藕合的,所業(yè)務(wù)組件可以無縫的遷移到其它的系統(tǒng)組件中,即實現(xiàn)業(yè)務(wù)組件可復(fù)用性。而在一個業(yè)務(wù)組件下會有一個或多個實體組件夠成,我們還以報銷單業(yè)務(wù)組件為例,在報銷單最少會有報銷單及報銷單明細兩個實體組件,一個實體您可以理解成與數(shù)據(jù)庫對應(yīng)的一張表,實體之間可以繼承、一個實體可以有多個子實體。但實體不僅僅是數(shù)據(jù)庫表,它包括從頁面到數(shù)據(jù)庫表之間的全部代碼實現(xiàn)同時包括CURD所有操作的功能單元。對于實體組件我們會在后面詳細討論。最后是技術(shù)組件,在J-Hi中技術(shù)組件可以說是一個抽象的概念,一個技術(shù)組件就是一個技術(shù)功能單元,它可能是一套生成模版,一個框架的支持,一套API(比如對短信、全文檢索的支持等) 實體組件:J-Hi將一個實體組件定義為一個集合單元,它不僅僅包括數(shù)據(jù)庫表還包括對該數(shù)據(jù)庫表的基礎(chǔ)操作(增、刪、查、改);包括前端的展示面頁;包括該實體的權(quán)限、菜單、配置信息;還包括它與其它實體的交互操作。當(dāng)然一個實體組件顆粒度還是太小,還不能完整的描述一個業(yè)務(wù)功能。但實體組件相對來說有一定的獨立性,可以集成一個集合單元,J-Hi就是以實體組件為基礎(chǔ)實現(xiàn)更大粒度的集成,從而實現(xiàn)對一個完整業(yè)務(wù)的描述。 業(yè)務(wù)組件:實際上一個業(yè)務(wù)組件J-Hi將它對應(yīng)于一個服務(wù),服務(wù)可以認為是一個業(yè)務(wù)功能模塊,用以描述完整的業(yè)務(wù)模式,具體相對的業(yè)務(wù)獨立性。在服務(wù)內(nèi)代碼間是高聚集的,因為一個服務(wù)就是一套完整的業(yè)務(wù),在設(shè)計服務(wù)時應(yīng)盡最大限度的降低服務(wù)與服務(wù)之間的藕合度。因為在這個樣一個理論基礎(chǔ)上去設(shè)計,就可以實現(xiàn)業(yè)務(wù)組件無縫的在各系統(tǒng)之間的可移植性。因為組件的定義還要可以獨立的組裝與部署,因此我們開發(fā)平臺的附屬性產(chǎn)品——Hi平臺產(chǎn)品集成工具,它主要是由發(fā)布器與部署器組成,以更方便的實現(xiàn)業(yè)務(wù)組件的遷移。
開發(fā)發(fā)布器與部署器的目的就是通過可視化的方式,實現(xiàn)跨數(shù)據(jù)庫數(shù)據(jù)與跨應(yīng)用系統(tǒng)的業(yè)務(wù)組件遷移。可以將業(yè)務(wù)組件看作一個獨立的業(yè)務(wù)單元,可以無縫的集成于任何以J-Hi平臺開發(fā)的項目中去。從而真正達到隨需組合,動態(tài)搭建實際的業(yè)務(wù)系統(tǒng),真正的實現(xiàn)業(yè)務(wù)組件的復(fù)用,降低不必要的重復(fù)開發(fā)。 系統(tǒng)組件:從業(yè)務(wù)功能上來看系統(tǒng)組件不過是多個業(yè)務(wù)組件的拼接,更大一級的業(yè)務(wù)封裝。理論上系統(tǒng)組件與系統(tǒng)組件之間應(yīng)滿足絕對的隔離性,即使是有通信,應(yīng)該也是通過第三方來進行數(shù)據(jù)交互(常用的解決方式有兩種一種是中間數(shù)據(jù)庫;第二種是webservice)。但如果是基于平臺開發(fā),這種無謂的工作量可以降低很少,甚至可以不需要第三方的交互技術(shù)。只要保證兩個系統(tǒng)間的通信接口就要以輕松實現(xiàn)。系統(tǒng)組件的遷移也可以通過發(fā)布器與部署器來實現(xiàn)。 技術(shù)組件:從技術(shù)角度來看,J-Hi與其它的技術(shù)組件差別不大。無非是基于平臺再開發(fā)一些技術(shù)組件,比如對 SpringMVC、SpringJDBC、DB2數(shù)據(jù)庫等的支持,頁面端也會再集成象DWZ或simpleframework,我們也會再提供更多的頁面端的生成模版,以此類推,平臺的技術(shù)組件會在技術(shù)的不同層面進行擴展。但與其它的技術(shù)組件不同之處在于,實現(xiàn)類似于插件一樣的可插拔,隨需織入。 J-Hi快速開發(fā)平臺到底快速在哪里? 1、快速上手,降低學(xué)習(xí)曲線 對于剛剛接觸J-Hi的人來說,它上手很容易,我們?yōu)槊恳粋€功能點都提供了懸浮幫助功能,即使沒有任何資料(當(dāng)然我們已提供了視頻與開發(fā)文檔),您也可以通過向?qū)c幫助在十分鐘之內(nèi)就可以創(chuàng)建出您自己的項目原型。 其次J-Hi平臺采用的大都是大家耳熟能詳?shù)闹髁骺蚣芘c技術(shù),如果您對主流的框架有所了解,那么對J-Hi的學(xué)習(xí)就沒有任何阻力了。 2、快速搭建開發(fā)環(huán)境 也許您因為項目或自身開發(fā)團隊的不同會采用不同的框架技術(shù),例如您團隊中對struts2熟悉的人遠遠要比掌握webwork的工程師要多,或者在您的項目中統(tǒng)計分析的功能很多,您要考慮ORM的效率問題,而不得不放棄hibernate而采用ibatis或springJDBC,也許您還要考慮數(shù)據(jù)庫問題等等。在搭建開發(fā)環(huán)境您一定會考慮很多因素,盡管搭建開發(fā)環(huán)境并不復(fù)雜,但還是不夠自動化,還要手動的配置,費時費力。J-Hi為快速搭建開發(fā)環(huán)境提供合理的解決方案,您可以按需求動在此您可以選擇不同的頁面框架,并且我們提供了“預(yù)覽”讓您在搭建開發(fā)環(huán)境之前就可以看到搭建后的頁面顯示效果 在此您可以選擇不同的數(shù)據(jù)庫。 3、快速生成所有代碼 通過建立或?qū)肽J?,您可以快速的生成所有代碼與文件,并且在生成時會根據(jù)您選擇的框架技術(shù)與數(shù)據(jù)庫的不同而自動適配。 當(dāng)然您還可以有選擇的生成部分代碼文件,例如只生成JSP頁面,或只生成java代碼。生成的 java代碼結(jié)構(gòu)如下(因為我選擇的框架是ibatis3+struts2,所以平臺會自動匹配只生成與這兩 個框架相關(guān)的類文件,而不會生成無用的其它框架的東西): 4、快速解決在業(yè)務(wù)需求中的技術(shù)難點 一般我們在做項目開發(fā)時,總是要等到項目開發(fā)的中、后期才能去解決業(yè)務(wù)核心問題,因此很造成無法合理估計項目的技術(shù)風(fēng)險。原因是復(fù)雜的業(yè)務(wù)總是要等到基礎(chǔ)模塊建好后才能進入到開發(fā)階段,從而使解決核心的技術(shù)問題置后。我們以一個報銷為例來做個簡單說明,比如報銷在審核后的業(yè)務(wù)邏輯很復(fù)雜并且有可能還要涉及到與其它的系統(tǒng)對接。一般來說我們總是要等到這個報銷單建好,起碼要有最基本的增刪查改功能(即使沒有頁面也要有后臺的代碼)后才能進入到核心業(yè)務(wù)的開發(fā),這就加大的技術(shù)風(fēng)險,因為我們會很早的發(fā)現(xiàn)問題,但解決這些問題卻遠遠的落后于發(fā)現(xiàn)這個問題,甚至到了開發(fā)的中、后期因為技術(shù)問題在底層上還要一改再改。而使用J-Hi可以很快的進入到業(yè)務(wù)核心的技術(shù)上,因為只要生成,基礎(chǔ)功能就已經(jīng)提供,甚至平臺還為您提供了單元測試用例類,從而使您可以直指業(yè)務(wù)核心,將項目風(fēng)險控制在最低。 5、通過提供通用的組件 平臺提供了很多通用業(yè)務(wù)組件,例如組織機構(gòu)、角色權(quán)限、報表、定時任務(wù)、菜單管理、日志管理、系統(tǒng)配置、附件上傳等等,除此之外平臺還提供了一些純技術(shù)組件,例如樹型結(jié)構(gòu)、java腳本工具、編碼生成器、可選擇性的返回JSON對象等等。這些通用的業(yè)務(wù)組件與技術(shù)組件可以為您在開發(fā)過程節(jié)省很多時間,隨需使用,從而大大降低開發(fā)速度。 6、通過服務(wù)的復(fù)用性提高開發(fā)速度 在介紹平臺的服務(wù)復(fù)用性之前,讓我們來舉個例子。比如您做了一個OA項目其中有一個模塊是報銷管理這個模塊很成熟,您已經(jīng)在OA系統(tǒng)中應(yīng)用了很久?,F(xiàn)在又有一個ERP系統(tǒng),您想把這個成熟的報銷管理復(fù)制到ERP系統(tǒng)中,這樣這個功能就不用在ERP系統(tǒng)中再做開發(fā)了。對于平臺來說這就是服務(wù)的復(fù)用性,我們提供了一整套對服務(wù)復(fù)用性的解決方案,并且有自己的可視化工具。 我們叫它J-Hi整合工具,是用C#做的。它的作用: 1)可視化導(dǎo)入/導(dǎo)出數(shù)據(jù)庫,并同時實現(xiàn)跨數(shù)據(jù)庫,例如您可以在mysql上開發(fā)(導(dǎo)出),開發(fā)完將所有的數(shù)據(jù)遷移到oracle上(導(dǎo)入)。 2)發(fā)布器,可視化將您開發(fā)的模塊或系統(tǒng)自動發(fā)布成一個發(fā)布包(包括數(shù)據(jù)庫、jar、文件[jsp、js、圖片、配置文件等]還包括文件的片段[例如修改web.xml文件中的一部分內(nèi)容]) 3)部署器,將發(fā)布包部署到開發(fā)的工程中,部署的內(nèi)容見發(fā)布器的描述 4)實施器,對應(yīng)的生產(chǎn)系統(tǒng),我們通過FTP,將相應(yīng)的文件與數(shù)據(jù)庫自動部署到生產(chǎn)系統(tǒng)中 7、快速的部署與遷移 也許您正在為客戶要求從SQLServer數(shù)據(jù)庫改為Oracle而感到苦惱,因為這要做大量的數(shù)據(jù)遷移工作,或許您反復(fù)的將修改后的bug部署到生產(chǎn)環(huán)境中而郁悶,我想J-Hi通過它的整合工具為您提供了便捷的方式。具體的實現(xiàn)方式請參見上一節(jié)的介紹 8、開發(fā)人員可以快速的接手別人的工作 因為使用J-Hi開發(fā),生成的代碼與文件的風(fēng)格都是相同的,在哪里寫業(yè)務(wù)邏輯應(yīng)該怎么寫?在哪里要改頁面應(yīng)該怎么做?想要到哪張數(shù)據(jù)庫表或表與類的對應(yīng)關(guān)系?包括生成的類、JSP文件、配置文件的命名規(guī)則都是統(tǒng)一的。因此一個新人加入團隊會很容易的上手并進入工作狀態(tài),即使是修改別人寫過的代碼,也會很快速的定位到相應(yīng)要修改的位置。 9、快速解決需求變更 對于項目開發(fā)來說,項目的需求變更是很正常的事情,對于有經(jīng)驗的項目經(jīng)理來說,如果一個項目從未發(fā)生過需求變更過反而是不正常了:)一但需求變更大多都要改數(shù)據(jù)庫表,如果是已運行很穩(wěn)定的系統(tǒng),這種變更真是要命。J-Hi為此也提供了自己的解決方案,對于簡單表變更,平臺只要對單個實體生成就可以了。如果是復(fù)雜的變更,我們還提供繼承實體的解決方案,也就是說原來的所有代碼與表結(jié)構(gòu)都不變,通過實體繼承J-Hi會從數(shù)據(jù)庫表到j(luò)ava類再到JSP頁面形成一整套繼承關(guān)系,從而保證以前功能的穩(wěn)定性。這個說來好象很玄妙,讓我們舉例說明。比如你有一個部門表,N多信息都與它有聯(lián)系,而且做了很多的業(yè)務(wù)處理,現(xiàn)在客戶要求在部門表中加另一些信息。對你來說可能會為部門表中加字段,由此而帶來所有類的變化與頁面的變化,而這套系統(tǒng)已經(jīng)很穩(wěn)定已經(jīng)用了一、兩年了,開發(fā)人員都已經(jīng)離開了公司,這樣接手的人要讀懂全部代碼才有可能改,這樣就造成開發(fā)速度的大大降低。平臺提供了另一種解決方案:不動以前的任何東西,相關(guān)于在原有的基礎(chǔ)上打上一塊補丁。再做一張表,讓這張表與部門表形成one to one的關(guān)系,而類無論是POJO、DAO、Service都繼承自部門相應(yīng)類作為父類,同時在JSP頁面上也會繼承所有部門的所有元素,這樣就形成了實體繼承關(guān)系,這就好比設(shè)計模式中最基本的“開閉原則”,對于所有的新生功能是開放的,而對于已有的老功能是關(guān)閉的,可以完全把老的功能視為一個黑箱。這樣即能保證已有功能的穩(wěn)定性,又能加入新的功能做為補充。 所謂平臺:該怎么理解, 我覺得從廣義上來講,“平臺”這個詞應(yīng)該是承載事物的環(huán)境或?qū)嶓w。比如我們說某某電子商務(wù)平臺更多的體現(xiàn)在它的環(huán)境上,而當(dāng)我們說觀景平臺時更多的體現(xiàn)在它是一個物理的實體上。不過無論是環(huán)境也好實體也罷,雖然在應(yīng)用領(lǐng)域上會千差萬別,但它們都有一個共同的特性,即平臺是一個載體。讓人或信息工作的更高效,從本質(zhì)來看,好像平臺更像是一種傳統(tǒng)模式的有有益的補充,而非必須要有的。比如以電子商務(wù)平臺為例,沒有電子商務(wù)平臺人們就不能交易了嘛?好像不是這樣。我這樣說并不是說平臺是可有可無的東西,而是說有了平臺會使人家更效、舒適的生活。反過來說,平臺是對我們生活模式的有益補充。既然平臺是一個承載體,所以理論來說它并不應(yīng)該限制人們的習(xí)慣或方式,比如誰說觀景平臺就只能看風(fēng)景,我在它上面吃飯不可以嘛?這當(dāng)然是沒有問題的(雖然這樣做有些不合適,但沒人會說這是不可以的)。 由上述對廣義對平臺的共同性特點來反觀技術(shù)平臺,好像在技術(shù)領(lǐng)域平臺這個詞很模糊java、net說自己是平臺,還有一些以模型驅(qū)動的軟件企業(yè)也說自己的產(chǎn)品是平臺,在國內(nèi)一些幾個開源框架搭建起來帶一些業(yè)務(wù)模型功能的也稱自己是平臺。對此我們應(yīng)該簡單的梳理一下:在技術(shù)領(lǐng)域好像平臺是一個相對的概念,以java為例,java平臺作為底層支撐著上述其它的平臺。 在此我不想評價各個平臺類產(chǎn)品的優(yōu)劣,只是覺得國內(nèi)的平臺做得還不夠好,這種不好不只是指技術(shù)還包括市場的運作模式、開放程序等方面。下面我說一下我夢想中的平臺應(yīng)該是個什么樣子: 1、 平臺應(yīng)該是開源的,既然是平臺就應(yīng)該有一個開放的心態(tài),這樣才能使更多的人在平臺上去開發(fā)相應(yīng)的產(chǎn)品,才會有更多的用戶群。像java語言為什么會遠遠多于其它語言的使用者,其主要原因就是它開源,開放標(biāo)準(zhǔn),從而在框架類產(chǎn)品中形成百家爭鳴的盛況,并且這種趨勢并沒減退還在繼續(xù)——即使Oracle收購了Sun。由此我們可以看出一個開放性的平臺,用戶群足夠多、技術(shù)足夠公開,那么它的發(fā)展方向并不是由一家或幾家大公司可以掌控的,平臺的開放性將是一種趨勢。 2、 平臺應(yīng)該是高效的,平臺的最終目的就是提高生產(chǎn)力降低成本。首先從技術(shù)角度分析,它要足夠的快速,從而降低開發(fā)成本;它要足夠的簡單易用,從而降低學(xué)習(xí)成本;它要適應(yīng)已有的開發(fā)習(xí)慣與管理方式,從而降低風(fēng)險成本;它要有足夠的抽象性與復(fù)用性(即使是以平臺開發(fā)出的產(chǎn)品也是一樣),從而降低重復(fù)勞動。其次,提高生產(chǎn)力降低成本是一個綜合性的問題。平臺應(yīng)該不只是一個開發(fā)工具,應(yīng)該是對應(yīng)項目全生命期過程建立起自己的思想體系與解決方案,從而在整個項目周期內(nèi)的每個環(huán)節(jié)都體現(xiàn)出它作用。例如從項目立項開始應(yīng)該大體分為簽定合同à需求調(diào)研à概要設(shè)計à詳細設(shè)計à開發(fā)à測試à部署上線 (發(fā)布)à需求變更等,好的平臺應(yīng)該是對項目的全過程進行管理,例如現(xiàn)在項目開發(fā)存在一個很大的問題就是文檔與代碼不同步;再如測試用例與測試的覆蓋率很低甚至沒有測試代碼或測試文檔;再再如目前大多平臺都沒有整合打包的部署 工具(跨操作系統(tǒng)、跨數(shù)據(jù)庫、跨應(yīng)用服務(wù)器),一鍵式遠程部署;最后需求的變更也是頭痛的問題,平臺是如何適應(yīng)不斷的需求變化的,大多平臺均沒有合理的解決方案。因此可以看出,平臺是一個綜合性的工程,僅解決一、兩個點上的問題是不足以從根本上提高生產(chǎn)力降低成本的。 3、 平臺的技術(shù)是可選擇的,我們前面說過平臺它只是個載體,至于在這個載體上放些什么,怎么去搭配使用,平臺應(yīng)該為使用者提供各種可選擇的權(quán)力,甚至是可擴展、可插拔的條件。每個使用者都有自己各自的技術(shù)傾向性,這種傾向性有可能是他對某種技術(shù)的熟練程度,或者是出去于具體業(yè)務(wù)所采用技術(shù)的適應(yīng)性。總之平臺應(yīng)該適應(yīng)這種傾向性,它不應(yīng)該拘泥于某種技術(shù)或某個框架,把這些選擇權(quán)開放給使用者,使自己成為一個容器或是一個載體這才是平臺最應(yīng)關(guān)注的東西。 4、 平臺之上的平臺,從本質(zhì)來看平臺還是個實體是個工具,是人與機器的交流,而非人與人的交流。我覺得好的平臺除了人與機器的交流外,更應(yīng)該是一個社區(qū)一個人與人交流的平臺,這樣大家可以在這個平臺實現(xiàn)資源共享,分享勞動成果。只有形成一個開放的生態(tài)社區(qū)或生態(tài)環(huán)境,大多數(shù)人都能融入其中,大家可以在這樣平臺之上的平臺上共同工作,從而實現(xiàn)雙贏,使每個付出的人都有收益。 淺談J-Hi的理論基礎(chǔ) 趨勢 在當(dāng)今的企業(yè)級開發(fā)過程中隨著開源框架的不斷成熟(穩(wěn)定性與可維護性已不是問題),如何快速提高開發(fā)效率,降低開發(fā)成本已成為急待解決的問題。為了解決上述問題各各大型的軟件公司或是有五年以上經(jīng)驗積累的中、小型軟件公司都會有各自的解決方案?;蚴侵贫ㄍ暾拈_發(fā)方案;或是有一個帶一些業(yè)務(wù)的框架;或是有自己的開發(fā)工具。在這個大環(huán)境的驅(qū)動下也不乏一些專做開發(fā)平臺的公司應(yīng)運而生。究其原因,這是一種趨勢,我們認為軟件行業(yè)正在走著一條硬件的老路,在此我們先回顧一下硬件的發(fā)展道路 通過圖不言自明,硬件正是通過是立的單元不斷向更大的集成的趨勢,每個上一環(huán)節(jié)都是下一環(huán)節(jié)的單位,而下一環(huán)節(jié)是上一環(huán)節(jié)更大規(guī)模的集成。從本質(zhì)上來看軟件也與硬件的道路差不太多 Java就好比是硬件的二極管,是所實現(xiàn)所有事情的根源與基礎(chǔ),而目前各各主流框架(如Struts、hibernate、ibatis、webwork、Spring等)都是站足在某個技術(shù)點上對Java功能的二次集成與功能擴展,這就象硬件中的集成電路,即本身是自封閉的各電路之間的通訊與融合還需另外元器件橋接。各主流框架也是一樣它們只關(guān)注于各自技術(shù)領(lǐng)域本身,而不提供任何業(yè)務(wù)模型,框架與框架之間的集成工作也要手動配置。在談業(yè)務(wù)開發(fā)平臺之前說一下SOA,應(yīng)用企業(yè)隨著業(yè)務(wù)系統(tǒng)的增加,各系統(tǒng)之間的互通已是主要問題,而SOA就象internet讓各應(yīng)用系統(tǒng)間不成為信息孤島。而J-Hi平臺本身就定位在“大規(guī)模集成”這一環(huán)節(jié)上,雖然在業(yè)務(wù)開發(fā)平臺這個環(huán)節(jié)中也有很多相關(guān)的產(chǎn)品,但J-Hi與這些平臺在理念上有很大的差別,它的目的是將主流的框架集成到該平臺當(dāng)中,為您呈顯一個開放的(開源)、高效(學(xué)習(xí)曲線)、穩(wěn)定、可復(fù)用、低耦合、通用化并且功能齊全、用戶體驗友好的套件產(chǎn)品。 融合 如果從嚴(yán)格的意義來說J-Hi沒有什么創(chuàng)新點,技術(shù)創(chuàng)新不過是在前人的基礎(chǔ)上多前進那么一小步,因此即便是有創(chuàng)新點也只是對各種技術(shù)的融合。有人說這叫“造輪子”,我們不想造輪子,也不想提出自己的開發(fā)規(guī)范。J-Hi的關(guān)注點主要制力于對優(yōu)秀的框架與技術(shù)進行融合,使其更適合方便的使用。因此J-Hi是開放的,不同與其它以模型驅(qū)動的業(yè)務(wù)平臺產(chǎn)品有自己的開發(fā)規(guī)則、腳本語言與操作方式成為了一個自封閉的系統(tǒng)。又因為J-Hi的開放性,利用的都是主流框架的開發(fā)規(guī)則(這些框架大家都耳熟能詳,基礎(chǔ)知識已不是問題),從而降低開發(fā)人員的學(xué)習(xí)曲線,提高了開發(fā)速度。平臺的開放性也注定了它會不斷的融入進的元素,加入新的框架。不斷的求新、求變、保證性能的穩(wěn)定與功能的完善是它追求的目標(biāo)。嗨!~~,象打個招呼這般簡單實用是它的源動力(J-Hi名字的由來)。 尊重傳統(tǒng)的開發(fā)模式 程序開發(fā)是一種習(xí)慣,看慣了代碼、寫慣了coding,程序員很難接受無編碼的開發(fā)形式,沒了設(shè)計感覺扼殺了自己的創(chuàng)造力。而J-Hi完全尊重傳統(tǒng)的開發(fā)模式,可以說是對傳統(tǒng)開發(fā)模式的有益補充,補充在代碼生成與組件的可移植性上。首先,是生成可以使您從枯燥的復(fù)重勞動中解放出來使您將精力更多的用于把握客戶的業(yè)務(wù)需求;其次,所有代碼無論是生成的還是底層代碼都是對您可見的,您可以充分發(fā)揮你的創(chuàng)造力與創(chuàng)新精神,采用設(shè)計模式寫出優(yōu)質(zhì)的代碼;最后,平臺的組件化更便于您與其它系統(tǒng)的整合(例如您在OA里做了一個報銷管理,您可以通過發(fā)布器方便的將它移植到ERP系統(tǒng)或任何采用平臺開發(fā)的系統(tǒng)中去)。 所有的一切只是為了提高速度降低成本 Hi平臺的宗旨無非八個字“提高速度,降低成本”,在提高開發(fā)速度方面: 1) Hi平臺采用模式代碼生成的方式會生成從數(shù)據(jù)庫腳本、JAVA代碼、JSP頁面到相關(guān)配置文件所有文件,從而使您從枯燥繁瑣的編輯配置文件寫模式代的JAVA代碼中解放出來。 2) 平臺本身提供了很多通用的、可配置的功能模塊(如權(quán)限管理、附件、枚舉管理??)我們稱之為通用組件。因為這些通用組件都是十分常用的,可以說在一個系統(tǒng)中它們無處不在,所以利用通用組件可以大大加快項目的開發(fā)速度。 3) Hi平臺底層是一個設(shè)計良好的框架,可以說融入了當(dāng)今大多數(shù)主流的開源框架。通過向?qū)У男问狡脚_可以提供對不同框架間的一站式快速搭建。 4) 除之以外如何快速響應(yīng)客戶的需求的不斷變化一直是做軟件項目的一場噩夢,而Hi平臺在這方面有一些自己的經(jīng)驗與嘗試,即使是增、改數(shù)據(jù)庫表字平臺本身也有自己的解決方案。 在降低成本方面: 1) 風(fēng)險成本,為了提供開發(fā)速度降低項目的經(jīng)濟成本采用平臺或工具(即使是采用一些開源框架)這已是業(yè)界不可逆轉(zhuǎn)的趨勢。隨著平臺化產(chǎn)品的不斷涌現(xiàn),如何選擇好的產(chǎn)品以降低風(fēng)險已是作為決策層首當(dāng)其沖考慮的問題。在這方面可以說Hi平臺在同類的產(chǎn)品中風(fēng)險是最低的,一、它是開源的沒有任何瓶勁;二、它是代碼生成的所有的一切均可見,J-Hi平臺不發(fā)現(xiàn)制造規(guī)范只是java世界中主流規(guī)范的執(zhí)行者,本身沒有任何技術(shù)陷阱;三、可以說J-Hi平臺是程序員為程序員開發(fā)的一個工具,它的開發(fā)模式與傳統(tǒng)開發(fā)模式完全相同 2) 人力成本,快速開發(fā)本身就意味著人力成本的降低,對于企業(yè)來說通過平臺可以將人員分出梯次從而進一步的控制人力成本。對于個人來說通過對J-Hi開源平臺的學(xué)習(xí)(因為可以說平臺本身就是目前很多主流框架的一個容器),可以快速的提升自己的技能,特別是在企業(yè)級開發(fā)上,從而自身價值的提升。 3) 管理成本,人員的流動尤其是核心人員的流動一直是企業(yè)面臨的棘手問題,而對應(yīng)該問題的最好方式是在項目管理與開發(fā)上的標(biāo)準(zhǔn)化。J-Hi平臺為開發(fā)的標(biāo)準(zhǔn)化提供了一個基礎(chǔ),原因在于代碼生成無論是代碼樣式、風(fēng)格及配置文件的規(guī)則完全相同。這樣就保證無論人員如何流動這套標(biāo)準(zhǔn)是不會變化的。 剖析J-Hi對組件化的理解 按照《計算機百科全書》給組件的定義:是軟件系統(tǒng)中具有相對獨立功能、接口由契約指定、和語境有明顯依賴關(guān)系、可獨立部署、可組裝的軟件實體。由此定義我們來談一下J-Hi Java快速開發(fā)平臺對組件的理解與解決方案。 實際上說到底無非是對組件顆粒的劃分問題,在不同的條件與環(huán)境下組件的作用與功能會有很大差異,其次在定義組件時要保證功能的相對獨立并且可組裝可部署,由此J-Hi將組件根據(jù)用途與范圍的不同劃分為如下四類組件類型:技術(shù)組件、實體組件、業(yè)務(wù)組件、系統(tǒng)組件,它們之間的關(guān)系是逐級遞進,互為基礎(chǔ)的。
在我們在深入探討之前,先來簡單的解釋一下上圖中各種組件類型之間的關(guān)系。比如一個OA系統(tǒng)我們就可以把這理解為一個系統(tǒng)組件,而多個系統(tǒng)組件(倉儲系統(tǒng)、人力系統(tǒng)等)可以動態(tài)搭建更大的應(yīng)用系統(tǒng)(ERP)。每個系統(tǒng)組件下會有多個業(yè)務(wù)組件,例如在OA系統(tǒng)下會有報銷單、會議管理等多個業(yè)務(wù)組件。因為大部分業(yè)務(wù)組件之間一般都是松藕合的,所業(yè)務(wù)組件可以無縫的遷移到其它的系統(tǒng)組件中,即實現(xiàn)業(yè)務(wù)組件可復(fù)用性。而在一個業(yè)務(wù)組件下會有一個或多個實體組件夠成,我們還以報銷單業(yè)務(wù)組件為例,在報銷單最少會有報銷單及報銷單明細兩個實體組件,一個實體您可以理解成與數(shù)據(jù)庫對應(yīng)的一張表,實體之間可以繼承、一個實體可以有多個子實體。但實體不僅僅是數(shù)據(jù)庫表,它包括從頁面到數(shù)據(jù)庫表之間的全部代碼實現(xiàn)同時包括CURD所有操作的功能單元。對于實體組件我們會在后面詳細討論。最后是技術(shù)組件,在J-Hi中技術(shù)組件可以說是一個抽象的概念,一個技術(shù)組件就是一個技術(shù)功能單元,它可能是一套生成模版,一個框架的支持,一套API(比如對短信、全文檢索的支持等) 實體組件:J-Hi將一個實體組件定義為一個集合單元,它不僅僅包括數(shù)據(jù)庫表還包括對該數(shù)據(jù)庫表的基礎(chǔ)操作(增、刪、查、改);包括前端的展示面頁;包括該實體的權(quán)限、菜單、配置信息;還包括它與其它實體的交互操作。當(dāng)然一個實體組件顆粒度還是太小,還不能完整的描述一個業(yè)務(wù)功能。但實體組件相對來說有一定的獨立性,可以集成一個集合單元,J-Hi就是以實體組件為基礎(chǔ)實現(xiàn)更大粒度的集成,從而實現(xiàn)對一個完整業(yè)務(wù)的描述。 業(yè)務(wù)組件:實際上一個業(yè)務(wù)組件J-Hi將它對應(yīng)于一個服務(wù),服務(wù)可以認為是一個業(yè)務(wù)功能模塊,用以描述完整的業(yè)務(wù)模式,具體相對的業(yè)務(wù)獨立性。在服務(wù)內(nèi)代碼間是高聚集的,因為一個服務(wù)就是一套完整的業(yè)務(wù),在設(shè)計服務(wù)時應(yīng)盡最大限度的降低服務(wù)與服務(wù)之間的藕合度。因為在這個樣一個理論基礎(chǔ)上去設(shè)計,就可以實現(xiàn)業(yè)務(wù)組件無縫的在各系統(tǒng)之間的可移植性。因為組件的定義還要可以獨立的組裝與部署,因此我們開發(fā)平臺的附屬性產(chǎn)品——Hi平臺產(chǎn)品集成工具,它主要是由發(fā)布器與部署器組成,以更方便的實現(xiàn)業(yè)務(wù)組件的遷移。 開發(fā)發(fā)布器與部署器的目的就是通過可視化的方式,實現(xiàn)跨數(shù)據(jù)庫數(shù)據(jù)與跨應(yīng)用系統(tǒng)的業(yè)務(wù)組件遷移??梢詫I(yè)務(wù)組件看作一個獨立的業(yè)務(wù)單元,可以無縫的集成于任何以J-Hi平臺開發(fā)的項目中去。從而真正達到隨需組合,動態(tài)搭建實際的業(yè)務(wù)系統(tǒng),真正的實現(xiàn)業(yè)務(wù)組件的復(fù)用,降低不必要的重復(fù)開發(fā)。 系統(tǒng)組件:從業(yè)務(wù)功能上來看系統(tǒng)組件不過是多個業(yè)務(wù)組件的拼接,更大一級的業(yè)務(wù)封裝。理論上系統(tǒng)組件與系統(tǒng)組件之間應(yīng)滿足絕對的隔離性,即使是有通信,應(yīng)該也是通過第三方來進行數(shù)據(jù)交互(常用的解決方式有兩種一種是中間數(shù)據(jù)庫;第二種是webservice)。但如果是基于平臺開發(fā),這種無謂的工作量可以降低很少,甚至可以不需要第三方的交互技術(shù)。只要保證兩個系統(tǒng)間的通信接口就要以輕松實現(xiàn)。系統(tǒng)組件的遷移也可以通過發(fā)布器與部署器來實現(xiàn)。 技術(shù)組件:從技術(shù)角度來看,J-Hi與其它的技術(shù)組件差別不大。無非是基于平臺再開發(fā)一些技術(shù)組件,比如對 SpringMVC、SpringJDBC、DB2數(shù)據(jù)庫等的支持,頁面端也會再集成象DWZ或simpleframework,我們也會再提供更多的頁面端的生成模版,以此類推,平臺的技術(shù)組件會在技術(shù)的不同層面進行擴展。但與其它的技術(shù)組件不同之處在于,實現(xiàn)類似于插件一樣的可插拔,隨需織入。 對“J-Hi”Java快速開發(fā)平臺問題的答疑解惑 J-Hi平臺的市場定位與目標(biāo)用戶是什么?競爭對手又有哪些? J-Hi自 誕生 之日起就把目標(biāo)定位在如何解決開發(fā)的高效性上,這是我們的初衷也是我們的最終目的,對于高效性J-Hi對此的解決方案是: 1)易于上手,學(xué)習(xí)成本低:J-Hi沒有自己的標(biāo)準(zhǔn),J-Hi是標(biāo)準(zhǔn)的執(zhí)行者與推廣者。因此我們采用的都是大家很熟悉的成熟技術(shù),如spring、hibernate、struts、ibaties、webwork 2)代碼生成的方式:說到底J-Hi是程序員給程序員開發(fā)的工具,因為只有這樣才會使項目開發(fā)更可控(從技術(shù)本身來說沒有萬能的工具,只有coding才是萬能的)。J-Hi是想使程序員從千篇一律而又枯燥繁瑣的重復(fù)代碼中解放出來,通過代碼生成的方式由生成器全部生成,而使開發(fā)人員把精力更多的去放在關(guān)注業(yè)務(wù)本身上。 3)平臺的底層支撐:從技術(shù)上我們在J-Hi與其它框架的整合上做了一些工作,目的是使開發(fā)人員更方便的去調(diào)用,使代碼編寫起來更高效。而且不同框架的組合是動態(tài)搭建的,從而使您有更多的選擇性,更適合開發(fā)人員的技術(shù)掌握情況。從業(yè)務(wù)上J-Hi提供了一些抽象的業(yè)務(wù)組件,比如組織機構(gòu)、權(quán)限、菜單、任務(wù)調(diào)度、枚舉(數(shù)據(jù)字典)、日志等等。 4)組件化模式:J-Hi認為每個服務(wù)就是一個業(yè)務(wù)組件,業(yè)務(wù)組件可以在不同的系統(tǒng)之間來回遷移,從而實現(xiàn)業(yè)務(wù)組件的復(fù)用性。從另一方面來看,也更有利于公司的技術(shù)與業(yè)務(wù)積累,不用做重復(fù)的工作。對于組件化我們會提供完整的文章后續(xù)討論。 5)基于使項目管理更規(guī)范,從而使項目的開發(fā)更高效:因為代碼生成所有的層次結(jié)構(gòu)與編寫方式都是規(guī)范的(即使是一個屬性名),因此更方便開發(fā)人員的相互溝通與閱讀,也是因為這個原因從而使人員流動的風(fēng)險大大降低(繼任者可以很快的讀懂別人寫的代碼,很快的投入到工作中去。誠然新來的人還要了解業(yè)務(wù),但對于開發(fā)人員來說他只要關(guān)心自己一部分的業(yè)務(wù)需求,而不用整個系統(tǒng)去了解需求)。 6)現(xiàn)在項目開發(fā)最大的問題是開發(fā)與文檔的不同步:目前我們在這一部分已有自己的解決方案,但因為精力與資源有限還沒有形成真正的產(chǎn)品化的東西L 對于J-Hi來說目標(biāo)用戶主要是中小型及大型但技術(shù)積累不足的軟件公司和系統(tǒng)集成商。說到競爭對手,因為J-Hi是開源的,既然開源就應(yīng)該抱著一個開放的心態(tài)我們沒有真正的競爭對手。如果真說有的話,我想應(yīng)該是想舍棄程序員實現(xiàn)非編碼開發(fā)的產(chǎn)品吧! J-Hi的有何創(chuàng)新點?優(yōu)勢又在哪里? 在說到創(chuàng)新點之前我想先說一下我們對創(chuàng)新的理解,什么是創(chuàng)新,我們覺得不過是在前人的基礎(chǔ)上前進了那么一小步,大部分還是吃著前人嚼過的饃。我覺得Spring 的AOP在目前的主流技術(shù)里是最有創(chuàng)新的,但分析到最底層時也不過是動態(tài)代理(不過能運用到如此程度也不得不讓人敬佩的五體投地)。嚴(yán)格意義的說平臺沒有創(chuàng)新只不過是十多年開發(fā)的經(jīng)驗積累,即便是有創(chuàng)新也只是對各種技術(shù)的融合,也是通過這種融合使使用者有更多的選擇性。目前我們正在做與國內(nèi)優(yōu) 秀框架的融合工作,包括DWZ和simpleframework。以后我們也會秉承這種思想,融合更多更優(yōu)秀的東西加到J-Hi之中去。 對于J-Hi你們想怎樣運作?是商業(yè)運作嗎? 是的,我們是商業(yè)。原因很簡單在中國的開源大環(huán)境不好。象在國外一般都會有一些基金的支助或是代碼捐贈,但中國現(xiàn)在我還沒發(fā)現(xiàn)。大家都是興趣,是對編程的一種熱愛,而且大多都是兼職在做。我覺得大家的出發(fā)點都是好的但是可操作性太差,因為沒有商業(yè)運作就很難提供優(yōu)質(zhì)的服務(wù),沒有好的服務(wù)也就抑制了產(chǎn)品的推廣,沒了用戶群產(chǎn)品就不會有旺盛的生命力。我最大的愿望是:中國的開源團隊聯(lián)合起來! 那你們想如何通過平臺盈利呢? 現(xiàn)在我們想到的主要是通過服務(wù)與技術(shù)支持,當(dāng)然J-Hi以后要走的路還很長,以后還要很多的事情要做,比如基于平臺的增值組件,我們把增值組件劃分為三種形式: 1、 開源組件:比如CRM、CMS、進銷存等 2、 免費組件:比如:SpringMVC、SpringJDBC等 3、 收費組件:比如:報表系統(tǒng)、在線會議、工作流等 這么多的工作你們幾個怎么可能完成呢? 我們的想法是J-Hi不只是一個開發(fā)工具,更是一個開放的生態(tài)社區(qū),希望大家都能融入進來,也許前期我們會有一些投入,但我們的目的是想讓更多的人加入到這個社區(qū)中來,大家共同工作,從而實現(xiàn)雙贏,使每個付出的人都有收益。 你們的工作流為什么不開源? 是就這個問題有很多的朋友問過我,有人還說我們是假開源偽開源。也許他們說得也有道理,但中國的開源環(huán)境我們也是沒有辦法的事??偛荒莛I著肚子做開源吧,生存是目前擺在我們團隊最大的問題,如果生存都成問題,那還怎么可能把事情做下去呢。所以對此還請大家諒見,工作流開源對我們來說只是遲早的問題,而不是想著死抱著不放。
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|