两年的技术经历,在J2EE上疑惑

06-11-29 四只羊
              

本人工作三年,做了两年的技术和一年的需求分析,停止了一年的技术探索后,再回头来去了解,却发现两年的技术经历是如此的不扎实,我问自己几个最常用的概念,但我却疑惑了:

1.我们谈论了J2EE,但究竟什么是J2EE?它是规范吗?它是技术吗?它是在什么样的背景下出现的,为了解决什么?

2.我们也谈架构?但究竟什么是架构?架构出于什么目的?架构的目标是什么呢?

3.我们频繁的使用Struts,但它帮我们解决什么呢?可能有人会说它是MVC的实现,但这不是问题的答案.MVC它又解决了什么呢?

望各位能够指点一二

              

banq
2006-11-30 16:10

1. J2EE是规范,是一种JSR标准,有详细文档,阐述J2EE提供哪些功能,可以下载这样文档,当然还有一些代码接口,这是典型Java世界中的框架代码+标准文档形式,这是只有自由世界才有的规范,在微软MS世界你是绝对不会看到的,所以,从微软转过来的,会晕,会不适应,不能再按照他们以前的经验来看待自由的新世界。

2.架构是就软件平台的搭建和设计规划,目的是实现软件最大的可维护性和可拓展性,延续软件的生命,就象人生下来,整个架构都有了,虽然一些器官不能用到(例如生殖器官),但是一生下来还是有这些器官,这就是架构设计的优势,没有架构设计的软件是看不到明天,生下的小孩就不会有生殖器官,因为他认为小孩不需要,但是他没有看到小孩20岁以后的未来。

架构就是要有预见性,特别是Java世界,技术流派众多,优劣共存,让人吃药的技术比比皆是,不象微软世界,有微软这个专制强权的架构设计者和提供者告诉你用什么,除此之外别无选择,在Java自由世界,你可能不小心走上一个不归路,软件架构一旦错误,就象出发的方向发生问题,南辕北辙成语就是说这个意思,花再多精力再多钱,再强的人都没有用,项目照样失败。

所以,在Java世界选择技术,就象女孩子到自由市场淘货,必须冒被骗失败的风险,但是其中乐趣也是不言而喻的,你会成为技术专家,当然,如果你想很多找到合适的架构设计,那么借助外力,象J道都提供这样架构设计服务,可以在短时间介绍一些这个自由市场哪些东西是性价比好,值得买,找个有信誉的内行当地人做咨询,就是这个道理。

目前Java世界,架构设计主要是框架选择,如果你的团队非常弱,可能只会基础的Java编程,那么选择强制性框架就比较好,这样可以在保证软件质量情况下,不让不太懂的人胡作非为,破坏软件整体的可维护性,好的框架甚至只需要XML配置就可以,这样,OO能力差一些人,就不需编程代码,配置配置XML就可以,这样,通过架构设计,可以充分发挥现有人员的长处,克服他们的短处。

所以,为什么过去数据库专家DBA年薪20万,而现在架构师年薪20万。而且DBA年薪20万已经成为过去时,因为人们已经发现,再好的数据库设计,只是数据库设计,不是程序语言设计,更多维护烦琐和复杂工作我们是需要修改的程序代码,所以,大家才开始重视应用程序代码,并且发现程序代码控制比数据库设计更难控制,所以有了OO体系专门对付程序代码,进而有了框架,从而诞生比DBA更重要的architect了。

3.关于struts重要性,还是必须从程序代码可维护性来讲,也就是从OO角度讲,Struts能够通过MVC模式将表现层进行细分,实现表现层内部各个细分部分的最大解耦,然后,Struts也可以将页面离散无规律的数据转变为对象,供业务层服务,也就是Struts表现层实际是业务层的服务者,为其提供对象化的枪支弹药,而业务层则可以围绕这些对象实现对象化编程,从而实现更好的可维护性,Evans DDD对业务层进行细分,这些都是基于对象基础,当然持久层不用说,和表现层一样也是业务层的服务者,为其提供对象化的枪支弹药,不过这些对象是从数据库里拿来的,是从一个非对象化,离散的、关系型的数据库拿来的,Hibernate等框架必须将他们转为对象,给业务层使用。

所有这些框架,都是保证我们业务逻辑完全OO,这个前提是:你相信只有OO才是目前实现软件最大维护性和拓展性的适当方式,虽然可能不是最好的,但他是目前最合适的,否则全世界软件工业不会花这么多力气在OO上了。

因为我们国内将软件看成数学,软件论文实际是数学公式论文,可以发生了软件研究方向的偏离,没有走上OO正确研究方向,这样导致很多程序员学校毕业后,根本没有OO基本意识,甚至有人抵触OO,我从出版社内部销售资料看到:Foxpro等数据库书籍名列销售前列,我是欲哭无泪,中国人的软件误区中还要走多少年。

所有这些,必须从我们教育体系寻找,这里面话题太多,我想其中一个问题还是:中微软毒太深,因为微软已经帮你做了架构的事情,你唯一要做的就是拿来某个软件,按照其说明书做,但是为什么这么做,几乎没有人去研究。

