net framework目的:試圖將多種語言在“任意系統(tǒng)”中無阻礙地運(yùn)行,解決語言過度依賴系統(tǒng),也解決一些突出的問題(如dll hell)
于是,提出解決方法是:
多個(gè)語言都生成一個(gè)中間代碼,中間代碼在任意操作系統(tǒng)中(這個(gè)系統(tǒng)只要安裝了net framework),就可再次
生成本地可執(zhí)行文件,從而解決兩個(gè)問題:
1、多語言集一身
2、任意移植不同系統(tǒng)
于是,重點(diǎn)就是推出net framework(如下圖),上層是任意語言開發(fā),最終到netframewwork中被分成兩大類:web與窗體
因此,從vs2002開始,它努力的方向就是盡量把語言納入一個(gè)IDE中,因?yàn)樗⑺鼈冝D(zhuǎn)化成一個(gè)不差別相互識(shí)別的中間語言。
有人說,各種語言就是外在不同的表現(xiàn),就如同你喜歡紅色的衣服,而另外的人喜歡黑色的衣服一樣,只是不同的口味而矣。
至于微軟怎么做,最終是否達(dá)到,我們?cè)嚹恳源?/p>
如下圖,這是整個(gè)net framework的工作過程。
1、先由IDE中的vb.net、C#等語句編寫出源代碼;
2、由net framework中的語言編譯器,編譯成中間代碼
注意中間代碼是不可執(zhí)行的,但它在net framework透明的,即vb.net編的中間代碼是“識(shí)別”C#編譯的中間代碼。
上面過程就是程序員編寫、并生成安裝程序的過程。
3、它程序安裝或第一次執(zhí)行時(shí),它會(huì)再次被net framework中另一個(gè)編譯器JIT再次編譯,生成本地可執(zhí)行代碼。
注意,它只是第一次才編譯,后面就直接運(yùn)行已經(jīng)編譯的,所以第一次執(zhí)行時(shí)都會(huì)感覺很慢,后面就好了。
第3步,就是移植安裝的過程。
兩者都是要有net frmework。因此net framework中有兩個(gè)編譯器。
net framework有點(diǎn)類似vb,和Java,但兩者是有顯著的區(qū)別:
vb 是解釋性語言,邊解譯邊執(zhí)行。
java 是在虛擬機(jī)中翻譯執(zhí)行,每次都要這樣。
net framework卻不同,它的成品程序,只在JIT中即時(shí)編譯一次(這一次就點(diǎn)象jave或vb),
正因?yàn)閮H這一次,它生成了本地可執(zhí)行的二進(jìn)制代碼,因此下一次它將不會(huì)再次經(jīng)JIT編譯。
總結(jié),net framework就是一中介公司,你只須和中介公司接觸即可,它會(huì)自動(dòng)處理不同語言的交互,與底層硬件和不同的
操作系統(tǒng)打交道。因此開發(fā)效率更高、錯(cuò)誤更少、伸縮性更強(qiáng)。
聯(lián)系客服