不知道是不是商业宣传的错觉,很多人将这两个重量级产品做比较的时候更多的是着眼于Java语言和C#的语言的比较,从某种意义而言对于.NET是不够公平的,同样对于Java而言也不是公平的。
在讨论Java的时候我们很容易的将Java语言和Java平台混为一趟,和.NET平台比较的过程中也更多的是将Java平台和C#比较,或者Java语言和.NET平台比较,在我个人的意识中,这是不够公正的。
Java经过多年的发展,已经从单一的语言及其运行时环境扩展成一个完成的应用平台,并且在企业应用领域处于绝对的领先地位,J2EE已经成为事实上的大型企业应用的标准技术架构。而在移动开发领域,因为其跨平台的优势,在各种Java兼容设备中的开发也成为一个非常重要的生力军。
.NET从提出的开始就是立足平台,相对于Java提倡的“一次编写,到处运行”,.NET更加提倡“一个平台,多种语言”,因为平台的统一性,因此在各个语言的兼容性和混合开发方面做得比Java好,也因此有些MS的拥护者嘲笑Java是“一次编写,到处调试”。
纵观这两个平台的革新主要体现为如下两个方面:
Java:这是从产生到现在第一次真正意义的对于语言实现进行大刀阔斧的改造,一直以来,Sun公司将更多的精力放在类库的扩充和技术架构的规范定义上,比如JDBC的不断完善,JMS、JNDI、EJB等等非常重要的规范就是在这几年的发展过程中逐渐成熟起来的。俄而在语言方面,从1997年Java1.1推出之后Java Class文件就一直没有做过大的变动,在语言支持上也没有太多的变化,因此像《Thinking in Java》这样的“宝典”从第一次出版到现在也没有本质性的变化,更多的是作者对于一些观点的修正。而在类库方面,经过sun公司和开源社区的共同努力,已经让java变成了一个巨无霸的平台,除了JDK自身庞大的类库以外,SourceForge能够找到一些非常完善的应用框架,比如Hibernate、Ant、Spring就是其中的典范。而此次的更新则意味着在语言层次上Java将变得更加“职能”,更加适合实现面向业务的应用,而不再是一切需要依赖令人望而生畏的类库去实现也许不算复杂的应用。语言的“轻量化”的结果就是带来开发生产力的提高,同时依赖于Java世界目前拥有的强大资源,我想对于Java而言是一个新时代的开始,从1.5起,Java更加轻便,也不再阳春白雪高高在上,通过核心类数据共享,通过注解(Annotation)的支持,通过多线程的改进,Java也逐渐走入桌面应用市场。
.NET:有一点可以肯定,C#语言的革新绝对不是.NET 2.0新功能的全部,按照微软一贯的作风,从语言到类库再到开发工具的全线支持才是.NET 2.0的全部,从这个角度而言,前些日子公布的代号为“Whidbey”的Visual Studio 2005 Beta1才彰显微软的“狼子野心”,除了C#中泛型、匿名方法、迭代程序和局部类的引入,对于VB.NET也不例外,通过My命名空间极大的简化了对于系统资源的访问。一直备受非议的Managed C++也返璞归真,除了保留了传统C++的功能之外,对于托管应用程序的编写也终于可以使用令人赏心悦目的代码去完成,而不是






