论坛首页 Java企业应用论坛

技术框架上的皮之不存,毛将焉附

浏览 30106 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-04-28  
downpour 写道
还是请楼主用一句话来概括一下你的中心思想,然后我们再进行讨论,否则又变成论战了。


俗话“兵来将挡,水来土掩”
LZ的意思就是“兵来土掩,水来将挡是错的!”
0 请登录后投票
   发表时间:2009-04-29  
LZ所说的假设只因为他存在所以有框架的存在。
开源框架的存在是为了解决某一领域的问题,看你怎么去取舍?
0 请登录后投票
   发表时间:2009-04-30  
unsid 写道
starfeng 写道
说了个大众的道理, 却原来有这么多人不明白 -- 从很多人获至如宝的感觉可以看到.
但这种道理, 你明白了也没用. --- 借用downpour一句, "楼主到底想说明一个什么中心思想?实在没看出来。"

这个道理,和有因必有果没两样, 只不过倒过来变成, 任何结果都一定有其成因...

而问题的真正难点却在于, 果的因很难寻, 有些成因的背景很复杂, 再借一句fujohnwang的,
"可是我看LZ好像自己都没搞清楚他自己陈述地背景对不对,何不合适... "

更看远一点点, 果的因, 却不一定再要来一个因"因"而果, 有时寻因是根本没有含义的.
Javascript随rich client的需求再次崛起, 还去寻求其最初提出的成因, 以其成因对是否匹配现在的业务, 是没任何含义.

果是因"因"而起, 而果却又能成为另一个"因".

这种大众的理, 不拘泥于技术的, 多看点最基本的哲学(16世纪以前的), 很多.
多扯一句, 因技术而悟哲学, 无非平白的多几个看起来不错的自我领悟. 想抽象一点, 直接从哲学去看技术好了.


你看得远不代表你看得明白
我是主张了解事物根源的
你非用哲学描述,那我想用医学描述
当发生某场大规模瘟疫的时候
医学者总是分为两批
一批寻找治理办法,但是新办法总是受限,总是发现这些治疗只是短暂的遏制作用,甚至有时候有负面效果
另一批是苦苦寻找这场瘟疫的根源,是从老鼠?蝙蝠?还是某种植物.
当然二者都不能少,如果只有第一批人,或许感染的人永远只能维持几天的生命
如果只有第二种人,在它找到根治方法之前,人就已经死光了

根源帮助你了解问题的实质,如果就像你说的"经过时间推移,因已经变成了另一个因",那么根源至少是个毛线头,是个你用来找到新的"因"的线索,否则一切无从查起.

另外大概没多少人向你说得那么如获至宝吧

 

 看了,都很有才!

0 请登录后投票
   发表时间:2009-05-01  
liujunsong 写道
技术框架上的皮之不存,毛将焉附
关于技术,语言上的是是非非,实在不是一两句话能够说清楚的事情.
前两天在和朋友的交流中,忽然想到这样一句话:皮之不存,毛将焉附,以此来形容很多技术的兴衰,真是非常贴切.

所有的技术,语言也好,框架也好,其实都有一个基本的假设,在讨论问题的时候,往往是在这个隐函的前提下来讨论才得出的结论,一旦经过认真考虑,把这个假设推翻了,那么整个技术的大厦也就轰然倒塌了.

以下举例说明.

譬如J2EE架构,在早期推出的时候,强调EJB这一组件的功能,其实隐含了一个假设:所有的应用都需要分布式支持,所以才提出EJB这样一个分布式的技术方案.后来在实践中终于发现,绝大部分应用都不真正需要分布式支持,于是乎EJB就变成了J2EE中著名的鸡肋产品.甚至基于这个观点,推除了J2EE without ejb这样的概念出来.此其例一.

