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