Java和.NET有什么不同?我也是一名在北大青鳥通州校區學習的學員,由于還在學習的過程中,對于軟件開發的相關經驗知識還有限,所以本篇內容只能從我所接觸的過的功能以及比較表面的知識點來說明Java和.NET的不同點。
語言的不同點:
Java語言和C#語言非常相似,雖然內部會有很多區別,提供的API也不一樣,但開發一個具體功能點的思路常用的都差不多,由于對比較新的技術和特性開發過程中接觸不多,我所遇到的不同點包括:
1、JAVA里默認修飾符是包內可見(對應同一個文件夾目錄,而不是項目大jar包下)的,protected的變量和方法都是包內和子類可見的,.NET里是只有自己和子類可見NET里類的默認修飾符是Internal,程序集內可訪問。方法和字段默認為private的,和JAVA默認包內可見不一樣。
2、如果找到一個JAR包,Java查看新jar包的方法字段描述,需要有單獨的對應jar包的doc文檔,才能看到接口調用參數說明,否則看起來不直觀,但是如果有源碼打出來的jar包,調試的時候可以方便的看到該包的源代碼NET里只要有了dll文件,就能方便的看到方法元數據調用參數,但是看到參數詳細說明,還是需要對應dll的xml文檔。
3、Byte類型的數字范圍不一樣,Java里是-128到127,.NET是0-255,一般需要互相交換數據和處理都是轉換成16進制,然后取8bit的后2個bit,這樣它們的值都是一樣的,方便同步加密解密或相關處理
4、JAVA里文件保存后默認自動編譯,但是這個也得益于它把每個java文件編譯成一個class文件,.NET里需要單獨每次執行編譯項目,因為它一個項目一個dll文件,如果保存其中一個。cs文件都執行編譯,則工作量太大影響開發速度。
5、Java里的Final關鍵字,當給一個字段時,表示該字段不能修改,構造函數里都不能修改,這個和C#的const有點像,但是const默認是static的。和C#的readonly也比較像,但是readonly可以在構造函數里修改。當它作為一個方法的修飾符時,它類試c#的sealed類,不能重寫它。
6、Java包的名字是和物理文件位置一一對應的,C#里命名空間可以隨便寫,并且編譯出來的程序集也可以隨便更改,可以不和命名空間保持一致,程序集和JAVA里單獨打出來的jar包是差不多的意思。
7、Java里推薦用get,set方法來對內部變量賦值和獲取值,.NET里可以用字段get,set獲取,并且vs2008后可以直接get;set;的方式,借助語法糖,編譯器后會自動生成等價的get,set內部字段。
插件的不同點:
1、MyEclipse自身就是一個插件,里面集成了大量開源框架,而VS是微軟一個大一統的IDE,要用其他開源插件,需要單獨下載和單獨配置。
2、Java里實現webservice的方法很多,除了javax.jws包里只有的JAX-WS,java webservice規范自帶版本,還有axis,xfire的webservice開源實現,axis包括axis1,axis2,xfire已更名為cxf了,但是各種實現方法各異,在和。NET發布的webservice互相調用時,經常遇到一些問題,總體來說Java對wsdl的格式要求更嚴格。
上面都是自己在北大青鳥通州校區學習的過程中總結出來的,涉及面有限,需要自己以后不斷完善相關技術點,并且整理和理解的結果也可能不完全準確,如有問題,還希望老師指正。