
做這個對比是希望找出各自不足并加以改進(jìn)也希望未提到的大家一起補(bǔ)充純當(dāng)技術(shù)討論所以極端.net和java粉絲可以無視先來說說IDE對比也就是eclipse和VS的對比吧1、eclipse支持變量上下文中的高亮顯示這點(diǎn)VS直到2010才支持2、eclipse雙擊左花括號可自動選定包含內(nèi)容對于大塊if...else來說是個福音3、相比而言eclipse插件更為豐富4、VS中region代碼塊管理功能在eclipse里木有遇到比較爛的老代碼真是。。。5、 VS的智能提示更勝一籌比較完善6、eclipse自動糾錯比較省事目前暫時(shí)想到這么多可能這些對平時(shí)實(shí)用影響比較大吧坐等看官們補(bǔ)充接下來是C#和JAVA在語言層面的對比話說.net 3.0之后語言層面優(yōu)雅不少(即使有些是語法糖)加入了更過函數(shù)式編程的用法如LINQ, lambda等這些就不作對比了為什么因?yàn)镴AVA這塊貌似拿不出東西來比據(jù)說scala等java平臺后來者這一點(diǎn)好很多不過還沒用過期待JAVA迎頭趕上啊~這里主要對比各自的基礎(chǔ)框架基本上是.net2.0與jdk1.6的比較1 、JAVA對已聲明異常需要在代碼中做處理否則無法通過編譯這是個比較不好做評價(jià)的設(shè)計(jì)雖然有助于提高程序的健壯性但是卻也會把一些問題隱藏起來個人認(rèn)為這個設(shè)計(jì)用在服務(wù)器程序中是非常好的至少你的服務(wù)不會因?yàn)橐粋€異常而終止。2、成員可見性上JAVA默認(rèn)為包可見一定程度降低了封裝性另外protected修飾符在JAVA中為包可見及子類可見.NET中僅為子類可見3、JAVA反射機(jī)制存在讀寫限制需調(diào)用setAccessible方法給予權(quán)限個人覺得有點(diǎn)雞肋4、可替換jar文件中的class文件實(shí)現(xiàn)局部更新這點(diǎn)在某些情況下非常好用5、JAVA基礎(chǔ)類庫或者說JAVA代碼規(guī)范中的接口名字無法讓人一眼看到就知道是個接口如.net里接口會固定首字母為I 6、JAVA里的枚舉設(shè)計(jì)的比較繁瑣很多情況都在使用靜態(tài)常量代替相比之下.net中的枚舉更為直觀7、JAVA只是簡單的將泛型設(shè)計(jì)成一個語法糖8、JAVA里沒有值類型概念基礎(chǔ)類型int,byte等不是原生的對象需要經(jīng)過包裝導(dǎo)致MapByte,String里用一個int key1去查找的結(jié)果肯定為NULL即使MAP里存在KEY1的數(shù)據(jù)這個必須批評下9、運(yùn)行在實(shí)例調(diào)用的方法表里出現(xiàn)靜態(tài)方法這容易導(dǎo)致混淆10、相比.net,JAVA里的時(shí)間操作比較麻煩11、JAVA中做單元測試十分方便每個類都可以加個main函數(shù)雖然.net也可以但配置相對麻煩12、JAVA中環(huán)境變量的配置估計(jì)是不少新手的噩夢。最后說一句無論哪種語言我認(rèn)為人都有偏好這沒什么但是如果是靠貶低其他的就不好了除非你有能力發(fā)明一個自己的語言。