當前位置:編程學習大全網 - 編程語言 - JAVA與.net的區別和各自優勢?

JAVA與.net的區別和各自優勢?

1.Java 是 簡 單 的

Java 與 C++ 極 為 相 似, 但 卻 簡 單 得 多。 高 級 編 程 語 言 的 所 有 特 性 中,

不 是 絕 對 需 要 的 都 已 刪 去 了。 例 如, Java 沒 有 算 符 過 載、 標 題 文 件、

預 處 理、 指 針 運 算、 結 構、 聯 合、 多 維 數 組、 模 板 及 隱 式 類 型 變 換。 如

果 妳 知 道 壹 點 C、 C++ 或 Pascal, 妳 很 快 就 會 駕 馭 Java。 這 裏 是 壹 個 簡 單 的 Java Hello World 程 序:

public class HelloInternet {

public static void main(String argv[]) {

System.out.println(“Hello In-ternet!”)

}

}

2.Java 是 面 向 對 象 的

Java 是 壹 種 面 向 對 象 的 編 程 語 言。 除 了 簡 單 的 類 型, 如 數 字 和 布 爾 算

子 之 外, Java 中 的 大 部 分 都 是 對 象。

正 如 任 何 面 向 對 象 的 語 言 壹 樣, Java 代 碼 也 按 類 組 織。 每 個 類 定 義 壹

組 規 定 對 象 行 為 的 方 法。 壹 個 類 可 以 繼 承 另 壹 個 類 的 行 為。 在 類 的

根 層 次 上, 通 常 是 類 對 象。

Java 支 持 單 繼 承 類 層 次 結 構。 這 就 是 說, 每 個 類 壹 次 只 能 繼 承 壹 個 別

的 類。 有 些 語 言 允 許 多 繼 承 性, 但 這 可 能 造 成 混 亂, 使 語 言 不 必 要 地

復 雜 化。 例 如, 難 以 想 像, 壹 個 對 象 會 繼 承 兩 個 完 全 不 同 的 類 的 行

為。

Java 還 支 持 摘 要 類 的 接 口。 這 允 許 編 程 人 員 先 定 義 接 口 的 方 法, 而 不

必 急 於 馬 上 確 定 方 法 的 實 現。 壹 個 類 可 以 施 行 多 個 接 口, 從 而 具 有

真 正 多 繼 承 性 的 許 多 優 點。 壹 個 對 象 也 可 實 施 任 意 數 量 的 接 口。 Java

接 口 與 IDL 接 口 極 其 相 似。 很 容 易 建 立 IDLJ 編 譯 器。 這 就 是 說, Java 可

用 於 CORBA 對 象 系 統 來 建 立 分 布 式 對 象 系 統。 鑒 於 在 許 多 計 算 機 系 統

中 都 采 用 IDL 接 口 和 CORBA 對 象 系 統, 這 種 兼 容 性 是 重 要 的。

3.Java 是 靜 態 類 型 的

在 壹 個 Java 程 序 中, 必 須 定 義 所 用 對 象 (數 字、 字 符、 數 組 等) 的 類 型。

這 有 助 於 編 程 人 員 很 快 發 現 問 題, 因 為 當 程 序 編 譯 時 可 以 檢 測 類 型

錯 誤。

不 過, Java 系 統 中 的 對 象 也 有 動 態 類 型。 要 求 壹 個 對 象 為 動 態 類 型 往

往 是 可 能 的, 所 以 編 程 人 員 寫 的 程 序 可 以 對 不 同 類 型 的 對 象 做 不 同

的 事。

4.Java 是 編 譯 型 的

當 運 行 Java 程 序 時, 它 首 先 被 編 譯 成 字 節 代 碼。 字 節 代 碼 非 常 類 似 於

機 器 指 令, 所 以 Java 程 序 非 常 高 效。 然 而, 字 節 代 碼 並 不 專 對 壹 種 特

定 的 機 器, 所 以 Java 程 序 無 需 重 新 編 譯 便 可 在 眾 多 不 同 的 計 算 機 上

執 行。

Java 源 程 序 被 編 譯 成 類 文 件, 它 相 當 於 程 序 的 字 節 代 碼 表 現。 在 壹 個

Java 類 文 件 中, 所 有 對 方 法 及 實 例 變 量 的 參 照 均 按 名 進 行, 並 在 第 壹

次 執 行 代 碼 時 加 以 分 辨。 這 使 得 代 碼 更 通 用, 更 不 易 受 修 改 的 影 響,

而 仍 具 高 效。

