鉴于Java社群不时的也应该了解一下对手的信息作为参考,我将自己在博客园的一篇随笔摘录如下:
原文见:
http://www.cnblogs.com/sean/archive/2005/03/15/119341.html 供参考的文章:
孟岩-.NET面临信任危机,根源在于目标模糊
http://blog.csdn.net/myan/archive/2005/03/15/319919.aspx独裁是一种风险
http://blog.csdn.net/java_editor/archive/2005/03/15/320030.aspx刘如鸿-失去信心?还是再度迷惘
http://blog.csdn.net/liuruhong/archive/2005/03/16/320576.aspx 正文:
微
软的.NET框架从诞生至今应该有四年多了吧?这四年是怎样的四年?微软又在多大程度上达到了当初所憧憬的美丽蓝图?我不敢说我对.NET有多么深的了
解,但是我似乎越来越发现微软已逐渐背离了最初的美好愿望,或者说,背离了早期力推.NET技术时在广大开发人员中树立的美好图景?
通
常,一个好的点子,或者说一套先进的想法,加上微软这样的公司,我们似乎没有必要怀疑它的成功。我们倾向于这样看待微软的产品:成功只是迟早的问题,或
者,就算最终计划落空,你也不用太伤心,有那么大一个软件帝国垫背。于是,很多人在左右为难的时候,选择了微软的产品和技术路线。.NET更是被微软戴上
了前所未有、鲜艳夺目的光环,我们从各种渠道听到这样的声音:.NET是微软的未来,是微软面向未来至少十年的技术;要跟着微软,就要学习.NET,使
用.NET;.NET让你的代码更加安全;未来的微软产品线都会依赖于.NET技术。Bill
Gates这次确实是认真的:.NET是微软的远大理想,是微软无论如何都要达到的目标。
平心而论,.NET的核心思想是很不错的,从
CLR和IL的设计上就能够看得出来,在吸取了之前诞生的各种不同技术之精髓以后,又大胆的进行创新,实用、易用为先,绝对有实力成为未来大部分计算机应
用的统一平台,成为整合企业和个人现有应用的绝佳框架。我相信大部分人在看到这些特点后都对.NET的未来充满希望。
然而最近不知从哪里
吹来一股子坏味道:微软自己对.NET的定位发生了变化吗?还是说.NET本来就是个幌子?从微软自己的角度,我们似乎到现在也没有看到微软的哪个重量级
产品和产品线是基于.NET的,几乎都还是混血儿或者干脆就是贴牌而已,众所期待的.NET操作系统Longhorn最终也放弃了
WinFS,让人怀疑Longhorn还会不会是当初微软声称的样子;从.NET基础库来看,似乎有相当一部分API只是对原有API的简单包装,原有的
优势还在,bug也还在;从我们常见的代码来看,似乎到处都还充斥着[DllImport]这样的标签,是我们的程序员们怀旧吗?我还记得很早以前就有人
提出了对.NET的反感,当时我不以为然,现在似乎也有些理解了。其中有一个大家普遍觉得不太满意的地方就是:为什么以前不超过100K的程序为了要用.
NET,就必须让客户端下载安装25MB之巨的.NET环境呢?
我本人虽然是做Java出身,对.NET技术本身还是很感兴趣,也是支持
的,但是对微软的有些做法有些不解:这是在给开发人员怎样的信息呢?.NET不可靠了吗?也许我们应该这样想:.NET绝对不是微软的全部,也不可能解决
所有编程问题。诚然。但是.NET不就是为了解决大部分常见的编程问题吗?既然提供了这种便利和安全性,为什么自己都不广泛采用呢?感觉是:微软有一个很
好的起点和一个远大的目标,但是为了照顾到所有Windows平台的既得利益者,或者说保护Windows这一商标的既得利益,.NET变得越来越杂,越
来越畸形,大概需要静下来好好整理一下了吧?
在.NET的圈内圈外都有不少观望的人:圈内的人在观望.NET是不是将要沦为一种粘合剂而
不是以一代多的统一平台?.NET真的只是吸引开发人员到
Windows平台的幌子吗?圈外的人在观望.NET到底是不是微软未来绝对的主力军?是不是他们应该定下的下一个学习目标去投资呢?其实让这一大群人安
心的最佳途径也许是微软出面构建一套完全基于.NET的像模像样的大型软件产品(最好是桌面应用),但是微软准备这样做吗?我不知道,但是很怀疑。对于微
软来说,也许他们不言而喻的一个心理底线就是:不论技术如何进步,如何创新,都不能动摇Windows和Office在操作系统市场上现有的地位。
.NET,你可真是让人欢喜让人忧啊。
/* -- 以下添加于北京时间2005年3月19日16时 -- */
通过这两天从不同渠道了解到的信息,我想我原先对.NET的认识和理解是有偏差的,至少是有些过时或者偏颇的。下面这一篇选自MSDN,是很好的一篇文章,相信可以说清楚很多在我的这篇随笔中的疑问:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnreal/html/realworld06012004.asp
也许是我的Java背景,我倾向于从虚拟机和平台中立的角度去看待.NET,或者说,我希望.NET是这样的一个框架。但是事实上,.NET也许从来就没
有打算要100%的平台中立,甚至它在很大程度上、在未来很长一段时间之内还需要依赖原有的COM和Win32
API,它更是一个runtime而非VM,它是打算在Windows平台上增加另一个有价值的抽象,使我们针对Windows的编程变得前所未有的容
易。
(在这篇MSDN文章之外需要补充的是:近两年SUN也倾向于把自己的虚拟机/运行时叫做JRE – Java Runtime Environment,尤其是推出HotSpot技术以后,Java程序会被动态分析和部分编译成本地代码执行。)
但是这正说明了一种我也许无法接受的微软作风:想当年,微软何其郑重其事的将.NET
Framework的一个子集:JScript、C#和CLI,注意,是CLI不是CLR,拿到ECMA去申请标准化,多么开放的姿态。(也许正是微软这
个举动让我误以为.NET会平台中立吧。)如今,MONO项目已经说明不了什么了,或者说,已经没有什么说服力,这些标准化的进程又带来了多大的技术上的
进步和创新?
在我看来,开放的姿态对于一个大型的框架/技术的发展和完善而言是相当有好处的,但是由于微软对的.NET的绝对控制,.NET走的是跟Java截然不同的路线,这对我来说是一种无奈。
最近,另外一种现象也引起了广泛的关注:那就是微软在.NET社群已经有了相对成熟的Log4NET、NAnt、NUnit、Spring.NET、
NHibernate等等工具/框架之后,准备推出自己的一套东西并集成进Visual Studio
.NET,这也许会引起一些人的不满,不过也许就像 I坐标 所说,这个是微软的本性。
对于开发人员来讲,我们当然会在一定程度上有选择的自由,每个人对.NET,对微软,乃至对C++,对Java等等也有不同的看法,一旦选定了自己的方向
和对策,就一如既往的坚持走下去吧,不要被包括我在内的许多人和媒体的“片面之辞”蒙蔽了双眼。对于这些观点、看法,大家有选择看和不看的自由,也有选择
信与不信的自由,信息社会嘛,就是这么简单。
还是那句话,我认为.NET和Java两个社群需要多多交流,相互学习,而不是言语上的相互攻击和对立。唯有虚心的、对事不对人的态度和探讨才有价值。