懂C#的话,转Java也不是那么难,毕竟,语言语法还是相似的.尝试了下Java,说说自己的体会吧.

  一,Java和C#都是完全面向对象的语言。在面向对象编程的三大原则方面,这两种语言接近得不能再接近。不过也有一些差别,不过不多,稍微习惯下就好了,

比如:

集合:两种语言都有集合ArrayList,还有通过键访问值的Java中是HashMap而c#中是HashTable。c#比Java多泛型集合List<T>与Dictionary<K,V>更容易了,无需拆箱装箱了,更安全了。

继承:Java中用关键字extends,c#只用“:”就行了。调用父类的构造方法Java用super关键字,而c#用base关键字。

属性:java中定义和访问均要用get和set方法,可以不成对出现。c#中是真正的属性,访问时用.号即可。

事件。Java中没有(Java通过实现自定义侦听器类执行事件)。C#定义了类似于函数指针的委托来实现事件。

等等...

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

.NET转Java的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. paip.检测信用卡账单数据的正确性算法

    paip.检测信用卡账单数据的正确性算法 主要3点: //1.重点检测.大钱记录 //2.检测遗漏记录 //3.排除双唇记录. //4.试着cls share,改变错误的cls. 作者Attilax ...

  2. AndroidStudio的一些坑

    以下环境为Android Studio 1.3.2,Gradle 2.7(as自带2.4,另下载的2.7) 编译时提示Multiple dex files define: Lcom/sina/weib ...

  3. 为什么移动Web应用很慢?

    前些日子,看到Herb Sutter在自己的博客中推荐了一篇文章<Why mobile web apps are slow>,在推荐里他这样写道: “I don’t often link ...

  4. 使用Gulp和Browserify创建多个绑定文件

    Browserify是一个Javascript的绑定工具,帮助我们理顺module之间的依赖关系.Gulp用来优化workflow.两者的共同点都是使用流,但在使用流方面也有不同之处: Browser ...

  5. CentOS6.5下安装Open vSwitch

    准备 # yum install openssl-devel redhat-rpm-config kernel-devel -y #yum install kvm libvirt python-vir ...

  6. mybatis oracle java.sql.SQLException: 流已被关闭问题

    /** * 按照页码取值(从current_page页开始,每页page_size条) * @param key * @param params * @param current_page * @pa ...

  7. js判断密码强度

    html代码: <form name="form1" action=""> 密码:<input type="password&quo ...

  8. Xshell中文乱码问题

    1.  先查看当前使用的语言: echo $LANG 2.  查看系统的语言安装包: locale 3.  如果没有中文安装包(包含zh_CN字样),需要网络或者自己上传安装包,安装 4.  有了中文 ...

  9. 定时5秒之后驻留在元素ID为content元素的内容

    如果我只能刷新一个特定的页面的一部分,这将是很大的,例如:仪表盘上的交通灯显示系统状态. 这是很容易通过使用jQuery JavaScript库,只刷新页面的一部分.一旦我们纳入我们的页面的jQuer ...

  10. Openvswitch原理与代码分析(8): 修改Openvswitch代码添加自定义action

    有时候我们需要自定义一些自己的action,根据包头里面的信息,做一些自己的操作.   例如添加一个action名为handle_example   第一.修改ofp-actions.c文件   首先 ...