一种Java快速开发框架的设计和实现

  • 格式:docx
  • 大小:33.33 KB
  • 文档页数:7

一种Java快速开发框架的设计和实现

陈志武(zwchen,)

MiniFramework和业界已有的框架有什么专门的地方吗? ..................... 错误!未定义书签。

你感觉MiniFramework能够真正提高生产率吗? .................................... 错误!未定义书签。

MiniFramework有哪些核心思想,或是原理? ......................................... 错误!未定义书签。

一、 元数据编程 ................................................................................... 错误!未定义书签。

二、 领域对象的表示:Map和List .................................................. 错误!未定义书签。

3、 Map和List对象的展现技术:JSTL ....................................... 错误!未定义书签。

4、 Map 对象持久化技术:Hibernate ........................................... 错误!未定义书签。

五、 对象数据查询技术:Spring JDBC Framework ....................... 错误!未定义书签。

六、 业务对象BO的CRUD抽象 ..................................................... 错误!未定义书签。

7、 敏捷开发进程 ............................................................................... 错误!未定义书签。

你在MiniFramework当选择框架的依据是什么? .................................... 错误!未定义书签。

MiniFramework的架构,你能够大致描述一下吗? ................................. 错误!未定义书签。

用MiniFramework开发,它的驱动模式是什么? .................................... 错误!未定义书签。

MiniFramework此刻很完善了吗? ............................................................. 错误!未定义书签。

你也明白,公司都是利润驱动的,MiniFramework对公司提高利润有那些帮忙呢?错误!未定义书签。

开发演示 .......................................................................................................... 错误!未定义书签。

这次,我采纳对话,FAQ问答方式陈述,因为我感觉它更易从用户角度去试探问题。

MiniFramework:确实是我指的框架,或说一种思想,Mini的意思是精悍,也确实是说开发量小,代码少,开发快。

RoR:Ruby on Rails用Ruby语言写的Web开发框架,超级有潜力,号称比Java开发快10倍。

SSH:Struts(Webwork)+Spring+Hibernate,JavaWeb开发最流行的组合。

MiniFramework和业界已有的框架有什么专门的地方吗?

从Java EE(J2EE)分层来划分,有分层和整合框架,譬如表示层的Struts,Webwork,JSF,持久层的Hibernate和IBatis,JDO。但整合的有Spring和PicoContainer容器。

从开发角度来讲,有整合和快速代码生成,前者如AppFuse和SpringSide,后者如JET

Emitter。我以为,这二者都没有去解决软件开发的复杂性,更多的只是减少了一点敲代码的时刻,而不是减少明白得代码的时刻,而后者远远大于前者。

MiniFramework综合了上面二者,既是对分层各框架的整合,也是对框架的整合,可是,它会让你的代码量减少到原先的30%左右。更少的代码意味着能够更快开发和变更,更易实现敏捷进程。它是技术和进程的结合。

MiniFramework框架用到了Webwork+Spring+Hibernate,可是,关于开发人员,它们更像是封装好的类库,这意味着你需要了解它们很少,我只用其中我以为最值得的地址。而且是你会发觉新的用法,就犹如Tapestry框架在html标签中设指令。

MiniFramework是严格遵守MVC职责分离和分层架构的,而且很多都是自动的,譬如透明持久化,页面输入获取。遵循上面的约定,是因为我让它们成为项目开发最正确实践。

你感觉MiniFramework能够真正提高生产率吗? 高质量的软件,有三个因素:Team、Technology、Process:

Team:MiniFramework能够让开发人员躲开技术引发的复杂性,而专注于业务,而且节省培训本钱。

Technology:MiniFramework整合了流行框架最有价值部份,譬如Spring的事务处置和IoC,Hibernate的透明持久化,Webwork的control-view关系配置。

Process:MiniFramework让J2EE快速开发成为可能,改变了J2EE不适合敏捷进程的论断。敏捷,意味着快速开发,快速变更,快速响应需求。

MiniFramework将会对整个项目开发周期和流程都有专门大的改良。

可是,客观的规律,如Brooks 20连年前所说:“没有银弹”。MiniFramework只能解决次要复杂性(Accident),而不能解决软件本质(Essence)复杂性。

