Java和.NET開發語言的不同點

java語言和C#語言非常相似,雖然內部會有很多區別,提供的API也不一樣,但開發一個具體功能點的思路常用的都差不多,由於對比較新的技術和特性開發過程中接觸不多,我所遇到的不同點包括:

Java和.NET開發語言的不同點
  Java和開發語言的不同點

1、Java包的名字是和物理文件位置一一對應的, C#裏命名空間可以隨便寫,並且編譯出來的.程序集也可以隨便更改,可以不和命名空間保持一致,程序集和JAVA裏單獨打出來的jar包是差不多的意思。

2、JAVA的一個文件只能有一個公共類,而C#可以多個公共類在一個文件裏。

3、如果找到一個JAR包,Java查看新jar包的方法字段描述,需要有單獨的對應jar包的doc文檔,才能看到接口調用參數說明,否則看起來不直觀,但是如果有源碼打出來的jar包,調試的時候可以方便的看到該包的源代碼。裏只要有了dll文件,就能方便的看到方法元數據調用參數,但是看到參數詳細說明,還是需要對應dll的xml文檔。

4、對於WEB開發,JAVA裏Filter,Servlet,Listener是很常用的,Java裏的Filter可以用裏的module來實現一些功能,但Filter可以制定作用請求範圍,module是全局控制的;Servlet相當於一個具體的handler,可以對制定請求進行處理,Listerner可以用裏的Application_Start裏來完成一些功能,但是JAVA裏集成了部分默認Listerner,它在WEB應用啓動的時候就開始執行。它們的具體執行流程爲:WEB啓動時,Listener的ContextInitialized方法->所有Filter的Init(不管filter-mapping的值)->所有配置了load-on-startup大於等於0的Servlet的init方法(不管servlet-mapping的值),具體請求爲:具體Servlet的init(只執行一次)->Filter doFilter(請求配置的filter-mapping的value)->Servlet service; 最後網站釋放的執行順序爲:Filter destroy-》Listener contextDestroyed。

5、Java裏的Final關鍵字,當給一個字段時,表示該字段不能修改,構造函數裏都不能修改,這個和C#的const有點像,但是const默認是static的。和C#的readonly也比較像,但是readonly可以在構造函數裏修改。當它作爲一個方法的修飾符時,它類試c#的sealed類,不能重寫它。

6、Java裏沒有靜態構造函數,如果要實現一些初始化工作,需要用靜態代碼塊,static{…},裏面輸入內容即可,C#只有靜態構造函數的說法。