懂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程序员们该多接触下其余语言开发平台,至少看成开拓下视野吧.