sun的标语是"网路即电脑",所以在java的策略上,sun假设这个世界上充满异质平台,所以设计java 的时候希望以单一一个java程式语言为中心,让它可以在各种平台上执行.因此jvm要采stack machine的设计方式,因为不管你是谁,都可以实作出stack machine.但是这毕竟是一个不理想的世界,连sun自己solaris都要好几个patch才能使用新版的jdk.连borland也花了三年以上的努力才让 jbuilder可以同时推出windows , linux , solaris , mac os x 四种版本,可见"write once, run anywhere"的理想真的有其实际上的难度.borland除了证明sun 的理想是有机会实现的礼运大同篇,也证明经过精心的架构设计和最佳化,加上工程师累积了许多经验後,仍然可以突破stack machine 先天上速度慢的原罪(虽然还是不理想,需要用很多ram来填补理想).sun把其官方工具jdk搞的很难用,网路上老是有人抱怨它是java developer killer,虽然.net framework sdk一样难用,可是微软至少还有visual studio.net如果说微软的visual studio.net让工程师感觉像在开benz,那么forte就很像路上随便一台前方贴著benz标记的烂公车.所以sun实在需要多多加强.不过这也难怪,ms是纯软体起家,sun是纯硬体起家,sun做软体做不过ms是正常的事情.
反观ms,它假设世界上只有x86的cpu,或者广泛的说是wintel 平台,并假设世界上存在许多会各种语言的工程师们.因为以此假设为策略中心,所以设计.net的时候clr可以针对x86 cpu 作最佳设计,有些指令甚至可以和op code达到1 to 1的mapping,所以速度自然跑的快.但是叫他移到sparc或as/400上就麻烦大了..就工程师的角度,自然会偏向.net,因为选择很多(喔,这点有待商榷,後面会提到),但是就3rd party 厂商的利益和老板不想被特定平台绑死的观点来说,会偏向java。 各位想, .net的winform设计的那么漂亮,很可能累积了anders离开borland之後的许多好点子,如果.net出来,borland大概真的只剩下ide可以做了.所以最後谁的利益胜出,很可能就会决定输赢,
不管是大陆还是台湾的工程师,都存在著"广义中国人"的劣根性,东西还没出来,就可以诸多猜测,跟我们电视上那些算命的半仙没啥两样..而且,大家还真喜欢算命耶!难怪我妈看到我在读the art of computer programming的时候跟我说,程式设计师和巫师没啥两样,只不过他们靠乌龟壳和咒语,而我们靠的是程式语言.我们总是人家在煮米粉,我们再喊烧,一大堆会写病毒的高手,一大票善於破解的高手.但是就是做不出世界级的软体.当然,这也骂到我自己了,但是我真的是对软体业没啥贡献就是了。