了解Java,便了解了微软.NET
www.javaunion.org2001-3-12 15:39:21
人们对于美国微软在经过精心策划后于6月宣布的“Microsoft.NET”的设想是见仁见智。在传媒中“目前还很难说”的反应居多。实际上,由于具体产品开始出笼还是2~3年以后的事,现在说三道四确实为时尚早。
这里有一把可以用来快速理解Microsoft.NET的钥匙。那就是先了解Java技术。这是因为微软自己就说过,“只要知道Java就可以更快地理解Microsoft.NET”。
Microsoft.NET有几个关键点。其中最重要的一点是改革商务模型。微软公司感觉到只靠销售软件包的商务模型没有什么前途,该公司打算今后将中心转移到可以在网络上使用的“服务”型商务。
这样,首要的问题就是解决网络上用来开发并执行“服务”的平台,这就是Microsoft.NET。这一平台应该是一个继承了目前的Windows资产,同时又是一个不比与其竞争的技术(即Java技术)逊色的现代化的东西。
新的平台试图提高开发生产效率(再也不想为内存溢出错误(Memory Leak Error)而烦恼了!),并且试图使应用软件的发布更为容易(再也不想因为DLL版本不同而烦恼,希望不用重新启动电脑就能够安装应用软件)。为此,就需要将平台升级为现代化的内容。而且,Microsoft.NET的蓝图与Java十分相似。
Microsoft.NET平台将推动程序执行环境的虚拟化进程。使用编程语言编写的代码,首先转换成中间代码“IL”后,在虚拟机“Common Language Runtime”上执行。在执行时利用“JIT(Just In Time)编译器”,通过将中间代码转换为本地代码(Native Code)来提高执行速度。此外,还配备实现内存管理自动化的GC(垃圾收集器,Garbage Collector)以及验证中间代码的机制。此外还有可以在虚拟机环境中利用的共同层次程序库(Class Liblaory)“Microsoft.NET Framework”
所有这些特征与Java平台惊人地相似。均具有提高开发生产效率,容易发布软件(安装时只需单纯复制即可)等特征。这些都与Java技术一致。
当然,Java与Microsoft.NET除了相似之处还有很多不同的地方。通过这些区别,就可以发现这两个技术在今后角逐时的力学关系。以下是主要的区别。
(1)Java技术目前就可以利用。Microsoft.NET的登台还要等2~3年。
(2)Java是采用一种语言(Java语言)开发的。而Microsoft.NET则可以接受利用Visual Basic和新的语言C#,以及所有的编程语言开发软件。
(3)Java对应多个OS。而Microsoft.NET虽从原理上讲可以对应多个OS,不过估计目前暂时只以Windows环境为对象。
(4)在XML方案方面微软的构思领先。为了实现对应网络的“服务”,采用了基于XML的远隔工程(Project)调入协议SOAP。对应XML的协议,原则上不能局限于特定的平台。这一点其他竞争公司也给与很高的评价。
基于Java技术且对应网络、用来提供服务的协议还有Jini。不过,Jini是以Java为前提的技术,很难说它是用来分布不同种类的技术。
微软公司有若干他所不擅长的领域。尤其是在高端服务器OS、高端数据库、大规模Web应用软件服务器以及Transaction中间软件领域中,已经难以同美国Sun Microsystems、美国IBM、美国Oracle以及美国BEA Systems等竞争对手一争高低。而另一方面,在桌面领域中微软依然占有压倒性的市场占有率。该公司所擅长的领域,说到底还是以Visual Basic为代表的容易使用的开发工具群,和以Office为代表的桌面环境。
只要在桌面环境中的膨大用户支持该公司,就可以在网络中占有一方领地。如果应用Java的某个大规模Web网站提供优秀的服务,则只要开发出将其整合,便于使用即可。
其结果,微软公司为了继续生存的最有效战略,是将桌面环境中的优势运用到网络时代--这便是听了Microsoft.NET说明后使人感受到的。
不过话又说回来,要想开发既继承现有环境,又支持多个语言的Microsoft.NET,其难度将比开发Java技术要大。而另一方面,Java技术的开发正在稳步前进。展现在微软公司前面的路,的确是很不平坦
……