Monday, July 26, 2004

C#中的泛型与Java中的泛型

看了一下MSDN上关于C#2.0中的泛型的介绍.发现确实.NET与Java都实现了基于虚拟机的程序语言中的泛型.但是.NET的支持更加好,.NET是从CLR上直接支持了泛型,也就是说微软直接在bytecode上做文章,使得虚拟机本身就支持了泛型,这样带来的一个好处是能更加广泛的支持泛型,由此可以断定,未来支持.NET平台上的语言都会支持泛型,这样可以扩大.NET的影响力,拉拢更多的用其他语言基于.NET的开发人员.从实现的泛型功能上也比Java更多.

Java的泛型原来只是对编译器的修改,最终的结果是从编译器的层次上实现了泛型,并且可以让使用泛型的程序编译过后支持1.5版本以前的JDK.这样做似乎是与C#的泛型有了本质的区别,因为不能从虚拟机的层次上支持泛型,那么就不能利用虚拟机对内存,metadata上的支持.于是很多的开发人员开始批评Java的泛型.对于Java的泛型还需要更多的研究.

JDK1.5.0 已经更名为JDK5.0 由此可以揣测,这次更名是为了压过C#2.0的风头,微软从2001年开始正式推出.NET以后,短短的3年时间,不仅版本直追Java,而且功能上丝毫不逊于Java,这已经让Sun头疼不已.但是从另外一个角度看,Sun和微软已经达成协议,这中间关于Java和.NET平台上的技术交流是否存在就不得而知了.

在Borland,Janeva项目已经快要成型,JBuilder XI正在推Beta版本,由此可以预见,Java和.NET这两个同素异型体会有同化或者消失的一天.但是只要还有一天尚未同化,那么同时掌握这两个都是基于虚拟机的东西也不会是一件困难的事情,也会成为一件必须的事情.这对开发人员来说似乎是一种折磨,一种锻炼,一窍通则百通~


No comments:

Post a Comment