“一次編程,多處執(zhí)行”一直是程序設(shè)計(jì)的一個(gè)訴求,尤其是在現(xiàn)代Internet時(shí)代。在跨平臺(tái)方面,Java的支持和實(shí)現(xiàn)都是為人稱道的,雖然JVM的速度仍然讓人備感頭疼。而C#雖然在底層構(gòu)造方面對(duì)移植性進(jìn)行了充分的考慮,但至少目前還沒(méi)有出現(xiàn)成熟的、經(jīng)過(guò)檢驗(yàn)的產(chǎn)品。C#在跨平臺(tái)方面似乎更熱衷于xml Web Services互操作,而不是跨平臺(tái)編程。但C#通過(guò)其基礎(chǔ)語(yǔ)言構(gòu)造(CLI)對(duì)二十多種主流語(yǔ)言對(duì)象級(jí)的互操作支持,又極大地提升了C#的技術(shù)地位。和COM組件廉價(jià)的互操作也為C#掙到不少分?jǐn)?shù)――保持一個(gè)兼容的體系對(duì)現(xiàn)代軟件工業(yè)非常重要,也是對(duì)廣大開(kāi)發(fā)人員負(fù)責(zé)的表現(xiàn)。
除去這些語(yǔ)言層面的組件支持機(jī)制,.NET平臺(tái)也為組件的配置、運(yùn)行和治理提供了一攬子解決方案,為組件開(kāi)發(fā)量身定做的Visual Studio .NET更是令人興奮,這些都為C#的組件編程開(kāi)辟了廣闊的天地。在其他技術(shù)方面Java的微弱劣勢(shì)尚且可以忽略不計(jì),但在組件編程方面Java相較于C#卻有著不可治愈的硬傷。尤其對(duì)于從C++和VB背景過(guò)來(lái)的開(kāi)發(fā)人員,C#在這方面有著不可反抗的魅力和誘惑。
鑒于XML Web Services在下一代企業(yè)分布式計(jì)算中的地位,.NET平臺(tái)直接在IL中間語(yǔ)言中內(nèi)置了XML,SOAP、UDDI、WSDL等底層協(xié)議被構(gòu)建成了面向開(kāi)發(fā)人員的組件;而Java是通過(guò)API集來(lái)支持Web服務(wù)。雖然這種局面的形成可能僅僅是因?yàn)闀r(shí)間問(wèn)題,但從技術(shù)角度來(lái)將,C#無(wú)疑比Java更新,究竟C#出現(xiàn)在Java之后。
當(dāng)然“語(yǔ)言選擇乃藝術(shù)而非技術(shù)問(wèn)題”,開(kāi)發(fā)人員選擇哪種編程語(yǔ)言往往會(huì)受到眾多因素的影響。各自的后端平臺(tái)(C# for .NET, Java for J2EE)、編程框架的支持、各種語(yǔ)言相關(guān)工具的實(shí)現(xiàn)、現(xiàn)有的系統(tǒng)基礎(chǔ)等都會(huì)對(duì)編程語(yǔ)言的發(fā)展產(chǎn)生相當(dāng)?shù)挠绊憽?