最近很多網友問我同樣的問題,那就是J-Hi與其它的平臺類產品有什么區別?它有哪些獨特的特點。實際在我看來J-Hi與目前任何其它平臺類的產品的出發點或稱之為初宗都是相同的,那就是想解決如何使開發更快速、更高效,如何降低項目的成本(不只是快速開發所帶來的成本降低,也包括項目的管理成本)。
總的來說,目前市場上的平臺類產品所采用的核心技術無非兩種,一種是模型驅動(后臺有一個模型引擎來負責解析與計算這些業務模型從而得到預期的運算結果);另一種是代碼生成(按照定義的模型通過生成器生成全部源文件)。從技術本身來看,這兩種技術都不算什么新鮮東西,只是隨著計算機運算能力的提高,相關技術的不斷成熟,使這兩種技術應用于業務開發平臺成為可能,因此單純從技術先進性來看,那我覺得都沒有什么在技術可以稱道的地方。反之,平臺它是多種技術的融合體,尤其是業務開發平臺不只包括技術本身還會包含一些通用的業務以及一些開發工具。因為這些的差異,就形成了各類平臺產品的差異性。在此讓我們來分析一下J-Hi Java快速開發平臺自身的特點(即與其它平臺的不同之處):
快速的按需動態搭建
目前平臺支持的框架有:webwork、struts2、spring、hibernate、ibatis2、ibatis3,對于這些框架您可以通過可視化(J-HI Studio,eclipse插件)的方式隨意組合,通過工程創建向導,自動化的按照你所選擇的框架快速的動態搭建起開發工程。我們之所以將J-Hi做成多框架動態搭建,主要是考慮到不同企業的開發團隊對技術的傾向性會有很大差別,比如對于ORM有的人就喜歡hibernate,而有的人就覺得hibernate太強硬,喜歡用半自動化的ibatis。J-Hi基于這個目的為開發者提供了更多的可選擇性。在此要注意對于平臺多框架的集成并不象一般意思上的集成(即幾個框架拼接在一起就可以象appfuse一樣),因為平臺的集成還要包括很多通用業務并且與數據庫表是有關系的(一般搭建多框架是沒有業務的所有的東西都要由你親自去開發,而平臺會有很多的業務已經預留在平臺中)。舉個例子:比如安全管理,這是平臺的一個通用業務包括角色、權限等。在切換到不同的框架比如struts或webwork;hibernate或ibatis時,平臺的底層要自動的適應這種變化,這是有一定的創新點的J。當然我們以后還會集成更多、更優秀的框架在平臺之中,比如SpringMVC,SpringJDBC等等,在數據庫端我們也會再多支持一些數據庫,當然集成數據庫也不是傳統意義上的只是一個數據庫連接,而是針對不同的數據庫差異會做不同的方言,不同的數據庫腳本還要有相應的生成模板等等。
因此你會發現快速按需動態搭建,并不是傳統意義上的多框架集成那么簡單,而是對應每一種框架(數據庫)平臺都會提供一套完整的解決方案。總之多框架集成對于J-Hi來說,是牽一發而動全身的事情,變動一個框架,包括每一個頁面,每一個java類,每一個配置文件都要隨之而動態的變化。因此它是系統級的工程而非簡單的多個框架拼接。
完整而系統的生成方案
代碼生成或生成器這實際上在十年前就已經有的東西,無論是實現原理還是具體的工具都不是新鮮事物。J-Hi之所以將代碼生成也算作自己的特色,是因為它的完整性與系統性。從完整性來看,J-Hi的生成是一套含蓋從數據庫底層一直到頁面端全部的解決方案,包括數據庫表;權限、菜單、多語言等相關基礎數據;java類文件;JSP、js文件;相關配置文件等等,因此保證了生成即可運行,從單元體上來看生成文件是完整的,是可獨立運行的。從系統性來看,生成的文件是隨著你選擇的框架不同而不同的,生成的基礎是隨著框架與數據庫的差異而隨需變化,系統的解決了生成器的僵硬性,從而靈活的適應開發環境。因此J-Hi的生成方案是系統的,是適應不同框架與數據庫的生成方案的。
平臺到底生成了些什么?
組件化
J-Hi把組件劃分為四類,技術組件、實體組件、業務組件與系統組件,具體內容請參見平臺組件化