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