八仙过海 各显神通,他们都谈非常好,我推荐“ J2EE最佳实践”并不是为了救场什么的,只是想提供有关本话题讨论的更多题材,各方观点都能摆出来,不必下什么结论。
这个是一个很有名的模型,叫哑铃模型。软件位于算法和计算机体系结构之间


说实在的,我还真不知道有这个模型。(再惭愧一下)不过,就是从你引用的那句话,也不能得出你上面的结论吧。(不想咬文嚼字,免有抬杠之嫌)
我的看法,软件和硬件是大不相同的。软件更倾向于“艺术”一类,现在还没有出现什么决定性的规律论的东西,我认为不能够套用。一个系统不是一个确定性的问题(比如图论),不像硬件1+1就是2,这个规律还有待研究。所以目前只能总结出一些经验性的东西,比如重构,bad smell,等等。
我同意软件结构可以借鉴一些硬件的理论,不过把软件结构说成要符合硬件就有些过了。
关于SOA,我是实在搞不清楚。似乎分布式系统一开始也就是传传string,char等等,后来大家一拥而上,变时髦使用object,现在来了一个否定之否定,又传message了。---除去那些时髦的口号比如service,接口等等,其本质也还不是一个远程method加上参数就是一个string?只不过大家统一了一下口径,多了几个方便互通的协议而已.
楼主开发过单表数据量超过1000万条记录的系统吗?(用你的话说是
一次对1000万个java Bean进行统计查询分析的系统)。
如果您抛弃了数据库而用您现在的思路开发成功,请介绍
一下您的软硬件构架,尤其硬件的配置。

如果没有,是否有误导新人的嫌疑!

开发数据量在1000万条以下记录或者java bean的系统同超过这个数量级的系统在设计概念上是完全不同的!

我同意banq,微软的.net已经道出了以后的发展方向!
xml将大行于天下!弱化数据库将成为必然!
赫赫,关心JDon已经很久了。先介绍一下知识背景,再讲话比较容易让大家评价立场。

计算机专业硕士,很爱学习。
老早就用Java,在J2EE出来以前,公司就自己写类似J2EE的东东,用TopLink,后来用J2EE带一帮毕业研究生开发一个项目。


以前对Java的评价:越来越复杂化。当时用WebLogic 8.1 , 毕业的研究生用3个月还学得半通不通,写得程序也很差。我就觉得J2EE走入了误区,过于理论化,当然现在可能有进步,但是如果一定要非常牛的人才能理解才能用好说明这个东西不够成熟。

这个世界上有很多理论都能够比较好的解释世界,但是大多数人是实用主义者,工具好用就行了。因此我觉得OO理论上都能实现,但是实际上真的实现成本很高。

我也不看好XML数据库/OO数据库这样的东西,觉得数据库做得这么成熟了,除非有非常非常特别的功能,否则我为什么不选数据库更放心?

当然您要是做科研做理论,探索新道路那就是另外一回事了,我100%支持。如果您要做实际项目,还是乖乖用数据库吧。

现在我在用.NET。我觉得IT技术已经很成熟了,目前的发展方向就是易用、控件、快速开发、SOA。以前的对象思想足够用了,更复杂的对象就是把大家搞死。记得微软的COM+吧,当我读了10%,发现读不懂,就扔掉了,一个连我都读不懂的技术,肯定是要完蛋的。希望J2EE不要这样,也希望J道不要这样。

to sungz

你说的“前的发展方向就是易用、控件、快速开发、SOA”;这些正是使用OO和发展OO后才能达到的目标啊,OO更复杂就是使软件更易用,更易维护,所以使用软件的人以后会两极分化,一种掌握更复杂的OO技术,生产框架和构件;一种是使用框架和构件快速开发;这两者方向也是向两极发展,第一种复杂后更复杂;第二种简单后更简单,甚至高中生都可以,也只有OO技术更复杂后,才能使第二种成为现实。

我们正处于这两极分化的十字路口,所以你的观点很真实,每个人面临自己的选择。选择第一种,必须抛弃数据库简单应用知识和经验,向更高高峰攀登;如果满足够用就可以,研究生是否甘心和将来高中生一道工作呢?

先声明啊,偶的回复都很罗嗦的,也没什么技术含量的,不喜欢的朋友们还是不必浪费时间看了,或是就当笑谈吧。

