最近很多网友问我同样的问题,那就是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把组件划分为四类,技术组件、实体组件、业务组件与系统组件,具体内容请参见平台组件化