我们日常交流所使用的语言包含了语义、语法及语序三大特征,当你能够与别人进行交流的时候需要这三大特征进行匹配,否则便是对牛弹琴,无法沟通。
那么作为计算机标注,标准的意义就在于确定交流的语义语法及语序,当你连接到HTTP端口发送FTP的命令得到的结果很可能是断开连接,所以整个计算机世界是通过标准进行交流的。如果放弃标准就代表了封闭自己,拒绝与外界交流。当然,如果强大到一统天下,自己制定标准的程度,也无所谓了。

有的标准很稳定,实现也单一,这样的标准遵守当然没什么问题。而有的就不稳定,实现众多,总想能够无缝迁移却又舍不得放弃特殊实现附带的好处是不可能办到的。标准不能解决所有的事。

标准之所以成为标准就是因为其确定性,确实有的厂商在标准的实现上有所不同,而且会超出标准有自己的特色,这样就看你的项目如何定位,如果绑定于某个厂商就无所谓标准,但是如果想与别人进行互联互通,那么就不能采用特色部分,而只能使用标准内的东西。

>但是如果想与别人进行互联互通,那么就不能采用特色部分,而只能使用标准内的东西

正确,但是这里存在两个思路,我先从互联互通中找出三个事物出来:A、联通协议、B。

以前思路,也就是标准的思路:A与B要进行联通,A与B内部的东西必须是标准的,这样大家才能联通,但是这个思路忽视了联通协议这个中间者的存在。

而RETS这个不是标准的架构,就是从联通协议入手,通过对普通使用的Http进行充分利用,比Web服务还要深刻。这里就体现了创新的力量。
http://www.jdon.com/jivejdon/thread/36520.html

标准本身是公道的体现。
你不必跟着垄断企业转,只需按着标准做,就能保证产品切合市场。
大企业的事实标准也不尽然是霸道。
IBM推出的IBM PC,公开了所有接口,从而形成了一整套事实标准。开始风风火火,后来给蚂蚁们啃倒了。
小企业也能推出事实标准。只要你推出的技术无与伦比,又代表技术发展方向,你也有足够底气能拿出来。
前面说的路桥问题。那个世界霸主德企,规模非常大,一直霸占世界主要客户。宁波那家是个小企业。德企产品维护周期做不到一个月,宁波的早就超过了三个半月。技术占压倒优势。
这世界,只认拳头,谁硬,谁就是老大。这是非常公道的。

>>>有的标准很稳定,实现也单一,这样的标准遵守当然没什么问题。而有的就不稳定,实现众多,总想能够无缝迁移却又舍不得放弃特殊实现附带的好处是不可能办到的。标准不能解决所有的事。
这是使用者的事。标准不是法律,没有一种行政力量来强迫你使用。
有时侯,某个产品(或部件)相关的标准不止一个,你得根据自己的情况加以选择。特别是关于质量的标准。
该跟标准时,一定得跟标准走。跟标准顶牛是不行的。这事,中国人在70年代就整明白了。

举一没标准的痛苦例子:
多字节数据在内存里的存储,是低字节存在低地址高字节存在高地址还是反过来?这个叫Endian。
有的机器是Little Endian,如X86等,有的机器是big Endian,如IBM 3700等,还有的既可以是Little的,又可以是big的,如ARM。
过去,每台机器都独立使用,老死不相往来,这问题就不大。
后来,高级语言出来了,在Apple II上用BASIC编写的程序,有可能照搬到IBM 3700大型机上用。可是,万事具备,只欠东风,两机器的Endian正好相反,搬过去后,数据就乱了套了。
到现在为止,喜欢Little Endian的厂商仍在继续生产Little Endian机器,喜欢Big Endian的厂商仍在继续生产Big Endian机器,喜欢两脚骑马的厂商仍在继续生产两脚骑马的机器。没标准约束,大家伙由着性子来。
再后来,两台机器之间要通讯了,接着,网络也来了。在传输一个数据时,是先传低字节,还是先传高字节?
因此,你把一个数据从机器甲传输到机器乙,你得弄清楚,甲机是什么Endian?乙机是什么Endian?网络又是什么Endian?
看看,标准的意义有多大,为标准付出的代价值不值?

