答案:我觉得摊开来说,说j2ee和.net哪个更先进并没有什么意义,主要是看开发易度和成本,我暂时觉得,在vb/vc等原先ms阵营的开发者upgrade到.net以前,j2ee还是首选,现在它的支持最多(比如apache/ibm都提供了很多免费的东西,大大有利于开发),最后的胜负还是取决于什么东西可以让人更易上手,提供更少的成本,更快的可以训练出程序员来,这一点java比较好,君不见,满街都是java程序员了,呵呵,我的软件部经理告诉我,他同时招聘java和c++,java的程序员多出10倍,java易上手,开发支持多,这才是它流行的原因吧。就好像delphi,我一直很吃惊他竟然可以在windows上和ms的开发工具竞争,我觉得主要不是因为它的先进性,而是易上手,掌握了程序员,就掌握了soft的未来(所以cobol还有非常多人用,pascal还可以不断进步,按我的感觉,c就是操作系统,c++兼容c,pascal没有被淘汰主要是因为它提供了一种比较容易的编程支持,如果说先进,我是无论如何不信它好过c/c++的)。
另外一点,我觉得前面有一篇帖子说得很好,ms现在就是没有盟友——强有力的那种,敌人却不少,都是强的惊人,随便列举几个有名的:oracle在数据库上不用说,ibm总是没人敢小瞧的(我现在总觉得目前sun不管在java上做什么事情都拉着ibm),还有一个非常重要的,就是以apache(不要说你没有听说过apache啊,你是程序员吗?呵呵,一个玩笑)和linux那帮人为首的自由开发者目前暂时是支持java的,尤其是apache的jakata项目,像tomcat/ant/log4j这些东西都出自这里(还有非常多好东西,不过我没有用过罢了),这批人的天才是决不逊色于ms中人的,而且人多士众,尤其重要的是这些东西——免费(还有源代码,天啊),这就是为什么到处都易做图tomcat(apache server可以占据服务器市场的一半以上的份额,除了质量上乘以外,还有就是靠免费)的原因啦。
至于说到效率问题,目前解决的方法很多啦,首先是摩尔定律,软件员可以坐等速度提升(呵呵)。其实效率有非常多解决方案,只要成本可以承受就行了(比如集群啦,阵列啦),大不了用高速内存cache数据,关键在于你的产品可以在期限内开发出来,综合成本可以低,后备人员可以很快跟上(这行的流动率不要我说了)。还有用新人也可以很快上手,这对于设计的要求非常高,和具体用什么框架并没有很大关系。
前面只是说一些比较费钱的解决方法(也是个小小玩笑),其实像目前使用corba,rmi-iiop,ladp还有大量的分布式应用解决方案的情况下,效率根本不是问题,我接触过的几个项目,用java根本就没有问题(何况corba下可以用java+C++),因为负载被分散了,如果真要谈到效率,也根本不可能用.net,大家去看一下协议级的应用和大型认证和加密的源代码就知道,根本连C++都不用,完全是C,用易做图的方式提升速度(比如不用函数——连内联都舍不得用^_^——用宏来展开常用代码,至于面向对象的特征全部消失,还谈什么.net和j2ee)。我还没有用过.net,但我不相信它会有多快,一个没有编译成二进制文件的东东能够可以快到哪里去,不过肯定是比java快的——在windows上的话。我在这里说这个并不是打击.net的意思,我个人也很看好.net的,但就事论事,只是说在作为企业解决方案的api选择方面,速度根本不是选择的主要因素,真要说道效率,还是C/c++,.net也是远远不够的,程序这一行,没有什么70%之类的说法,有不是买彩电,可以打折(五十步笑一百步)。
我比较看好.net对于原先ms程序员的升级作用,现在几乎所有的程序员都可以介入到基于网络的解决方案上来,这才是.net的意义所在。个人以为如果要搞.net,决不是去学C#语法那么简单,如果是那样的话,还不如用java,支持又多,高手也不少,源代码更多。而是应该把注意力放在ms的二进制布局接口上,个人觉得COM之类的东西正是天才般的想法,虽然我还不太懂,.net可以把大量的旧有代码升级到网络,的确是ms的巨大贡献,至于什么一统编程标准之类的东西,简直就是痴人说梦(连fortran还活着呢),完全是ms为了吸引程序员的噱头罢了(不过一统ms的编程标准大概没有问题的)。
j2ee与.net的框架之争,并不是争什么更先进的问题,更不是什么anders搞得东西就是什么好之类的,(如果那样的话,我觉得写linux内核的人和richard.stallman——创立GNU标准的人——更有天才),这也是ms的一个炒作罢了,如果anders还在borland,肯定没有现在出名。其实到了那个地步,个人的天才有多大作用,我很怀疑,不是怀疑anders,而是怀疑anders会比sun和ibm的天才厉害多少的问题(bill自己就是天才吧),这就好像比较麻省和斯坦福那个计算机更好一样。不过我还是相信ms和anders可以把开发环境搞得很好才对。
其实两个标准和思想没有多大的区别,.net更接近操作系统,可以升级旧有的c/c++程序,这一点比java好,不过java也可以利用jni(不过功能较弱),谈到和旧有程序的交互上,java可以利用corba,我总是觉得ms做事不太地道,他故意不支持corba,另搞DCOM,可能也有不让java借用的目的。目前主要考虑的是如果你原来是ms的程序员,肯定升级到.net上去,原本作java的,不妨先把j2ee搞好。至于新手,我不敢建议(在网络论坛上是动辄得咎啊)。
最后以为ms这次出人意料的打算交出.net的标准给国际组织(我也听说而已,别当真),主要是为了争取服务器市场,靠卖.net挣的钱肯定不够养活ms,ms看中的nt server和数据库的市场,这也难怪它没有盟友了(呵呵),因此对于ibm,sun,oracle,linux/unix(apache)这样的对手而言,是没有妥协的可能性的(完全是把手伸到锅里来了,我个人很佩服bill的霸气),ms没有可能用招安的方式说服他们,ms吃亏在它不卖服务器,至于原先的地盘已经划定,现在ms几乎是在跟各个方面的顶尖对手对抗,而且似乎大家都不打算妥协,争取第三方支持成为一个比较重要的筹码(只是重要而已,服务器上剩下的已经不多了),但不是绝对的,主要还得靠ms自己,赢下桌面开发市场对Ms没有什么意义,他早就赢了,关键是解决方案市场,这才是ms要的,这场争夺会是好几年的时间,关键还看今后两年,现在只想知道.net的正式版是否真的如同他说的那样好,否则ms可能没有什么时间了,今年j2ee大行其道,.net光见打雷,就好像xbox和ps2一样,前面只不过是ms拿来留住旧有程序员和吸引观望者眼球的噱头罢了,实在的货色今年才可以看见。对于ms有一种矛盾心理,一方面佩服它(因此我支持xbox),另一方面又觉得ms一旦赢了,对于软件业不是什么好事(我不喜欢IDE的方式,所以用ultraedit写java),ms的特色是第一版很烂,第三版开始很好,从VB/com/windows莫不如是,所以一旦开头不好,大家也可以观望一下,ms的东西无疑是好的,但是重要的不是好,而是相对于java(java也是好东西啊)的好,时间对它似乎不多了。只希望软件业可以是百家争鸣,重要的是开放的标准和技术,这才是重要的,如果ms可以开放它的技术的话,我也愿意支持它(似乎是奢望呢)
上一个:TomCat和Jakarta计划
下一个:java安全编程(转)