思前想后才觉得banq老师这个话题起的太有水平了,要是搞什么论坛十大话题的话偶一定投这里一票,引申出太多的内容来了,看似凌乱实际上又互相关联着,偶觉得banq老师可以把这个题目作为长期置顶话题了,肯定还会持续有争论的,令偶不禁想起那个先有蛋还是先有鸡的命题,简直是千古疑案啊:-)

感觉现在主要的矛盾似乎在于是中间层重要还是后端也同样重要了,偶想了想,还是觉得有些朋友说的对,等将来rfid成熟了,排山倒海的数据一来,当T一级的数量都成为小菜一碟的时候,确实没有一个强力的后端支持是不行的,甚至连现如今的数据库都无法胜任了。所以偶觉得中间件的诞生发展壮大甚至登上了软件系统设计中心的舞台,并不是要最终取代谁或是统治谁,恰好相反,正因为前中后三层各自独立开了,好象脱了疆的野马,可以各自肆意的飞奔了,比如说前台,偶很赞同将来有什么ria出现搞的那些看厌了web表单死板面孔的客户上帝们眼前一亮,惊呼革命,再加上j2me等移动终端应用也来凑热闹,能够真正的作到pervasive computing,同时也很赞同后台存储领域百花齐放,什么超大容量数据库啊,工程数据库啊,各种xml啊,idl啊,甚至web service,怎么折腾都不为过,因为偶总觉得目前这点数据量还差的远,等那些什么能分给每一颗沙砾一个ip地址的v6一来,等那个什么物联网一实现,再看如今的数据量,恐怕是小的可怜.那么中间一层呢?偶觉得ejb3可能是最先统治江湖的新一代领袖吧,可能会很自然的把令大家把一些新的概念和开发方法带如到工作中来,当然soa类似的架构是不可少的了,否则要想添加个新的应用可能会和周五下午的北京交通状况一样的艰难。

这样再也没有什么c/s,b/s,xx/s之类的分类了,前中后三层借用banq老师的话说-八仙过海各显神通了,这多好,最终收益的是用户,想要什么样的软件搭积木一样的就出来了,有点象dell卖电脑了,似乎可以定制个性化的系统软件了,又何必争个谁高谁下呢,不过话说回来,假如开发新系统的话,确实要mda了,要应用为先导,可能是由于偶喜欢兰帕德的缘故吧,觉得中间层确实是三者里面最重要的,得中场者得天下,偶觉得确实中间层是整个系统的核心了,不是有句话叫提纲挈领么,抓住了中场,等于一个成功的开始确实不假,要不怎么叫中场发动机呢,好的业务领域模型设计真的可能做到象一部优秀的宝马引擎一样,带来一个优秀的系统。

