為什么會(huì)有人說(shuō).net強(qiáng)過(guò)Java,是要笑死人嘛?
網(wǎng)友解答: 我覺(jué)得,“有人”說(shuō)什么不重要,你也不要笑死了,畢竟生命可貴。開(kāi)始的時(shí)候,.Net和JAVA走的兩條不同的路。JAVA(JVM)是一種語(yǔ)言,跨越多種平臺(tái)。開(kāi)發(fā)者無(wú)需過(guò)多關(guān)注OS
我覺(jué)得,“有人”說(shuō)什么不重要,你也不要笑死了,畢竟生命可貴。
開(kāi)始的時(shí)候,.Net和JAVA走的兩條不同的路。
JAVA(JVM)是一種語(yǔ)言,跨越多種平臺(tái)。開(kāi)發(fā)者無(wú)需過(guò)多關(guān)注OS是什么;
.Net是一個(gè)Framework(Windows上),跨越多種語(yǔ)言,最終都翻譯為MSIL。
雖然最終都采用了編譯成中間代碼(JAVA-BYTECODE,.NET-MSIL)這種方式來(lái)實(shí)現(xiàn),但這是截然不同的兩種思維模式,而且都取得了很大的成功。
在程序設(shè)計(jì)語(yǔ)言和編譯器方面,James Gosling和Anders Hejlsberg都是當(dāng)之無(wú)愧的大師,而且都有非常非常了不起的、前瞻性、開(kāi)創(chuàng)性的技術(shù)眼界。
但是,語(yǔ)言/平臺(tái)之間是互相學(xué)習(xí)的、參考的。時(shí)至今日,.Net已經(jīng)可以運(yùn)行于非WINDOWS平臺(tái)了(.Net Core),JVM上已經(jīng)支持很多種語(yǔ)言了。二者同時(shí)都在向?qū)Ψ降念I(lǐng)域拓展,差異越來(lái)越小。
從語(yǔ)言層面看,.Net上的當(dāng)紅炸子雞是C#,它比JAVA語(yǔ)言(截至JAVA 9)要“先進(jìn)”,支持很多新的東西。原因是.Net微軟自己說(shuō)了算,而JAVA有JCP這東西存在,N多家大公司來(lái)投票、扯皮,不僅有技術(shù)問(wèn)題還有商業(yè)原因,所以要實(shí)現(xiàn)新東西就慢。
從性能角度講,大家都是中間代碼(.Net稱之為托管代碼),然后靠VM解釋執(zhí)行。但又各有很多優(yōu)化手段,比如JIT等。所以截至到目前,調(diào)優(yōu)的JVM和.Net的運(yùn)行效率可以相當(dāng),換言之,大多數(shù)應(yīng)用場(chǎng)景,性能問(wèn)題不是選擇的主要決定因素了。
從開(kāi)發(fā)工具層面,Visual Studio是宇宙第一IDE,這個(gè)毫無(wú)爭(zhēng)議的;JAVA雖然也有Eclipse,IDEA等等,但摸著良心說(shuō),還是比不上VS那個(gè)集成度和體驗(yàn)的。
從社區(qū)來(lái)講,得益于SUN多年的培養(yǎng),JAVA有著最好的最開(kāi)放的軟件生態(tài)圈子,所以JAVA開(kāi)發(fā)者非常多,開(kāi)發(fā)資源非常豐富,這才是它最寶貴的財(cái)富而.Net因?yàn)榫窒抻谖④浀钠脚_(tái)和追隨者,相對(duì)來(lái)說(shuō)更封閉一些(.net core已經(jīng)在GITHUB上開(kāi)源了),沒(méi)那么蓬勃。
這就造成了現(xiàn)在的局面,在企業(yè)軟件開(kāi)發(fā)的場(chǎng)景,JAVA當(dāng)之無(wú)愧的王者;在互聯(lián)網(wǎng)領(lǐng)域;得益于JVM性能的大幅度提升,很多后端也是JAVA(比如阿里系)。所以市場(chǎng)占有率比.Net高。而.Net相對(duì)來(lái)說(shuō),要低一些。這在每個(gè)月發(fā)布的編程語(yǔ)言排行榜上也能看出端倪來(lái)。
JAVA雖然很優(yōu)秀,但是這絕對(duì)不能說(shuō)明.Net不行。
我們做工程師的人,對(duì)技術(shù)要有開(kāi)放的心態(tài)、持續(xù)學(xué)習(xí)的心態(tài),不要?jiǎng)澬┬∪θ?,固步自封,夜郎自大,陷入各種無(wú)聊的口水戰(zhàn)還樂(lè)此不疲。