关于JAVA与.NET的争论从来就没有停止过。相信标题就足于吸引许多人的目光,但我无意在博客园里从新挑起一翻新的争论。但是今天与一位比较有资历的同事探讨起了关于.NET与JAVA的话题,同时自己也在JAVA开源方面有一些需求,因此就有了这方面的思考。
事情过程大概是这样的,同事希望我们逐步转向JAVA路线,利用JAVA来实现SOA架构的产品。然后他认为微软在SOA方面还没有实质的产品,或者说支持力度还不够。或许他本身并不是技术人员,但又专注于架构方面。让他对当前流行的各种最前卫的架构概念比较迷念,说起架构条理清楚,但是从中你却又明显的感觉到缺少一些简单的技术常识。不过,在与之交流过程中,做为一名纯粹技术人员的我,却又收益不少。
首先,我对技术分派是中立的。我使用.NET,并不会对JAVA有任何的敌意。大数人使用哪种技术都与自己的性格,和首次接触有关。特别是初次接触的技术,就如初恋一样,会有种特殊的怀情结在里面,我就是其中之一。当你在这样的一条道路越走越远,双方的认识越来深的时候,越发的难于放手。但是,除了你的初恋女友外,你能不能对其它的女孩充满敌意呢?不能!人家漂亮,你还得夸人家漂亮。人家有缺点,你不能老抓着人家的辫子不放。就如同人其实都是一种高级动物一样,程序语言的本质其实也都是一样的。.NET和JAVA则更像是同胞兄弟,极其相似,却又各有不同。
再来说说我对.NET与JAVA一些不同的认识。我认为,两种技术的不同根本就在于它们所走的社区路线不同。.NET技术,微软倾向于,一家独大。它所把握了所有的源代码,在各种技术上自己都是亲力亲为,为用户提供最为完善,统一,整合的产品,力图最大限度减轻用户的负担,给用户友好的入门和使用机会。而JAVA开源所有的源代码,让用户充分参与进来,让用户有充分的自由去控制这些源代码,在重要的技术概念和产品上,也是由于大产商支持,而不是一手包办,发挥集体的力量来完善这个平台,调动每个人的积极性。所以JAVA社区资源得到了极大的丰富。
这样就会造成,有的人认为微软技术很简单,很好入门,没有技术含量,如果这时他有更高的“理想”的话,那么他可能会转投JAVA,去挑战JAVA给自己带来的那种技术上的满足感。但是当你保持专一的态度,选择继续牵手,继续努力的话。你慢慢就会认识到,真正的挑战其实就在后面,当你接受了这种挑战,你就会得到更大的满足感。当然,也有很多在使用.NET平台,却终始在使用入门技术的人。JAVA阵营何尝没有呢?从这个角度来说,我认为,.NET与JAVA在技术难度是没有差别的。如果有人认为.NET很简单,那么他对JAVA也是半知不解。
但是为什么JAVA的力量看似比较强大呢?可能历史是一方面的因素,但是我认为,开源和自由才是它的成为主流的主要因素。JAVA社区中丰富的产品,使用户需要什么东西几乎都能找到。而在.NET社区却很难有这样的待遇。当然,目前.NET社区也在不断完善,包括开放.NET Framework源代码,也有很多开源社区产品,但力度还远远不够。正因为JAVA中有大量的开源产品和技术,吸引着大多数人的目光,包括我。很多东西确实是.NET找不到,而JAVA却比较成熟的。那么我们当然也可以利用这些开源和自由给我们带来的便利,进而将它们移植到.NET平台,比如nHabernate,iBatis.net。但是我还是要重申,我会为了开源和自由,学习和使用JAVA,但是我决不会为了开源和自由放弃.NET。
最后一点,关于架构领域的一些概念。我想并不是JAVA的特有的,它们可能是产生是JAVA阵营,某些JAVA专家。但是这些架构理念,同样适用于.NET。我并不赞同某些人以此来区别JAVA与.NET,在技术含量上的不同,对.NET报以藐视的态度,我坚定抵制反对。不管什么技术,人的因素永远过于技术平台因素。