.NET體系結構
對於.NET Framework體系結構,參考了"你必須知道的.NET"並”借用“別人的經典體系結構圖從宏觀上說明一下我的理解。
圖1
簡單的說下幾個名詞:
- CLR: 通用語言運行平台(Common Language Runtime),是.NET框架的核心,與Java界的JVM類似。是代碼執行的大管家,提供CTS和基礎服務。
- FCL: 類庫(Framework Class Library),如圖所示提供了很多的標准類型,方便程序設計人員,完成了程序設計基礎性工作,作為初學者要知道怎么用這些類庫。類庫的根就是System。
- BCL: 基類庫Base Class Library,作為FCL的基類庫,IO、String、NET等等必須熟練的掌握。
- CLS: 公共語言規范Common Language Specification ,是.NET開發語言必須遵守的規范的最小集合。
- CTS: 公共類型系統Common Type System,解決各個語言類型定義的不一致問題,成為了.NET體系中跨語言編程的規范,.NET所有語言都用這一個類型系統。
上圖中CTS和CLS構成了通用語言基礎架構CLI(Common Language Infrastructure)的一部分,CLI還包含CIL(常稱為MSIL),CIL就是我們常說的IL代碼,是所有的.NET語言編程生成的中間代碼,其實就像匯編語言一樣的中間代碼,只不過IL是處於.NET和匯編語言之間的語言。這一點和Java中的字節碼(Bytecode)類似,以后的文章會講解它們的區別。
CLI、CTS、CLS和CIL的關系可以用下圖來表示:
圖2
具體開發運用程序時如下圖:
圖3
JAVA技術體系
說下我找到的JAVA相關的資料,JAVA只是粗淺的了解一些。有的可能說的不准確,希望錯誤的地方大家指出,對於JAVA來說就沒有這么“龐大”了,畢竟JVM中只運行JAVA一種語言。
Sun官方所定義的Java技術體系包含Java程序設計語言、各種硬件平台上的Java虛擬機、Class文件格式、JavaAPI類庫、來自商業機構和開源社區的第三方Java類庫。
我們可以把Java程序設計語言、Java虛擬機、JavaAPI類庫這三部分統稱為JDK。(JavaDevelopmentKit),JDK是用於支持Java開發的最小環境。可以把JavaAPI類庫中的Java SE API子集和Java虛擬機這兩部分統稱為JRE(Java Runtime Environment),JRE是支持Java程序運行的標准環境。圖4展示了Java技術體系所包括的內容,以及JDK和JRE所涵蓋的范圍。
圖4
JAVA中的很多名詞不是很了解,先貼幾個:
- JPDA:Java平台的調試架構
- JavaFx:作為一個富客戶端平台的下一步演進。它的目的是為企業業務應用提供一個輕量級的,硬件加速的Java UI平台。
- Swing: 所謂的Lightweight組件,不是通過native方法來實現的,所以Swing的窗口風格更多樣化。但是,Swing里面也有heavyweight組件。比如JWindow,Dialog,JFrame
- 同時,由於AWT是通過操作系統實現的,所以AWT的組件只能采取各個操作系統的交集,組建數量少,功能少。而Swing則不依賴於操作系統,所以組件多,功能強。
- AWT: 是通過調用操作系統的native方法實現的,所以在Windows系統上的AWT窗口就是Windows的風格,而在Unix系統上的則是XWindow風格。
同樣JAVA的實現如圖5
圖5
圖4是根據組成部分的功能划分的,按照技術所服務領域划分, Java技術體系可以分為四個平台,分別為:
- JavaCard:支持一些Java小程序(Applets)運行在小內存設備(如智能卡)上的平台。
- JavaME(MicroEdition):支持Java程序運行在移動終端(手機、PDA)上的平台,對JavaAPI有所精簡,並加入了針對移動終端的支持,這個版本以前稱為J2ME。
- JavaSE(StandardEdition):支持面向桌面級應用(如Windows下的應用程序)的Java平台,提供了完整的Java核心API,這個版本以前稱為J2SE。
- JavaEE(EnterpriseEdition):支持使用多層架構的企業應用(如ERP、CRM應用)的Java平台,除了提供JavaSEAPI外,還對其做了大量的擴充並提供了相關的部署支持,這個版本以前稱為J2EE。
目前作為Andriod基本取代了JavaME成為了移動領域開發的熱點。JAVA體系相比.NET只多不少,不是一張圖就能展示完的。本來想找個完整圖展示所有的JAVA技術體系,可惜沒有找到。
接下來說下我理解的.NET(C#)和JAVA的相關技術對應關系。有錯請指出啊~~
.NET(C#) |
JAVA |
WPF/WinForm |
Swing等/AWT |
ASP.NET |
JSP、Servlet |
EntityFramework/NHibernate/ibatis.net |
Hibernate/ibatis |
Spring.NET |
Spring |
MVC |
Strusts |
Windows Mobile/Windows Phone |
Java ME/Andriod |
WCF/WebService |
WebService |
WF(Work Flow)- |
JBPM |
表1
今天的講解就到此,謝謝您的閱讀,下次再見。
如果您覺得這篇博客對您有所啟發,不妨點擊一下右下角的【推薦】按鈕。
如果您對本博客內容感興趣,請繼續關注我,我是Bull Li。