5.Java 是 體 系 結 構 中 立 的

Java 語 言 對 每 種 計 算 機 都 壹 樣。 比 如, 簡 單 的 類 型 都 是 不 變 的: 整 數

總 是 32 位, 長 整 數 總 是 64 位。 令 人 奇 怪 的 是, 諸 如 C 及 C++ 等 時 髦 的

編 程 語 言 卻 不 是 這 樣。 由 於 這 些 語 言 定 義 如 此 自 由, 每 種 編 譯 器 及

開 發 環 境 便 各 有 不 同 了, 這 使 程 序 的 移 植 成 為 討 厭 的 問 題。 Java 程 序

的 移 植 卻 很 容 易, 而 且 不 需 要 進 行 重 新 編 譯。

6.Java 是 健 全 的

Java 程 序 不 可 能 造 成 計 算 機 崩 潰。 Java 系 統 仔 細 檢 測 對 內 存 的 每 次

訪 問, 確 認 它 是 合 法 的, 而 且 不 致 引 起 任 何 問 題。

不 過, 即 使 Java 程 序 也 可 能 有 錯 誤。 如 果 出 現 某 種 出 乎 意 料 之 事, 程

序 不 會 崩 潰, 而 把 該 例 外 拋 棄。 程 序 會 發 現 這 類 例 外, 並 加 以 處 理。

傳 統 的 程 序 可 以 訪 問 計 算 機 的 全 部 內 存。 程 序 可 能 (無 意 識 地) 修 改

內 存 中 的 任 何 值, 這 就 會 造 成 問 題。 Java 程 序 只 能 訪 問 內 存 中 允 許 它

們 訪 問 的 那 些 部 分, 所 以 Java 程 序 不 可 能 修 改 不 擬 修 改 的 值。

7.Java 是 小 巧 的

由 於 Java 的 設 計 是 要 在 小 的 計 算 機 上 運 行, 作 為 壹 種 編 程 語 言 來 說

其 系 統 是 相 對 較 小 的。 它 能 有 效 地 在 4MB 以 上 RAM 的 PC 機 上 運 行。 Java

翻 譯 器 只 占 用 幾 百 KB。 這 種 翻 譯 器 對 Java 的 平 臺 無 關 性 和 可 移 植 性

是 可 靠 的。

由 於 Java 很 小, 它 對 內 存 很 小 的 計 算 機, 如 基 於 Java 的 PC 機, 以 及 電

視 機、 烤 箱、 電 話 機 及 家 用 計 算 機 等, 是 很 理 想 的。

8.Java 是 多 線 程 的

Java 程 序 可 以 執 行 壹 個 以 上 的 線 程。 比 如, 它 可 以 在 壹 個 線 程 中 完 成

某 壹 耗 時 的 計 算, 而 其 它 線 程 與 用 戶 進 行 交 互 對 話。 所 以 用 戶 不 必

停 止 工 作, 等 待 Java 程 序 完 成 耗 時 的 計 算。

在 多 線 程 環 境 中 的 編 程 通 常 是 困 難 的, 因 為 許 多 東 西 可 能 同 時 出

現。 但 是, Java 提 供 了 易 於 使 用 的 同 步 特 性, 使 編 程 更 為 方 便。

Java 線 程 通 常 被 映 射 為 實 際 的 操 作 系 統 線 程, 只 要 底 層 操 作 系 統 支

持 這 種 映 射。 因 此, 用 Java 寫 的 應 用 程 序 可 說 是 “MP 熱”。 這 就 是 說,

如 果 它 們 在 多 處 理 器 機 器 上 運 行, 它 們 更 將 表 現 不 凡。

9.Java 是 可 收 集 無 用 的 存 儲 單 元 的

用 C 及 C++ 寫 軟 件 的 編 程 人 員 必 須 仔 細 跟 蹤 所 用 的 內 存 塊。 當 壹 個 塊

不 再 使 用 時, 他 們 務 必 讓 程 序 釋 放 它, 從 而 方 可 再 用。 在 大 的 項 目

中, 這 可 能 很 困 難, 並 往 往 成 為 出 錯 和 內 存 不 足 的 根 源。

在 Java 的 情 況 下, 編 程 人 員 不 必 為 內 存 管 理 操 心。 Java 系 統 有 壹 個 叫

做 “無 用 單 元 收 集 器” 的 內 置 程 序, 它 掃 描 內 存, 並 自 動 釋 放 那 些 不

再 使 用 的 內 存 塊。

10.Java 是 快 速 的

