由于我的随笔给这里带来了一些不必要的争吵,对此我深表歉意。
通过这两天从不同渠道了解到的信息,我想我原先对.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两个社群需要多多交流,相互学习,而不是言语上的相互攻击和对立。唯有虚心的、对事不对人的态度和探讨才有价值。