懂C#的話,轉Java也不是那麼難,畢竟,語言語法仍是類似的.嘗試了下Java,說說本身的體會吧.java
一,Java和C#都是徹底面向對象的語言。在面向對象編程的三大原則方面,這兩種語言接近得不能再接近。不過也有一些差異,不過很少,稍微習慣下就行了,git
好比:程序員
集合:兩種語言都有集合ArrayList,還有經過鍵訪問值的Java中是HashMap而c#中是HashTable。c#比Java多泛型集合List<T>與Dictionary<K,V>更容易了,無需拆箱裝箱了,更安全了。web
繼承:Java中用關鍵字extends,c#只用「:」就好了。調用父類的構造方法Java用super關鍵字,而c#用base關鍵字。編程
屬性:java中定義和訪問均要用get和set方法,能夠不成對出現。c#中是真正的屬性,訪問時用.號便可。c#
事件。Java中沒有(Java經過實現自定義偵聽器類執行事件)。C#定義了相似於函數指針的委託來實現事件。windows
等等...api
二,Java Web和ASP.NET也是有類似的,java web的核心是Servlet,Jsp其實本質都是Servlet,而Servlet的流程能夠比較清晰看到整個先後臺是怎麼工做的,相似.NET的ashx通常處理程序,Java是MVC的主要倡導者,隨着web技術發展,Servlet主要被看成Control使用,Jsp做爲View使用,這在許多MCV框架有所體現.得益於開源社區的活躍,流行的Java MVC框架都比較成熟了.而ASP.NET MVC(雖然我沒有用過,大概瞭解過)感受使用起來應該不是很舒服把.貌似ASP.NET MVC也尚未推廣開來.不少.NET程序員作Web仍是停留在服務端控件.不是Webform很差,而是微軟會把咱們寵壞.感受Webform不夠優雅,耦合過高,我的接觸過Java Web後以爲MVC在大多場景下更勝一籌.瀏覽器
目前接觸過的MVC框架是Struts2,經常使用在展現層,前臺頁面展現與控制頁面跳轉。創建一個工程,都會有一個web.xml文件,是整個工程的主配置文件。其它框架的集成首先是在這個配置文件裏面進行的。Struts也有一個主配置文件struts.xml,工程中全部配置的Action都是在這個配置文件中配置的。Action是Struts的核心,其實就是控制頁面跳轉用的,每一個頁面和後臺的數據交互或者跳轉到另外的頁面都經過action進行。 具體使用看看相關的文檔.安全
三,Java的框架五花八門,有名的全功能棧Spring框架,MVC框架Struts2,SpringMVC(Spring的子項),數據持久層框架 MyBatis,Hibernate,模板引擎FreeMarker,Velocity,框架有框架的好處也有壞處,使用框架無非就是提升生產力,下降測試維護成本,保證系統性能.可是不適合的使用框架只會加劇系統複雜度,下降系統性能,增長維護難度.何時使用框架何時不用,要詳細斟酌在作取捨.目前只接觸過Struts2,由於作的一些小項目直接Servlet+Jsp+Jdbc就行了,打好基礎仍是比較重要的,之後在項目慢慢接觸使用吧.
總的來講吧,微軟的生態環境的不給力留給.NET的面愈來愈窄,Java生態圈的局面是前途一片光明,選擇開源的Java是有緣由的,豐富的資料,各類解決方案可選擇.曾今遇到一個要實現瀏覽器post svg到後臺轉png圖片的功能,好不容易在git上找到一個開源的庫,一用bug不少,而java Apache下的batik倒是至關完善.最後是經過後臺cmd調用batik來實現,怎一個悲劇.曾今也在windows phone上抱有興趣,作了幾個demo app發現封閉的wp的api仍是太少,招聘wp開發的少之又少.固然C#依然是最優美的語言,Visual Studio依然是最完美的IDE. .NET程序員們該多接觸下其餘語言開發平臺,至少看成開拓下視野吧.