Fork me on GitHub

《论C#与Java之异同》一文已更新[转载]

作者 Hartmut Wilms译者 李剑 发布于 2007年5月4日 上午8时0分

原文:http://www.infoq.com/cn/news/2007/05/comparison-csharp-java-updated

2001年的时候,Dare Obasanjo写过一篇文章,名为《论C#与Java之异同(Comparison of Microsoft's C# Programming Language to Sun Microsystems' Java Programming Language)》,该文以其详尽与精确成为了同类文章中的佼佼者。现在,他又根据两种语言的最新版本——Microsoft C# 2.0Java Standard Edition 6——对原文进行了修改。

Dare Obasanjo在文中对二者的特性与概念进行了客观的分析。他的文章与其它文章的区别就在于,他从统揽全局的角度上对两种语言及各自在对应平台上的实现进行了完整的论述。因此,该文几乎可以用来当作C#和Java的参考手册。在文中,他还对关键实现做了说明,并分析了两种语言的优缺点。

文章结构如下所示:

  1. C#和Java的共同点是什么?
  2. 哪些特性是在两种语言中并存,但是有着细微差别的?
  3. 哪些概念是在两种语言中并存,但是相差甚远的?
  4. 哪些特性或者概念是只在C#中存在,而在Java中不存在的?
  5. 哪些特性或者概念是只在Java中存在,而在C#中中不存在的?
  6. 结论

其中关于泛型(Generics)元数据Annotations(Metadata Annotations)的比较最为引人注意,因为这些特性虽然在实际应用中看起来很相似,但是在Java和C#的各自实现中,却有着很明显的细小差异。该文中另外一处亮点则是Dare Obasonjo引用了他在2001年时所得出的结论,来阐述Java和C#在发展方向上的变化:

[...] 自2001年以来,C#和Java中都引入了一些共同的特性,诸如泛型、foreach循环、列举、自动装箱、可变长度参数列表和元数据Annotations。但是在几年之后,我们却发现C#和Java却走上了两条不同的路。C# 3.0的当前计划的重点是语言集成查询(LINQ)项目,它是要把一些面向数据的特性,包括查询、数据集操作、数据转换和类型推断,直接引入到C#中来。再加上C#中已有的一些特性,例如匿名方法和nullable types,C#在未来的几年内,与Java的区别将会越来越大。

Dare Obasanjo的文章给那些想从Java换成C#的开发人员提供了大量信息,反之亦然。对于那些想获得当前语言的更多特性与概念的开发人员来说,这篇文章也是很好的参考。

查看英文原文:A Comparison of C# to Java, Updated


译者简介:李剑中国Eclipse社区插件开发版版主,在JavaEye拥有RCP专栏, 北航软件工程硕士。现就职于Ethos,热衷于设计模式,敏捷软件开发的研究与实践。为InfoQ中文站贡献内容,请邮件至china-editorial@infoq.com

posted @ 2007-05-13 16:59  张善友  阅读(2017)  评论(0编辑  收藏  举报