original link:
struts+spring+hibernate是怎样的架构?
我是java初学者,只学了点语法.现在看到很多网站采用struts+spring+hibernate的架构?看了点资料,说这3个都是框架,请问是不是就是类似.netframe这样的东东,也就是封装了一些函数和类等?java做网站只用jdk不可以吗?为什么要3个呢?这3个是不是就是"简化的jdk",可以这样理解吗?jdk包含很多函数,而这3个各只包含部分函数
问题补充:
我用php,asp,.net开发过多年网站了,就是不知道java怎么这么多东西
是不是不装这3个东东,写代码时部分函数就会编译出错?
举一个小例子回答楼主的问题。
加入我要盖一件小平房(做一个网站),我需要做的是:
1:买一块地。(租一台服务器)--1天
2:申请一个门牌号码(买一个域名)--1天
3:买材料,请2、3个工人,开始盖房(准备所需要的开发工具IDE什么的,搭建测试环境,找2,3个程序员--刚毕业的大学生就可以了)。--1周
4:盖房(敲代码编程)--1到3个月。
5:房子盖好了,东敲敲西敲敲看牢不牢固(自己测试一下功能都齐全了没)--1周。
6:如果有问题,比方说卧室不够透气,把卧室的墙多开一扇窗户(哪个页面有问题,删除重新写一个)。比方说墙里面的电线发现有问题,把墙凿开,换一根电线。
6:完工。
总共耗时2-4个月左右。
现在我要盖一栋大楼(开发一个企业级项目),本质上还是盖房子,但是如果就像盖小平房一样的去做。结果是怎样的呢?
盖到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工具,不能称之为框架,它至少至少有一个好处,在项目做移植数据库的时候,不用切换数据库层的代码。当然它的好处很多。笔者在所有的开源技术中,也最钟情对Hibernate的研究。
不过这些问题,都只有在很大的项目开发中才会用到。所以如是是小项目开发,不建议使用J2EE.