原文如下:没有任何技术或治理上的进展,能够独立地许诺十年内使生产率、靠得住性或简练性取得数量级上的进步。

我以为,研究快速开发,必需先了解那个“没有银弹”理论。Brooks先生给咱们提供了一些解决方案,很多此刻都在用:

技术方面:

➢ Ada和其它高级语言

➢ OOP编程

➢ 人工智能和专家系统

➢ “自动”编程

➢ 图形化编程和IDE工具

另外还有一些解决方案,我以为此刻都在流行

➢ 购买构建 vs 自行开发

➢ 需求精炼和快速原型

➢ 增量开发

➢ 优秀的设计人员

可是,大多数企业应用,专门是外包项目,软件的本质复杂性并非大,因为应用软件,专门是商业软件毕竟不同于系统软件,技术往往不是全然的障碍,而是背后的商业需求(如何才能够最大程度盈利?譬如业务流程再造)。也确实是说,咱们能够躲开“没有银弹”。

关于语言对开发的阻碍,OO教父Martin Fowler先生的“督导”和“授权”观点,是考虑开发语言选择的重要依据: 。

MiniFramework兼顾了这两种。

高质量软件 Team

Technology Process MiniFramework有哪些核心思想,或是原理?

1、 元数据编程

这是MiniFramework中减少代码量和快速开发的一个很重要方面。

MiniFramework中有两类元数据,都超级简单:

➢ Map和数据库映射 同时咱们会躲开Hibernate那种复杂的关联映射。而且这种映射能够自动生成。

➢ JSP页面表单元素类型映射 因为http GET和POST提交数据都是文本key-value键值对,它们和数据库字段类型不匹配,咱们必需还原其本来类型,但那个进程是自动化的。我打算开发eclipse插件,让那个映射代码也自动生成。

➢ 所有容易变更的信息,譬如sql,页面导航,对象实例引用…

2、 领域对象的表示:Map和List

MiniFramework里面没有具体的对象,譬如Account,Department,Book,而是以另外一种形式表现:Map,这是它最核心的思想。它能够实现所有具体对象的功能,包括对象图。而且易扩展、灵活。

什么缘故Map这么关键呢?因为它是领域模型的载体,也是自动持久化的目标对象。了解JSON、YAML和REST对MiniFramework中的map载体明白得很有帮忙:

REST:区别于Web Services SOAP协议的另外一种轻量级格式,更是一种Idea。REST和ajax协作开发,简直是绝配。REST是以后Web Services的进展趋势,更偏向于SOA,因为REST是以Resource为导向,而SOAP是以Action为导向,而且简单、易用。

JSON:这是ajax流行起来后,一种轻量集的数据互换格式。参考

YAML:在Ruby on Rails和Python这种动态语言最经常使用的一种文本数据格式,类似于Java最经常使用的XML,但更适合人读。参考:

从技术的角度考虑,所有的MIS系统,无非是CRUD增删改查,而CRUD的对象,一种载体形式,就能够够是Map和List(Map的复数形式)。

关于数据流的处置,能够参考《面向模式的软件架构:卷一》中的“管道模式”,异曲同工。

固然,复杂的MIS就不只是数据流,更偏向于业务流,譬如ERP中的物料治理,SCM的进销存,OA中的工作流。但它们底层都需要数据流支持。

3、 Map和List对象的展现技术:JSTL

固然,我并无提出什么新东西,我只是提出一种新用法。JSTL是map和list的最好展现方式。如通过具体对象,或是Map对象图,都能够实现。但后者很少人用,因为所有的教程上面都会演示对象模型,用map是忌讳,不OO嘛。 Really?

对象展现技术和对象载体是两个超级关键的部份,关于对象展现的idea,能够参考:

OGNL:这是xwork里面对象属性存取的核心, OGNL也是EL(Expression Language)的一种实现方式。

Associative model of data:不同于关系模型和对象模型的另一种idea。

4、 Map 对象持久化技术:Hibernate

几乎咱们所见的大多数Hibernate用法,都是持久化POJO,也确实是JavaBean,