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