说到事实标准的反动性,一个例子是Web Service。
Java推出后Web Service,Microsoft敏锐地看到它前景,立即组织大批人力进行Windows平台的二次开发。
但是,他们推出的Web Service,与Java的Web Service,在互通上有障碍。
是Bill故意这样做的?还是没能力做到无障碍?不得而知。

不可否认的是,标准在工业级应用中有举足轻重的地位,比如Little Endian的应用

我想说的不是这个意思,我想说的意思是,在JavaEE企业级应用开发中的标准所起到的作用远远不及螺丝的直径标准在设计门窗或者Little Endian在设计处理器的时候起到的作用巨大。

也许是因为软件开发的不确定因素远远多于开发一款看的见摸得着的实物(门窗,计算机等等)所引起的。

我当然知道标准的重要性,我说“标准的真正意义在于”是针对“软件领域标准,尤其是JavaEE中的相关标准”不同于以往对标准的理解和其他环境下的标准而感到迷茫。

是的,我们要把可移植性等软件设计要求从标准概念中移除,标准已经不能承受软件设计要求之重。

软件设计是艺术的,而标准是死的,这就是两者天然阻抗。

J2EE的一个伟大贡献是对软件生产有了粗略的分工:需求分析、架构设计、组件生产、组件购置、组装、部署等等。这种面向组件的模式,必须依赖于各种各样的标准。有自行开发的组件,有协作开发的组件,有外购的现成组件,不按标准办事,没法组装、部署,形成完整的应用。
J2EE那一套,很多人说太复杂。用它来搞软件,太麻烦。确实,用J2EE来做中小规模的应用,反而增加工作量。只有当规模足够大时,J2EE才使得工作量减轻。这其中的原因也包括标准的功劳。

呵呵,标准只是决定一个大的方向,而标准的实现是可以>=标准的,至于到底企业选用哪个标准的实现,要具体问题具体分析,比如一些企业有钱,它会选择贵但是提供服务比较好的,而另外一些企业,也许会选择一些比较实惠的实现,但是服务相对欠缺的。

标准也不一定是一成不变的,也是需要不断变更的,标准只是约定了大家的行为,而具体的实现又可以在实现标准的时候对其进行扩展。并且不同的实现也会促进标准的发展。

标准一般来说却是要落后与事实的,这就像法律通常落后于法律一样,没有什么大惊小怪的。很多企业的由于下手比较早或者实力比较强,形成了事实标准,这个标准有的时候比一纸空文的标准更适合于工程人员。不过无疑标准给行业发展带来了巨大的好处,有了标准你写的东西才可以在多种机器上运行,有了标准,你传输的数据才不会错误,有了标准,你才不用担心你所使用的东西会被淘汰,这就是标准的力量。

架构上有一个术语:不要重复发明轮子。

有时标准也干这事,有了J2EE,又来一个SOA,号称跨语言平台,标准这玩意变成厂商讨好用户心理的一种工具,你用了J2ee不是怕Java被淘汰吗?SOA不错哦,当然你得为你走路会摔死一样的无谓担心付上成本,学习成本,了解SOA SCA SDO,但你搞了几圈,发现SDO不过是Castor + Hibernate + Webservice时,你有何感想,标准总是想做一个超大概念,踏在别人肩膀上,可是,用户会一直喜欢看你玩把戏吗?我看IBM主导的SOA会被google amaza sun主导的云计算云服务概念替代,别再在中间件上做文章了,从Corba到EJB到SOA,换汤不换药。

中间件时代已经Over. 立标准的时代也就Over.