Java 比 典 型 的 腳 本 語 言 大 為 有 效, 但 它 比 C 慢 20 倍。 這 對 大 多 數 應 用

是 可 接 受 的。

不 久 的 將 來, 代 碼 生 成 器 就 可 供 利 用 了, 這 將 使 Java 程 序 幾 近 於 用 C

或 C++ 編 寫 的 程 序 那 麽 快。

11.Java 是 安 全 的

Java 程 序 沒 有 指 針, 而 且 象 這 樣 的 字 節 代 碼 程 序 強 在 類 型 上, 所 以 在

執 行 之 前 它 可 能 驗 證 Java 程 序。 被 驗 證 的 Java 程 序 得 以 保 證 不 突 破

Java 語 言 的 任 何 限 制, 而 且 可 以 安 全 地 執 行。 Java 字 節 代 碼 驗 證 被

Web 瀏 覽 器 用 來 確 保 小 程 序 不 含 病 毒。

12.Java 是 可 擴 展 的

Java 程 序 可 與 用 其 它 語 言 編 寫 的 現 存 程 序 庫 連 接。 由 於 Java 數 據 結

構 與 C 的 數 據 結 構 的 類 型 極 為 相 似, 這 是 相 當 方 便 的。 最 大 的 問 題 在

於, 現 有 多 線 程 程 序 庫 為 數 不 多。

Java 程 序 可 以 聲 明 某 些 方 法 是 內 部 的, 然 後, 把 這 些 內 部 方 法 映 射 成

軟 件 庫 所 定 義 的 功 能, 從 而 動 態 地 鏈 接 到 虛 擬 機

--------------------------------------------------------------------

1.標準集成:XML、SOAP及其它

過去,微軟的體系結構建立在COM/DCOM基礎上,COM/DCOM是進程間通信的二進制標準。雖然這個標準本身沒有什麽失誤,但是它與微軟以外的領域格格不入。也就是說,這個標準成了實現與其它軟件平臺互操作的瓶頸。

除此之外,數據也是壹個問題。雖然ADO簡化了數據訪問,但是把數據從壹個地方傳送到另外壹個地方就成了問題。ADO Recordset(記錄集)對象是壹個存儲了數據的二進制結構,而這種二進制格式對於非微軟的平臺沒有任何意義。

.Net彌補了這些缺陷,因為它完全基於標準。比如,數據用XML的格式通過進程邊界,而這個數據有壹個到XSD的連接,所以任何客戶端都可以正確地轉化數據。

SOAP基於XML,用於與Web服務的通信。集成SOAP以後,不管客戶端運行的是不是微軟的操作系統,都可以實現簡單的可編程訪問。

2.簡化應用

COM所面臨的壹個頭痛的問題就是應用。COM利用Windows註冊表來定位機器上的組件。這個想法是不錯的:每個註冊的組件只有壹個實例,所有的應用程序都使用相同的版本。COM具有向後兼容性,也就是說新版本兼容老版本,但是開發人員可能會破壞這種兼容性。

.Net則采用了不同的方法:它根本就沒有使用註冊表。相反,微軟的建議是每個應用程序使用自己局部的組件(在.Net稱為“assembly”)。利用這種方法,用於應用程序Foo的Assembly X如果發生變化,Assembly X的Application Bar不會受到任何影響。這種方法聽起來好象以前壹臺機器上同壹個DLL的多個拷貝,的確是這樣。不過妳不會遇到應用程序查找Windows\System32目錄的問題。

由於.Net不使用註冊表,很多應用都可以用簡單的拷貝命令來完成,通常沒有必要開發安裝程序。此外,應用程序不會瑣定assembly,所以升級DLL的時候不必關閉應用程序。

3.Web服務支持

在流行的Web服務方面,微軟發揮著重要的作用,而.Net為開發Web服務帶來了前所未有的便利。用Notepad就可以建立簡單的Web服務,甚至不必利用編譯器,只要對它們進行簡單的調用即可,因為.Net會對它們進行編譯,甚至提供壹個測試頁供用戶檢驗其功能。.Net 擁有所有必需的渠道,可以生成用戶所需的所有文件,比如WSDL文件。

.Net也是壹個聰明的Web服務使用者:只要設置了指向某個Web服務的索引,妳就可以把它當作本地的assembly。妳可以獲得完整的Intel許可和功能實現幫助。

Web服務對於發送數據是非常重要的,感謝ADO.Net,Web服務可以利用簡單或者復雜的數據,並以XML格式把它們發送到任何客戶端,最後設置壹個鏈接,指回到壹個描述數據模式的XSD。