譬如JSP技术,按其本名,Java Server Page,就是利用Java语言在后台服务器上,动态生成一个Page的意思.这里其实有两个隐含的假设,其一,页面是动态生成,而且是用Java动态生成;其二,页面是在服务器上生成,而不是在客户端生成.在技术发展的早期,这一概念确实风靡一时.但在目前的技术生态中,增加了Ajax和RIA的概念,在RIA的概念中,页面完全是可以由客户端来动态生成的,这种情况下,就把JSP存在的基本假设推翻了,长此下去,JSP技术的立足点就不复存在了.

再譬如Jsp的tag技术,它的基本假设是采用JSP技术来做页面展示,一旦上面第二条中谈到的假设 被推翻了,jsp的tag技术也就没有立足之地了.

譬如Hibernate技术,它的隐含假设,就是对于数据库的操作,必须通过对象方式来实现,不能直接编写SQL语句,一旦这一假设不存在了,Hibernate的用处也就不存在了.

譬如Spring技术,它的隐含假设,就是所有业务逻辑及数据处理等等,都集中在服务器上进行,而且这些组件还是经常要改变的,所以为了管理方便,给你搞一套IOC的玩艺儿来试图简化它.
但如果这些假设都不存在了,要Spring干啥用呢?

这样的例子简直举不胜举.

大家在疯狂的讨论技术的种种优势和缺点,但是在讨论这些问题之前,请先明确一下,所有这些讨论,它的假设是什么,它的前提是什么.

    非常恭喜楼主,看到这一面,证明你已经成长了许多。做软件的人浮躁的非常多,我记得6年前,我在javaeye的时候看到许多人跟风痛骂EJB,热推Spring;痛骂CMP,热推Hibernate;痛骂Struts,热推WebWork;到后来看到痛骂RUP,热推XP;痛骂Java,热推Ruby等等。许许多多的人根本就没有想过,更加没有思考过他们之间的区别与定位。甚至到后来,更可笑的是一个软件架构师=Struts+Spring+Hibernate了,着实可悲。
    这个世界上绝对没有万能的银弹,也不会有许多人研究推崇的废物,有的只有适合与不适合。就拿EJB说事,到今天,我相信到明天一样会有生命力,否则早在2.1的时候就该死了,被人痛骂的CMP也不会演化成JPA(到头来,Hibernate只是弱化成了JPA1.0的一个实现)。
    一个优秀的软件设计师,一个优秀的软件架构师,是必须要看到这点,做到物尽其用,而不是盲目地跟风。
    楼主看到了假设,看到了前提,更加还要看到它们适合的应用场景,彼此的优缺点。。。
0 请登录后投票
   发表时间:2009-05-01  
有需求,才有解决方案,一系列的解决方案的精华成就一门技术;技术也会随着需求改变吧.我觉得把握变与不变才是真理.
0 请登录后投票
   发表时间:2009-05-01   最后修改:2009-05-01
凤舞凰扬 写道
到头来,Hibernate只是弱化成了JPA1.0的一个实现

Hibernate是兼容JPA 1.0,不是弱化。
0 请登录后投票
   发表时间:2009-05-03   最后修改:2009-05-03
对这个精华有点失望。


引用
在RIA的概念中,页面完全是可以由客户端来动态生成的,这种情况下,就把JSP存在的基本假设推翻了,长此下去,JSP技术的立足点就不复存在了.

那客户端生成UI的代码哪里生成的?我的理解,RIA增强的是客户端的表现能力,而架构并没变。如果有不同意见,欢迎指教。
引用
再譬如Jsp的tag技术,它的基本假设是采用JSP技术来做页面展示,一旦上面第二条中谈到的假设 被推翻了,jsp的tag技术也就没有立足之地了.

tag的目的1是为了分离UI和“java”代码,2是为了封装代码,实现程序员的UI和美工UI的职责分离。即使将来RIA了,还是要分离这个,即使没有JSP的tag,也会有FLEX的tag,来将程序员的UI增强到美工UI里,却不影响美工。