下面不好意思厚着脸皮来评评几句回复中的内容吧:
"研究生是否甘心和将来高中生一道工作呢",偶觉得一切都是发展的,如同咱们的讨论一样,那些能够迅速构件系统的高中生们偶觉得也会有朝一日想钻研钻研什么的,所以也会学习一个研究生曾研究过的技术,偶觉得知其然再知其所以然是一个很好的学习态度,当然象偶这样的总盼着天上掉馅饼的懒人除外。
"IT技术已经很成熟了",这话万不敢苟同,ipv6,rfid,aop,超大容量数据库,随便哪一个拿出来偶觉得都能吓自己一跳, 更别说那些偶梦都梦不懂怎么实现的普适计算,人工智能,grid什么的了,偶知道自己孤陋寡闻,有生之年怕是学不到什么真本事了,但觉得发展是应该的,如果it真的象房地产那样房子都已经盖够了,只剩下什么“易用、控件、快速开发”之类的装修工作了,那大家还搞什么搞啊,不如去海龙大厦倒卖配件算了,来钱更快。
"不过把软件结构说成要符合硬件就有些过了"这话很赞同,理由是如今的软件远不如人家硬件,插插面包板就能搞出个新东东来,多简单啊,到电子市场买集成电路就象到早市买白菜一样容易,而软件呢,由于有微软的阻挠和.net誓死不愚的拥护者,发展的很慢,就好象乌龟和兔子可以在一起赛跑,但却不能从生物学的角度把他们类比一样。软件,有太多的问题要发展和统一了。
"号称几百万程序员..."觉得看问题不该单凭数字,否则不如去从政,每年只管报个好数字好业绩什么的官运会好的很,既然已经有人设计了那么多框架了,又何必再趟这浑水?有能力未必非要做open source,你提到的大环境从体制上就根本不适合任何任何科学事物的发展,开发出再多有价值的事物都没有用,所以这个环境里同样是哑铃型的结构,要么是技术好的没了边,但限于理论范畴的,比如不久前辞世的陈省身大师,要么就是滥的都丢不起那个人,仅限于那些不懂装懂的管理者,比如不久前的什么圆明园生态毁灭工程,而由于大环境的问题,是不会有什么真正愿意贡献的人的,文革一事,早已漂亮的毁灭了所有人愿意为他人奉献的人类良知。一个连凝聚力都不具备的民族如一盘散沙,你对一盘散沙所寄托的任何希望都是无法成立的,搞什么gdp指数型增长也无济于事,偶觉得这才是真正根本的原因,当一切都向钱看的时候,是出不来什么科学的,因为诺贝尔奖不是用钱可买来的。
raimundo ,能否和你问问如何参加java group的活动呢,但偶不上msn的,偶很想借这个group能认识新朋友并向大家多学习的;mythmoon,不要再总撒撒的了,真服了你了,这表达方式太特别,可不可以不说的撒;-)banq老师,偶想问问您下一部著作准备是什么时候呢,或者在考虑写哪方面的内容呢?偶觉得看您的书是很有收获的,此话不虚的,结合着您对实际问题的分析和讲解,再配合着读那些市面上的学究著作或是抄译类文章,正是恰倒好处的学习方式,真心的希望您能有更多的时间来写更多的心得来;-)不过最好不要和机工合作了,好象他们出版的质量不是很高明的说;-)

刚刚做完论文答辩!郁闷的要死!真想把这里所有的回服都甩给他!"不用数据库怎么编程"----一评委老师语!讲个J2EE体系结构吧!刚刚开始就被打断!问我的数据表怎么写的看不懂!郁闷!
关于SOA, 今天看到TSS.Net上的一个帖子

Don't Do Client/Server with Smart Client Technology
下面引用其中的一段话:
For a long time Service Oriented Architecture has been sold as the final silver bullet by vendors and evangelists, but now the hype seems to be dying. People are seeing it for what it really is, and Clemens rephrases SOA to SO/A to make the distinction. Services are really just another level of abstraction, and exactly the same issues applies for services as for components. You need to handle your dependencies, your versioning and your agility, but on a larger scale.

我上面的看法和这个完全一致。SOA根本就是一个marketing的东东而已,根本没有什么新东西。

to mythmoon

"不用数据库怎么编程“ 你把我的书《java实用系统开发指南》第四章网站内容系统给他看,那不是使用数据库而是使用XML文件作为持久化的。

bang老师我可不敢顶评委老师哦!不过我得同学下来都叫好!知足了
在数据流量大而不是数据量大的系统中,抛弃数据库系统是有一定道理的,但是很多系统是高数据量导致高数据流量,而不是高数据流量,低数据量,如何在中间平衡,就要看如何取舍,这里就是仁者见仁智者见智了哦!
而在设计的时候,如果某表被系统引用了10000万次,而要添加一个重要字段,不使用对象的化,你可能要对每个使用到该表的地方进行修改,10000次累死了哦!我举个例子。
但是在要求高级数据查询功能,如闪回查询,用XML的化,也不好实现,我觉的是恶梦。

――――――――――――――――――――――――
讲的不好!~和朋友兼同学讨论后的一点想法。

讨论了很多,我觉的是这样
一个观点是基于数据建模,一个是对象建模.这个谁好谁坏本就说不清
还不如把他们的优缺点罗列一下,到是有意义的
什么是数据库?我认为用xml序列化文件,也是一种变质的数据库
to vcshcn
>什么是数据库?我认为用xml序列化文件,也是一种变质的数据库
也许使用持久化更能概括你的意思,何必为了数据库的颜面,牵强地说XML文件是一种变质的数据库呢?我是严重不同意。

使用持久化这个新名词来代指他们,可以让我们站在历史的肩膀上看得看远,然后抛弃过去的沉重,这才是技术发展的动力。