技术开发 频道

.NET 的发展与变迁

      四 .NET开发平台 比较和不同的声音
    NET 和 Java 以及J2EE的比较

    CLR和C#以许多功能和Sun的JVM以及Java非常类似。它们是势均力敌的竞争对手。这两种技术都是基于虚拟器模型的,这种技术可以隐藏硬件的一些细节。它们的源程序都编译成相应的中间字节码,微软使用MSIL,而Sun使用Java字节码。在.NET中,字节码总是即时编译的,而在Java中,字节码可以被解释,也可以被即时编译。在.NET中提供的命名空间相当于Java中提供的包(package)。
但.NET和Java也有很大区别,首先,.NET仅可以在Windows平台上运行,而Java可以运行在许多平台上。但.NET被设计成支持多种语言的架构,而Java平台最初只是为Java语言而设计的。

    来自业界的批评

    对于.NET Framework存在的一些问题,业界也有一些批评的声音。

    ●.NET Framework从最初的版本到现在已经有了非常大的变化。而有一些变化和以前的版本存在很严重的兼容性问题,如.NET 1.0、.NET 1.1和.NET 2.0之间存在兼容性。
    ●无论是微软的虚拟机还是Sun的虚拟器,在运行程序时都需要占用大量的系统资源,它们所占用的资源远高于实现相同功能的本地代码的占用的资源。但由于.NET使用了即时编译功能,因此,有时.NET程序的表现要比基于本地代码的程序更好。
    ● 由于微软出于商业利益的需要,使.NET Framework对Windows操作系统过分依赖,这也招来了不少非议。然而,.NET Framework的一部分目前已经在其它平台上实现了,这可能会减少一些对.NET Framework的批评。
    ● 由于.NET程序是以中间语言发布的,这就很容易被人反编译后得到源代码。因此,.NET程序在源代码保护方面有一定的缺陷。微软也提供了一些这方面的解决方案。如微软提供了一个叫obfuscation的工具,通过这个工具,可以使中间代码更难被反编译。在Visual Studio2005中提供了这个工具的完整版本。

    .NET Frameword在其它各种平台上的实现

    微软的.NET Framework是.NET技术的最要实现。其它的只实现了.NET Framework的部分功能。其中的重要原因是.NET的BCL和Windows绑定得太紧,有些功能很难实现。下面列出了一些主要的.NET Framework的实现:

    ● 微软共享开源的CLI。这是一个开源的.NET Framework实现。它可以运行在Windows XP、FreeBSD以及Mac OS X 10.2上。
    ●精简版的.NET Framework(DotGNU项目的一部分)。它实现了BCL的一部分功能,并且实现了一个C#编译器。它支持很多的CPU和操作系统。
    ● Mono也是一个CLI的实现,它实现了BCL的部分功能。Mono以双重许可证形式发布,一个是免费的,另一个是商业的。Mono是由Novell开发的,这其中包括ASP.NET、ADO.NET以及Windows Forms的支持。并且还包括了C#编译器和VB.NET编译器。
0
相关文章