天天看點

《論C#與Java之異同》一文已更新[轉載]

作者 Hartmut Wilms譯者 李劍 釋出于 2007年5月4日 上午8時0分

2001年的時候,​​Dare Obasanjo​​​寫過一篇文章,名為《​​論C#與Java之異同(Comparison of Microsoft's C# Programming Language to Sun Microsystems' Java Programming Language)​​​》,該文以其詳盡與精确成為了同類文章中的佼佼者。現在,他又根據兩種語言的最新版本——​​Microsoft C# 2.0​​​和​​Java 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​​