假如我要盖一件小平房(做一个网站)
- 买一块地(租一台服务器或虚拟主机)
- 申请一个门牌号码(购买一个域名)
- 买材料,请几个工人,开始盖房(准备所需要的开发工具,搭建开发环境,找几个程序员)
- 开始盖房子(编写程序代码)
- 房子盖好了,东敲敲西敲敲看牢不牢固(自己测试一下功能都齐全了没)
- 如果有问题,比方说卧室不够透气,把卧室的墙多开一扇窗户(哪个页面有问题,删除重新写一个)比方说墙里面的电线发现有问题,把墙凿开,换一根电线。
- 完工,交付使用。
现在我要盖一栋大楼(开发一个企业级项目)
本质上还是盖房子,但是如果就像盖小平房一样的去做。结果是怎样的呢?现在盖到第 18 层了,突然说第 5 层内侧的电线堵住了,第 5 楼以上都没有电,于是得把 5 楼以上的全拆了,拆到第 5 楼,把墙凿开,把电线换一根,再继续往上面盖。
相信没有哪栋大厦是这样盖出来的。于是就有了建筑师(软件架构师)这个职位,有了建筑设计学(软件架构学)。
盖大楼,步骤是这样的:
- 地还是要买,不过得做土地勘察,样本采集,看地质如何。
- 然后得画图纸,这图纸一画就是很久,要考虑到整栋大楼的方方面面,哪些墙可以供拆除,就在里面放电线水管什么的。哪些是主力墙不能拆除。这里的学问太多,无法一一说清楚。
- 然后就是打地基。这是相当重要的环节,地基没打好,整栋楼都不稳固。然后就是用钢筋水泥等,打造整栋大楼的框架。让房子非常坚固。
- 再后才是逐步完善大楼内部,一层层的砌砖,一间间地粉刷,装修。就算某一块出了问题。去掉或者修复那一块就行了,整栋大楼屹立不倒,稳稳当当。
企业级项目中,也是同样的过程。
先用 UML 建模,建立数据库模型,项目的分层架构设计,使用框架让整个项目健壮起来,动一处而不会牵动全身。
Struts、Spring、Hibernate 都是为了让项目更健壮而产生的。如果只是要做一个小网站,我觉得很没有必要使用这些东西,就 ASP,PHP 一定能做得更快,就像盖小平房一样。就算要用Java,就用 JSP+JavaBean 就行了。如果是开发企业级项目,ASP、PHP 是绝对不能跟 J2EE 相提并论的。
Struts 是 MVC 框架,它的作用不是让人能干什么(它能做的事 JSP 都能做),它的作用是不能让人干什么。例如:设计师要砌墙工人在哪里砌砖,他就不能去别处砌。给程序语言严格的规范,让它按照规范走,不能随心所欲地去编代码。这样可以保证项目的高度一致性。
Spring 是 J2EE 轻量级框架。它的做法好比把项目分成一个个地组件,哪一块出了问题,换掉那一块就是了。别的地方根本不用动。就好像我刚刚举的第 5 楼电线出了问题,就在第 5 楼把墙凿开,换一个电线即可,不用担心第 5 楼的墙凿开上面的会塌下来。
Hibernate 是 ORM 工具,不能称之为框架,它至少有一个好处,在项目做移植数据库的时候,不用切换数据库层的代码。当然它的好处很多。
不过这些问题,都只有在大的项目开发中才会用到。所以如是是小项目开发,不建议使用J2EE