4.用於所有.Net語言的標準工具集

最終,妳會擁有壹個適用於所有語言的集成工具集。妳會擁有壹個統壹的IDE、調試工具以及其它類似的工具。因此,其它公司可以把他們的語言嵌入IDE環境,並獲得.Net工具所有的支持。比如富士通開發了netCOBOL .Net,它已經直接集成到IDE中,因此可以用 COBOL編寫Web服務和Windows應用並獲得微軟提供的調試和profiling(監管)工具。

.Net是個開放的架構,所以其它廠商也可以提供自己的工具。比如Borland,該公司已經宣布其下壹版Delphi將具有建立.Net應用的功能,同時它也保證,Delphi會擁有自己的IDE,不會嵌入Visual Studio .Net。

5.對移動設備的支持

Visual Studio .Net發布不久,微軟就推出了移動Internet工具包(Microsoft Mobile Internet Toolkit ,MMIT),以便用.Net構建移動應用。該工具包提供了可視化功能,妳可以直觀地拖動和下拉面向移動設備的窗體和控件。該工具包有利於正確書寫標記語言(比如WML、WAP等等)。

.Net簡化架構(.Net Compact Framework)不久就會面市,它是.Net架構的縮略版,設計用於Pocket PC設備。有了這個架構,開發人員就可以開發出豐富的Pocket PC計算機應用。妳可以編寫壹個運行於小型設備上的應用,比如用於Pocket PC設備或者具有Web功能的手機。事實上,MMIT包含了很多仿真程序,它們使用了真正為這類設備編寫的ROM代碼,所以在妳的應用程序投入使用之前,可以首先測試其用於此類設備時的性能。

6.代碼管理

.Net管理用戶的代碼,從很多方面看,這壹點都是很重要的,比如減少bug以及構建更多可擴展的應用。.Net可以處理以下操作:內存分配和回收,進程及線程的創建和終止,以及運行代碼的訪問許可。

VB開發人員先前面臨的問題——比如內存管理、線程和進程創建——現在都可以由.Net來處理。而C++程序員可以轉向C#,.Net代替他們處理這些操作後,內存泄露和其它bug出現的可能性將大大減少。擁有了被管理的代碼,妳可以訪問.Net所有跨語言的能力。

7.平臺獨立

雖然.Net是為微軟的操作系統創建的,但是微軟的確為ECMA標準委員會發布了壹部分框架和C#。比如,Mono project實現了Linux的.Net,包括架構和C#編譯器。這意味著很多應用(特別是基於Web的應用)壹次編寫完成後就可以運行於多種平臺上。

8.充足的學習資源

.Net的學習曲線非常重要,可能.Net的方面的書要比其它所有編程技術的書都多。此外,微軟和第三方團體開設了很多課程,可以讓開發人員很快就上手。最後,很多網站為開發人員員學習.Net提供了技術和指導。

9.現代化語言

VB.Net和C#都是現代化的語言。它們完全是面向對象的,設計的時候消除了很多VB 和C++的矛盾。這兩種語言使用了多層式架構 (n-tier),這是壹種基於組件的方法。

比如,C#取消了指針和其它壹些結構,它們曾經給C++程序員(特別是新手)帶來很多嚴重的問題。代碼由.Net架構管理後,VB.Net 和C#都從中受益。這個架構還包括壹些基礎的對象,它們是開發多線程、支持XML等應用所必須的。

10.跨語言標準基本類型

VB開發人員曾經面臨壹個致命的問題:VB中的字符串與C++中的字符串不同,所以調用Windows API函數的時候會出現壹些問題。.Net確定了所有類型的標準定義,所以VB中的字符串和C#中的字符串相同,也和netCOBOL .Net中的字符串相同。這意味著妳再也不必擔心語言A中的整型數據是32位而語言B中只有16位。妳可以確信不同語言的數據類型都相同,可以更好地進行跨語言集成。

優點多於缺點

.Net具有很多明顯的優點,可以提高開發人員的效率,減少bug,加快應用開發並簡化使用。IT人員對.Net保持了應有的警惕,因為它畢竟還是個新事物,需要有壹個比較艱難的學習曲線。但是對於大多數組織而言,其優點遠遠多於缺點。有了.Net,妳可以在未來的開發項目中贏得更高的生產力。

  • 上一篇:長沙工業貿易學校是公辦還是民辦
  • 下一篇:有什麽好玩的單機遊戲新出的如題 謝謝了
  • copyright 2024編程學習大全網