你hibernate和ejb那段我挺赞同,另外不同意你关于spring的看法,spring并没有强调一定要在服务器端,他强调的不过是一种解耦的思想,这种思想很多时候不是通过IOC来体现的。IOC是核心不是一切。 我们不用spring未必就不能用这种思想。

看技术,看前提,我再补充一点,看目的,并且从他的技术实现中学习手段。

unsid 写道
bs那些用了RoR,Groovy,Scala之后把java贬的一无是处的人

最近看grails源代码,了解grails的设计思路,并通过这个过程掌握使用groovy语言的技巧。很有收获:java程序员没必要妄自菲薄,grails这些东西,在技术上,还是用的java的技术,某些部位,使用了groovy来增强。

我很担心grails比ror要差,于是找ror的fans问和比较,伯仲之间,不过ror先入为主了。就能力上groovy语言已经不逊色ruby了。
grails也是有缺点的,这个东西继承自spring和hibernate,并且多数技术都是后者只是用groovy关键部位做了代码增强,因此,很多时候要有后者的技术积累,前者不过是提供了多数情况下的快速开发能力。

优点是:对ssh熟手来说,提供了ssh快速开发框架,多数情况下提高效率,少数情况下——回到ssh,并且将问题和groovy框架混淆。so,要深入了解grails————这都是学习成本(换取开发效率)
——————————————————
貌似javaeye最近精华的水准下降了。我建议是不是有一个“二级选举”:
不同的领域,比如java,或者RIA,或者别的什么,都有“领域专家”以及级别。
这个职称依靠群众投票和个人发帖被推率等综合计算得出。
不同级别的专家,对不同领域的帖子评分,按照对应领域级别估定评分比重。

现在貌似,领域没区分。


0 请登录后投票
   发表时间:2009-05-03  
看了以上这么多回复,感觉都是从同一个人的角度在看问题,而现实上往往同一个问题的处理者都是不同的角色,这就导致了不同人看问题的不同角度和不同方法了。

领域和实现是不同的东西,往往做设计的是一个人,而实现的又是另外一个人。这就不同保证实现的人能够理解设计人的意图了,或者实现者又有自己的意图,这就导致了冲突的存在。

所以,同一个问题,同一个框架,从不同的使用者角度上,都有不同的意义。高手可能认为解决方案最重要(不是方法),而一般人则认为实现方法最重要,这就从认识层面上把人给分别开来,所以有不同的理解,是很正常的。

我也很赞同LZ的观点,不管是从哪方面来看,而且软件开发并不是从哪一个人就能决定所有的开发方面的。同一个问题,不同人总有不同的解决方案,但前提都是为解决某一类问题而出现的。

没有能够解决所有问题的银弹,所以不可能连问题的假设都没有。
0 请登录后投票
   发表时间:2009-05-07  
icewubin 写道
凤舞凰扬 写道
到头来,Hibernate只是弱化成了JPA1.0的一个实现

Hibernate是兼容JPA 1.0,不是弱化。

   hibernate当然还存在,可是未来呢?hibernate只是一个开源产品,在商业公司几乎不会被使用,因为没有任何商业支持。
   如果你是一个JEE的系统设计师或架构师,你应该关注的是持久化的行为而不是具体,这就是JPA的空间。JPA作为JEE容器的一部分,任何一个JEE的容器都会提供实现,你丝毫不要去关心它来自于何种的实现,hibernate也好,toplink也好。
   到了JPA2.0,完全的参考实现也已经是EclipseLink(原Toplink)了,hibernate是否支持,也不确定(不过Jboss是估计要跟进的)。
   对于一个业务系统的设计师来说,hibernate与否还有太多的意义么?
0 请登录后投票
   发表时间:2009-05-22  
一切以市场为导向..
事物的存在 在于 它拥有自身的生存空间

优胜劣汰 物竞天择
大自然的生存法则而已.
生物如此 技术亦如此.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics