java-畢業(yè)論文外文文獻(xiàn)翻譯_第1頁
java-畢業(yè)論文外文文獻(xiàn)翻譯_第2頁
java-畢業(yè)論文外文文獻(xiàn)翻譯_第3頁
java-畢業(yè)論文外文文獻(xiàn)翻譯_第4頁
java-畢業(yè)論文外文文獻(xiàn)翻譯_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

AdvantagesofManagedCodeMicrosoftintermediatelanguageshareswithJavabytecodetheideathatitisalow—levellanguagewithasimplesyntax,whichcanbeveryquicklytranslatedintonativemachinecode。 Havingthiswell-defineduniversalsyntaxforcodehassignificantadvantages。PlatformindependenceFirst,itmeansthatthesamefilecontainingbytecodeinstructionscanbeplacedonanyplatform;atruntimethefinalstageofcompilationcanthenbeeasilyaccomplishedsothatthecodewillrunonthatparticularplatform.Inotherwords,bycompilingtoILWeobtainplatformindependencefor。NET,inmuchthesamewayascompilingtoJavabytecodegivesJavaplatformindependence。PerformanceimprovementILisactuallyabitmoreambitiousthanJavabytecode。ILisalwaysJust-In—Timecompiled(knownasJIT),whereasJavabytecodewasofteninterpreted。OneofthedisadvantagesofJavawasthat,onexecution,theprocessoftranslatingfromJavabytecodetonativeexecutableresultedinalossofperformance.Insteadofcompilingtheentireapplicationinonego(whichcouldleadtoaslowstart-uptime),theJITcompilersimplycompileseachportionofcodeasitiscalled(just-in—time).Whencodehasbeencompiled.once, theresultantnativeexecutableisstoreduntiltheapplicationexits,sothatitdoesnotneedtoberecompiledthenexttimethatportionofcodeisrun.Microsoftarguesthatthisprocessismoreefficientthancompilingtheentireapplicationcodeatthestart,becauseofthelikelihoodthatlargeportionsofanyapplicationcodewillnotactuallybeexecutedinanygivenrun。UsingtheJITcompiler, suchcodewillneverbecompiled.ThisexplainswhywecanexpectthatexecutionofmanagedILcodewillbealmostasfastasexecutingnativemachinecode.Whatitdoesn’texplainiswhyMicrosoftexpectsthatwewillgetaperformanceimprovement.Thereasongivenforthisisthat, sincethefinalstageofcompilationtakesplaceatruntime,theJITcompilerwillknowexactlywhatprocessortypetheprogramwillrunon.Thismeansthatitcanoptimizethefinalexecutablecodetotakeadvantageofanyfeaturesorparticularmachinecodeinstructionsofferedbythatparticularprocessor.實際上,IL比Java字節(jié)代碼的作用還要大。IL總是即時編譯的(簡稱JIT),而JaVa字節(jié)代碼常常是解釋型的,Java的一個缺點是,在運行應(yīng)用程序時,把Java字節(jié)代碼轉(zhuǎn)換為內(nèi)部可執(zhí)行代碼的過程可可能導(dǎo)致性能的損失。JIT編譯器并不是把整個應(yīng)用程序一次編譯完(這樣會有很長的啟動時間),而是只編譯它調(diào)用的那部分代碼。代碼編譯過一次后,得到的內(nèi)部可執(zhí)行代碼就存儲起來,直到退出該應(yīng)用程序為止,這樣在下次運行這部分代碼時,就不需要重新編譯了。Microsoft認(rèn)為這個過程要比一開始就編譯整個應(yīng)用程序代碼的效率高得多,因為任何應(yīng)用程序的大部分代碼實際上并不是在每次運行過程中都執(zhí)行。使用JIT編譯器,從來都不會編譯這種代碼從來都不會被編譯。這解釋了為什么托管IL代碼的執(zhí)行幾乎和內(nèi)部機器代碼的執(zhí)行速度一樣快,但是并沒有說明為什么Microsoft認(rèn)為這會提高性能。其原因是編譯過程的最后一部分是在運行時進(jìn)行的,JIT編譯器確切地知道程序運行在什么類型的處理器上,利用該處理器提供的任何特性或特定的機器代碼指令來優(yōu)化最后的可執(zhí)行代碼。傳統(tǒng)的編譯器會優(yōu)化代碼,但它們的優(yōu)化過程是獨立于代碼所運行的特定處理器的.這是因為傳統(tǒng)的編譯器是在發(fā)布軟件之前編譯為內(nèi)部機器可執(zhí)行的代碼。即編譯器不知道代碼所運行的處理器類型,例如該處理器是x86兼容處理器或Alpha處理器,這超出了基本操作的范圍。例如VisualStudio6優(yōu)化了一臺一般的Pentium機器,所以它生成的代碼就不能利用PentiumIn處理器的硬件特性。相反,JrT編譯器不僅可以進(jìn)行VisualStudio6所能完成的優(yōu)化工作,還可以優(yōu)化代碼所運行的特定處理器。Traditionalcompilerswilloptimizethecode,buttheycanonlyperformoptimizationsthatareindependentoftheparticularprocessorthatthecodewillrunon。Thisisbecausetraditionalcompilerscompiletonativeexecutablebeforethesoftwareisshipped.Thismeansthatthecompilerdoesn’tknowwhattypeofprocessorthecodewillrunonbeyondbasicgeneralities,suchasthatitwillbeanx86-compatibleprocessororanAlphaprocessor.VisualStudio6,forexample,optimizesforagenericPentiummachine,sothecodethatitgeneratescannottakeadvantageofhardwarefeaturesofPentiumIIIprocessors。Ontheotherhand,theJITcompilercandoalltheoptimizationsthatVisualStudio6can,andinadditionitwilloptimizefortheparticularprocessorthecodeisrunningon。LanguageinteroperabilityTheuseofILnotonlyenablesplatformindependence;italsofacilitateslanguageinteroperability。Simplyput,youcancompiletoILfromonelanguage,andthiscompiledcodeshouldthenbeinteroperablewithcodethathasbeencompiledtoILfromanotherlanguage。You’reprobablynowwonderingwhichlanguagesasidefromC#areinteroperablewith.NET,solet'sbrieflydiscusshowsomeoftheothercommonlanguagesfitinto。NET.VisualBasic.NETVisualBasic.NEThasundergoneacompleterevampfromVisualBasic6tobringitup—to—datewith。NET.ThewaythatVisualBasichasevolvedoverthelastfewyearsmeansthatinitspreviousversion,VisualBasic6,itwasnotasuitablelanguageforrunning。NETprogramsoForexample,itisheavilyintegratedintoCOMandworksbyexposingonlyeventhandlersassourcecodetothedeveloper—mostofthebackgroundcodeisnotavailableassourcecode.Notonlythat,itdoesnotsupportimplementationinheritance, andthestandarddatatypesVisualBasic6usesareincompatiblewith。NET。VisualBasic6wasupgradedtoVisualBasic。NET,andthechangesthatweremadetothelanguagearesoextensiveyoumightaswellregardVisualBasic。NETasanewlanguageoExistingVisualBasic6codedoesnotcompileasVisualBasic.NETcode。ConvertingaVisualBasic6programtoVisualBasic.NETrequiresextensivechangestothecode.However,VisualStudio.NET(theupgradeofVSforusewith.NET)candomostofthechangesforyou.IfyouattempttoreadaVisualBasic6projectintoVisualStudio.NET,itwillupgradetheprojectforyou,whichmeansthatitwillrewritetheVisualBasic6sourcecodeintoVisualBasic。NETsourcecode。Althoughthismeansthattheworkinvolvedforyouisheavilycutdown,youwillneedtocheckthroughthenewVisualBasic。NETcodetomakesurethattheprojectstillworksasintendedbecausetheconversionmightnotbeperfect。OnesideeffectofthislanguageupgradeisthatitisnolongerpossibletocompileVisualBasic.NETtonativeexecutablecode.VisualBasic。NETcompilesonlytoIL,justasC#does.IfyouneedtocontinuecodinginVisualBasic6,youmaydoso,buttheexecutablecodeproducedwillcompletelyignorethe。NETFramework,andyou'llneedtokeepVisualStudio6installedifyouwanttocontinuetoworkinthisdeveloperenvironment.^uop????dd?qoMIBNoJSVSujpU∏QIOJ#f?snue?noA弗q】su??u?s?^?o?sns?s?ngu??ju???du?o?JJHN'??pJθjs??oψ弗q]s?u??g??ss???oseq?u??soq]s?sn#f's?u?jg???u?pun????foψysp?]?^re]Supqjop??jsujIHNoqjiMψθMojμιeMAoqjj?#f?snojjs??s??其PUy????vs??sn++fjsou?]eq]s]??dX?yosojoτp?[^iaN^o!PmS??ns??jos??nj??j??nsnoψ???jo?加UeAPe?那]oj??g???es??sn#fζsτqjjo?sn???g?斗IOM?u?e?mJJHNo??pOjUTj∣mqs??s?ngu??#foq]MONOPeO[UM0p?j?j?d?s?既UP(eui????^?uo#f?snoj??g????Ms??snXlOM?u?e?m1HN^0Ii。!Ido13NΓlWιsJΛsJx!uι???lo]p?pp?oqoj?s?ngu??js?j???^?13N,ttΓ∣e∩S!Λ,(JJHNo??s?g??ns??jo#?seqons)?s?ngu??ιoqjo?u?osu??po???mosJnOX?iijmo]p??u∩ζnoXuoq],?j?s?d人]AjouiouiSeXq??qjAqp?z?uso??js??po?j∏oA弗q]ju?j?odu??sjτjiOSIs。]Xχ9jBSOdXlXjouisuis4^∏qoqιss?d∏tmysψ?po??j?j?u?soj??g?jous?j???du?o?++?oqjiuoosPUeuop??nd?u?u?j?ju?od?????—?vo?josu???ju?SMOUe++?]呻u?op??jjoq]jo?sn???g^s?ss???p?s?u?uiSmsnu?qm(?po?sno???jdoq]u?UMOqSPlOMK?X —oq]Seqons)s??nj??j++?PlePUe]suou?snOJp??u????vnoA弗q]pu?jos??????vno?,(s?ss???jo??u?ju?qu???dp?nu?jos?j??du??j'?[duIeX?IOJ)s?d^jp?s?u?u?uoJJHNoKqp?j?oddnsjou??e弗q]s??nj??j?snoj]du??口enoAj??ou?Ues?s??jj???du?o??^?odo??ju?W(??ojjjos?joj即AeqjnoqjiM?po?++?p?s?u?u?UiOJjs?ss???++?p?s?u?u?un????ue??Mysψs??po?#???AO++?p?s?u?u?Smsnjo?加UeAPe???l^13No??s?g??nsi?iouιss???9ψus^umpζnoXjιsbχsnf^s???p?s?u?u??noA???s????v^^^^^^?}sse[?人wss????s-:?po?oψs??j?^?v'ss???++?u???d?s?u?j?p}sse[?^wss???:?po?++?p?s?u?u??mSnqJJ。?po?++?jπoAu?s?d人]p?s?u?u?unPUes?d人1p?s?u?u?xτuιue?noA弗q]su??u?s?^?P[qe]∏ooX???p?up?pp?gu??Uesu??juo?ysψqjj?u??ue?j???du?o?oq],?po?p?s?u?u?oj???du?o?noAu?qmysψs?++?]∏OqeSmψsups?j?ju??^?。?po??uppeu???p?ujop??jsu?qjj?u????u?^????vPUe'?po?p?s?u?u?oj???du?o?ojμιeMnoA弗q]s?u?nss?uoq]qoτqM'j???du?o?oq]ojj??/s??joq]SSedos??ue?no?(∏p?qτμoosuι>§msn#:?po?jπoAjoSmumSoqoq]oj?u??Sutmo∏ojoψPPeA∣duιτsue?noAuoq]工IOM?u?e?mIHNo??puτqjiMuπjoj?po?++?jπoAMnoAJlo?u?pun?JJHN'??pJOApuopuodopmUnl????v具弗q]u?A?MOq'su??u?os??ji。uop???j?pou?jnoqjiM?po??[ge]n??X???p?uoj???du?o?oj?nupuo?????v?po????nos++?Suμsτxo弗q]su??u?s?^?NlOM?u?e?mJJHNo??pJioddnsojp?pp?u??g???qSUO[su?]X?ζia^[^++???ns??q】!MoSMOPU!叢uoSUO[su?]X???j???ds-?osoj??]?[jojoquιnu?^????Peq^p?????9++???ns??13N,++?∣e∩S!ΛWindowsForms,XMLWebservices,andeverythingelsethatispossible-justasC#andVisualBasic.NETcan.ScriptinglanguagesScriptinglanguagesarestillaround,although,ingeneral,theirimportanceislikelytodeclinewiththeadventof。NET。JSCriPt,ontheotherhand,hasbeenupgradedtoJSCriPt。NET.WecannowwriteASP.NETpagesinJScript.NET,runJScript。NETasacompiledratherthananinterpretedlanguage,andwritestronglytyPedJSCriPt.NETCode.WithASP.NETthereisnoreasontousesCriPtinglanguagesinserversideWebpages。VBAis,however,stillusedasalanguageforMicrosoftOfficeandVisualStudiomacros.COMandCOM+Technicallyspeaking,COMandCOM+aren’ttechnologiestargetedat.NET,becausecomponentsbasedonthemcannotbecompiledintoIL(althoughit’spossibletodosotosomedegreeusingmanagedC++,iftheoriginalCOMcomponentwaswritteninC++).However,COM+remainsanimportanttool,becauseitsfeaturesarenotduplicatedin.NET.AlSoCOMcomponentswillstillwork-and。NETincorporatesCOMinteroperabilityfeaturesthatmakeitpossibleformanagedcodetocallupCOMcomponentsandviceversa(thisisdiscussedinChapter29)。Ingeneral,however,youwillprobablyfinditmoreconvenientformostpurposestocodenewcomponentsas.NETcomponents,sothatyoucantakeadvantageofthe。NETbaseclassesaswellastheotherbenefitsofrunningasmanagedcode。托管代碼的優(yōu)點Microsoft中間語言與Java字節(jié)代碼共享一種理念:它們都是一種低級語言,語法很簡單,可以非常快速地轉(zhuǎn)換為機器碼.對于代碼來說,這種精心設(shè)計的通用語法,有很大的優(yōu)點。平臺無關(guān)性首先,這意味著包含字節(jié)代碼指令的同一個文件可以放在任一個平臺中,運行時編譯過程的最后階段可以很容易完成,這樣代碼就可以運行在該特定的平臺上。也就是說編譯為中間語言就可以獲得.NET平臺無關(guān)性,這與編譯為JaVa字節(jié)代碼就會得到JaVa平臺無關(guān)性是一樣的。提高性能實際上,IL比Java字節(jié)代碼的作用還要大。IL總是即時編譯的(簡稱JIT),而Java字節(jié)代碼常常是解釋型的,Java的一個缺點是,在運行應(yīng)用程序時,把Java字節(jié)代碼轉(zhuǎn)換為內(nèi)部可執(zhí)行代碼的過程可可能導(dǎo)致性能的損失。JIT編譯器并不是把整個應(yīng)用程序一次編譯完(這樣會有很長的啟動時間),而是只編譯它調(diào)用的那部分代碼(這是其名稱由來)。代碼編譯過一次后,得到的內(nèi)部可執(zhí)行代碼就存儲起來,直到退出該應(yīng)用程序為止,這樣在下次運行這部分代碼時,就不需要重新編譯了。Microsoft認(rèn)為這個過程要比一開始就編譯整個應(yīng)用程序代碼的效率高得多,因為任何應(yīng)用程序的大部分代碼實際上并不是在每次運行過程中都執(zhí)行。使用JIT編譯器,從來都不會編譯這種代碼。這解釋了為什么托管IL代碼的執(zhí)行幾乎和內(nèi)部機器代碼的執(zhí)行速度一樣快,但是并沒有說明為什么Microsoft認(rèn)為這會提高性能.其原因是編譯過程的最后一部分是在運行時進(jìn)行的,JIT編譯器確切地知道程序運行在什么類型的處理器上,利用該處理器提供的任何特性或特定的機器代碼指令來優(yōu)化最后的可執(zhí)行代碼。傳統(tǒng)的編譯器會優(yōu)化代碼,但它們的優(yōu)化過程是獨立于代碼所運行的特定處理器的.這是因為傳統(tǒng)的編譯器是在發(fā)布軟件之前編譯為內(nèi)部機器可執(zhí)行的代碼。即編譯器不知道代碼所運行的處理器類型,例如該處理器是x86兼容處理器或Alpha處理器,這超出了基本操作的范圍。例如VisualStudio6優(yōu)化了一臺一般的Pentium機器,所以它生成的代碼就不能利用PentiumIII處理器的硬件特性。相反,JrT編譯器不僅可以進(jìn)行VisualStudio6所能完成的優(yōu)化工作,還可以優(yōu)化代碼所運行的特定處理器.語言的互操作性使用IL不僅支持平臺無關(guān)性,還支持語言的互操作性.簡言之,就是能將任何一種語言編譯為中間代碼,編譯好的代碼可以與從其他語言編譯過來的代碼進(jìn)行交互操作.那么除了C#之外,還有什么語言可以通過。NET進(jìn)行交互操作呢?下面就簡要討論其他常見語言如何與.NET交互操作.VB0NETVisualBasic6在升級到ViSUalBasic.NET時,經(jīng)歷了一番脫胎換骨的變化。VisualBasic是在最近的幾年中演化的,其早期版本VisualBasic6并不適合運行。NET程序.例如,它與COM的高度集成,且只把事件處理程序作為源代碼顯示給開發(fā)人員,大多數(shù)后臺代碼不能用作源代碼。另外,它不支持繼承,VisualBasic使用的標(biāo)準(zhǔn)數(shù)據(jù)類型也與。NET不兼容。VisualBasic6已經(jīng)升級為VisualBasic.NET,對VB進(jìn)行的改變非常大,完全可以把VisualBasic.NET當(dāng)作是一種新語言。現(xiàn)有的VB6代碼不能編譯為VBoNET代碼,把VB6程序轉(zhuǎn)換為VB。NET時,需要對代碼進(jìn)行大量的改動,但大多數(shù)修改工作都可以由VisualStudiooNET(VS的升級版本,用于與.NET一起使用)自動完成.如果要把一個VB6項目讀取到VisualStudio。NET中,VisualStudio。NET就會升級該項目,也就是說把VB6源代碼重寫為VBoNET源代碼。雖然這意味著其中的工作已大大減輕,但用戶仍需要檢查新的VB.NET代碼,以確保項目仍可正確工作,因為這種轉(zhuǎn)換并不十分完美。這種語言升級的一個副作用是不能再把VB.NET編譯為內(nèi)部可執(zhí)行代碼了。VB.NET只編譯為中間語言,就像C#一樣。如果需要繼續(xù)使用VB6編寫程序,就可以這么做,但生成的可執(zhí)行代碼會完全忽略。NETFrameWork,如果繼續(xù)把VisualStudio作為開發(fā)環(huán)境,就需要安裝VisualStudio6。VisualC++.NETVisualC++6有許多Microsoft對Windows的特定擴(kuò)展。通過VisualC++。NET,又加入了更多的擴(kuò)展內(nèi)容,來支持。NETFra

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論