一种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,