长此以往,很多人就根本没有了去探索的想法,安之罗素了,然后开始研究数学了,认为数学越奥深,软件就好,数学只是算软件服务的众多专业领域的一个领域,软件可以服务于管理专业、物流专业、银行专业、财会专业等等,软件可以服务这么多领域专业,那么软件本身应该如何做才是专业的呢?就是软件的可维护性和可拓展性,你必须活得够长,为你的主人服务,如果你一开始没有生殖器官,那么20岁以后你不是没用了,人就此绝种了?

软件绝种就是重新开发一套新的系统,这样做,对它所服务对象的杀伤力是很大的,国外大型企业信息主管已经深有体会:硬件落后了,我可以花更多钱替换,但是软件不能彻底替换,只能在其原来基础上延伸,但是如果发现这个软件不能延伸,就是请bill gates来,也没有用,那么这种损失是无以伦比,不能用金钱衡量的,这就是软件架构失败带来的损失。

因为我们国家长期来都是国有经济,能够活上百年的民营企业不多,国有银行等大型企业因为开始就请外国人做咨询,虽然也有彻底换软件的痛苦,但是有强有力国外厂商这些过来知道,弯路就是有不会太大。很多大型企业也是近期才上MRP或者ERP,民营企业基本都靠低廉的劳动力存活,不是靠管理,所以软件对于他们没有起到重要作用,所以,因为软件架构问题暴露的社会问题不会大规模出现,但是,如果不重视,迟早会出现。

我本人因为做得比较早,经历过因为不注重软件架构,导致方向错误,最后项目失败了才明白得经历。所以希望通过J道这样地方,呼吁更多人重视架构。

但是,现在又有一种现象:有些人嘴上架构框架很熟悉,但是实现起来代码还是乱糟糟,根本不是OO,这就象练武功的人,如果不经过有经验老师的点拨,靠自己看书,就会十分业余,具体表现就是嘴上功夫行,实际做起来不行,也就是他没有将理论和实践联系起来,就差这个窗户玻璃纸捅破,需要别人帮助,所以我提供培训咨询服务,没有教授高深知识,就是帮助你捅破窗户纸,但是,靠自己,什么时候能通,说不定呢,项目不等人,当然经常来Jdon论坛也可以看到大家这方面讨论。

说太多,有感而发,个人意见,仅供参考。

dd_macle
2006-12-03 15:29

"架构就是要有预见性,特别是Java世界,技术流派众多,优劣共存,让人吃药的技术比比皆是,不象微软世界,有微软这个专制强权的架构设计者和提供者告诉你用什么,除此之外别无选择,在Java自由世界,你可能不小心走上一个不归路,软件架构一旦错误,就象出发的方向发生问题,南辕北辙成语就是说这个意思,花再多精力再多钱,再强的人都没有用,项目照样失败。

所以,在Java世界选择技术,就象女孩子到自由市场淘货,必须冒被骗失败的风险,但是其中乐趣也是不言而喻的,你会成为技术专家,当然,如果你想很多找到合适的架构设计,那么借助外力,象J道都提供这样架构设计服务,可以在短时间介绍一些这个自由市场哪些东西是性价比好,值得买,找个有信誉的内行当地人做咨询,就是这个道理。"

-------彭老大这番话说到点子上了,学Java可以成为技术专家,学.Net可以成为赚钱专家:)

NickyYe
2006-12-04 19:40

Banq大哥,(或许应该叫叔叔吧^^)您好!

我是一名国家示范软件学院的在校大学生。经过两年多的大学学习,始终没有掌握到软件设计和开发的精髓,甚至一度想放弃,直至我接触到了Java。昨天,我无意中发现了Jdon这个网站,立刻被他所吸引,相见恨晚。您提出的许多见解都是我一直以来所追寻的,这些软件架构的设计、oo思想的追求,令我赞叹不已。同时我也很钦佩您如此高超的洞察力和判断力,身在校园之外这么多年就能把国内软件教育的病根洞察得一清二楚。在学院刚开Java的课程时,大部分学生都乐于接受,表现出了很深的兴趣,那还只是在J2SE的阶段,因为长时间的C++学习已经使得他们非常厌烦。可是,一旦到了J2EE阶段,就连基本的JSP、Servelet、MVC这些都得到了大部分人的排斥。学院允许选择.Net和Java,结果很多人投到了MS的阵营里面去开发asp.net的东西了,更不用说后来的ejb、hibernate。我看到您的一句话感受太深:“这是只有自由世界才有的规范,在微软MS世界你是绝对不会看到的,所以,从微软转过来的,会晕,会不适应,不能再按照他们以前的经验来看待自由的新世界。”

我钦佩您,追寻您的思想,更想去学习您。您放心好了,中国的软件教育是失败的,可是还有很多不愿放弃的年轻人,他们有开放的思想,为这个事业而奋斗。

yejinfei
2006-12-11 13:52

OO面前大家都在一个起跑线上,谢谢老大给我们指明方向

8Go 1 2 3 4 ... 8 下一页