自从 .NET 问世以来,程序员都很关心的一个问题是「该学 Java 或 .NET 」。我也在挣扎,该「该继续 Java 的研究,或者该开始准备培养 .NET 的知识」。
当然,最好是能两者兼顾,但是每个人的时间都很有限,想要兼顾两者,其实不太容易。投入在 .NET 的时间越多,所能花费在 Java 的时间自然就少了,反之亦然。在信息爆炸的时代,重要的不是信息的取得,而是信息的抉择。信息太多,时间太少,如果不能慎选适合的技术,只会平白浪费许多时间,斲丧自己的竞争力。
由于我喜新厌旧的个性使然,过去这两年半,我着实花了不少时间在 .NET 上,对于 .NET 的认识越来越深,也修正了对于 .NET 原先的一些误解,渐渐的认同 .NET 的许多技术理念。姑且不论我们对于微软是褒是贬,单纯就技术本身来看, .NET 的确是很卓越的。
我并不是唯一一个这样想的人。以「 Thinking in Java 」等技术书籍广受欢迎的 Bruce Eckel 也是如此。他原本认为 C# 和 .NET 只是 Java 的模仿者,并无新意,但是在深入了解之后,才发现 C# 和 .NET 其实是改良版的 Java ,不管在各方面,都有比 Java 更突出之处。当我看到 Bruce Eckel 说出这样的话,我感觉他说出了我的心声。
下面,我试图从许多不同的角度,简单地比较 Java 和 .NET 。
从技术的观点
通常新的技术会比旧技术更好,因为新技术可以从旧技术学到优点,且新技术可以摒除旧技术的缺点。 NET 比 Java 诞生的时间晚了六年,许多方面都比 Java 先进,当然是无庸置疑。
我的意思并不是 Java 这六年停滞不前,事实上, Java 一直在进步中,只是有许多缝缝补补、修修改改的地方。例如, XML 是在这六年之间出现的技术,所以 .NET 对于 XML 的整合可以说是天衣无缝,但 Java 是后来才把 XML 整合进来,且整合的程度比不上 .NET 。
从历史的观点
以史为镜,可以知兴替。如果你了解近二十年的软件产业发展史,你会发现微软挫败的机会很小,即使是在头几场战役失败,也会在整场战争中获胜。换句话说, .NET 挫败的机会不大。在 Office 软件大战中, WordPerfect 、 Ami Pro 、 Lotus 123 如今安在?在操作系统大战中, OS/2 也已经销声匿迹。在浏览器大战中, Navigator 如今只整剩下小小的疆土。你一定可以举出更多这样的例子。
从市调的观点
分析机构如 Meta Group 和 IDC 皆预测,在 Windows Server 2003 推出之后,未来几年市占率会大幅提高。我认为,在 longhorn 推出之后( 2006 年?), PC 更是会全面 .NET 化。由于「精通」 .NET 知识可能需要费时两三年以上,技术人员应该尽量提早学习 .NET 以为因应。
三年前( 2000 年)学习 .NET 恐怕有点太早,三年后( 2006 年)学习 .NET 恐怕有点太晚,而现在学习 .NET 正是时候,不会太早,也不会太晚。学会之后,可以立刻投入市场对于 .NET 技术的人力需求。
从营销的观点
任何人都不能否定微软营销功力的厉害。平面的营销,包括在电子时报、 IT Home 等信息媒体,甚至连商业周刊等非信息媒体,都看得到相关的广告。动态的营销,包括 PDC 、 TechEd. 、修练讲座、产品发表会 … 等活动,直接走入人群,接触客户。电子的营销,包括 MSDN 中英文网站、微软 TechNet Flash 新闻信 … 等,提供技术新知。
另外,还有多得拿不完的教学光盘,读不完的在线文件,看不完的 Microsoft Press 出版品 … 。我发现,微软的作法和另一家公司的作法大相径庭。微软给我们一堆技术信息,要什么有什么,但另一家公司却常常把信息当成「传家宝」,舍不得释放出来给大众,连透过内部管道都还不见得拿得到,「好像很不希望有人学习他们正大力推广的技术」。
从销售指标的观点
关于某个城市的消费者物价指数,麦香堡指标( BigMac Index )是一个很有名也很简易的评估指标。我也发明了一个类似的指标,称为天珑指标( TenLong Index ),可以用来评估 IT 技术的热门程度。天珑书局是台湾最大的 IT 图书门市,它的技术书籍销售量,对于判断技术的热门程度,有一定程度的参考价值。
2002 年全年和 2003 年上半年,天珑书局在 .NET 书籍的销售量都不高,但是在 2003 年下半年之后, .NET 书籍已经有相当不错的表现,这意味着最近准备采用 .NET 技术的公司已经增加了。
我记得在 Java 推广初期,由于大家对于 Java 认知不够,所以对于 Java 有许多 FUD 存在。现在微软在推广 .NET 上,也遭遇到许多 FUD ,这是微软目前必须极力消除的障碍。如果你对于 .NET 也存有这些 FUD ,你不妨尝试着去破除这些 FUD ,就如同七八年前破除 Java 的 FUD 一样。你将会发现,就目前来说, .NET 是一个非常有潜力的技术,值得投入。