C#和Java的對比

    自從互聯網出現以來,Java就成了許多開發者的首選.而許多C++開發者在較短的時間內轉移到了Java開發者的隊伍中來. Java成功的開發和實現了許多高質量的多線程動畫, 遊戲, 以及分佈的應用程序. 更重要的是,Java 語言是完全平臺無關的.    

被稱作Apllets(小應用程序)的Java程序在被下載到本地以前必須首先通過安全認證,這樣就避免了任何病毒鑽入用戶的計算機的企圖. 許多新的改進,諸如旋擺軟件包(swing package), Java2D API, 連網軟件包(java .net)在最初的Java開發包發佈以後被加進了這種語言裏. 從Sun公司發佈Java以來,它的許多競爭對手開發了這種熱門語言的替代品,一些公司甚至在兩年以前就開始了.     
現在一家無需更多介紹的公司--微軟已經發布了一種新的叫做微軟.NET的技術. .NET家族的一種主要的語言是C#或者說C-sharp. 這種語言是從Java/C++繼承而來的. 從我的對C#的六個月的技術上的經驗來說,我覺得C#或多或少與Java是相似的.但是C++的許多功能,比方說操作符重載(它在Java中已經被移去了)還存在於C#中.     
Java程序能夠在安裝了Java虛擬機或者JVM的任何平臺上運行.但是.NET程序的平臺要求安裝了通用語言運行庫或者稱做CLR. 它是所有.NET語言運行所需的運行庫.所以一種.NET語言能夠調用另一種.NET語言寫成的模塊和函數. 更進一步的說,如果你學習了種像C#之類的語言,那麼你就很容易學習另一種.NET語言因爲所有的.NET語言遵循微軟所謂的.NET Framework(架構). 這種架構包括了編寫和安裝健壯的.NET應用程序所必需的類庫.使用.NET你可以通過ASP.NET進行服務器端的編程,這點非常像JAVA中的servlets.     
就象Java中的Applets, C#引入了WinForms 和WebForms的概念.使用WinForms你可以設計基於Windows的應用程序而使用WebForms你能夠開發Web應用程序. 這點可以要麼通過C#編程或者是使用Visual Studio.NET這樣的開發環境工具來實現. 它包含了Visual C#,使用Visual C#你可以非常容易的編寫C#應用程序.     
在我們使用Visual C++編程的時候,WinForms幾乎就是win32程序.用C++來開發這些程序是可能的.但是VC++給我們提供嚮導來簡化我們的開發過程.現在Visual C#也在做同樣的工作.因此如果你已經是一個VC++的程序員了,那麼你最好試一試VC#.     
Java程序和C#程序的比較     
我們應該比較一下用Java寫成的程序和C#的有什麼不同. 我們將討論兩個程序間主要的不同點.     
Hello Java 程序     
class Hello { // 類聲明     
public static void main(String args[]) { // main 方法,入口點     
System.out.println("Hello Java"); // 向控制檯輸出Hello Java     
}     
}     
Hello C# 程序     
using System; // 調用System命名空間     
class Hello { // 類聲明     
public static void Main () { // main 方法, 入口點     
console.writeLine("Hello C#"); // 向控制檯輸出 Hello C#     
}     
}     
在Java中, lang軟件包是自動引入的.在簡單的程序裏沒有必要引入這個包.但是在C#中,我們不得不在所有的程序裏調用System命名空間. 請記住控制檯是System命名空間下的一個類. 試着運行一下上面的程序並查看它們的輸出結果.     
Main方法     
Java:你有可能編寫一個沒有main方法的Java程序,只要這個類是用來作爲父類.但是隻有類中包含有正確的Main方法的時候程序才能運行.     
C#:沒有正確的Main方法就不可能編譯C#源程序.如果main方法缺失了,那麼編譯器就會顯示一個錯誤消息:程序'filename.exe'沒有定義入口點.     
繼承     
Java 和C#都不支持多重繼承而且都提供接口的概念作爲多重繼承的替代品.但是C#在接口中包括了更高級的內容.請在本文末找出題爲新增加的特點的內容.     
操作符和控制流語句     
Java中出現的所有諸如算術,邏輯,自增和自減等操作符都可以在C#中找到. 而Java中的像if, else, if-else, for, do-while, while等控制流語句C#統統支持. 但是C# 增加了C++中流行的goto語句.     
異常處理     
在C#中你可以重用try, catch, finally, throws 語句處理運行時錯誤(通常也叫做異常).C# 中的異常處理過程除了一些小的不同以外幾乎與Java完全相同. C#中System.Exception命名空間是所有異常類的基類.     
多線程     
C#中多線程的應用比起Java來要容易得多.我們可以使用Monitor 和 Mutex類同步線程.     
新增特點     
索引,屬性和代理是C#中的新概念.索引幾乎與Java中的向量相同. 對其新特點的完全的討論已經超出了我們的範圍.但是我將盡量在這個網站的其它地方解釋它們. C#引入了Java所沒有的操作符重載的概念.但是Java和C#都支持方法重載.     
讓我們回到對接口的討論,我們能夠驗證包括在接口中的方法是否是使用is 和 as 操作符實現的.當我們實現接口的時候能避免命名衝突.你甚至可以將兩個接口結合到一箇中來,並在類中實現這個複合的接口,如下面的代碼所示:     
using System;     
public interface First {     
void A();     
void B();     
}     
public interface Second {     
void C();     
}     
public interface Combined: First, Second { }     
class Combineimple: Combined {     
// 這裏是程序代碼     
// main方法     
} }     
而且C#在顯示編譯錯誤的時候還顯示它們的錯誤代碼.你可以搜索與SDK有關的在線文檔尋找和這個錯誤代碼有關的內容並找出這個錯誤發生的原因的細節.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章