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

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

比如:

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

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

winform 转 JAVA_C#转java相关推荐

  1. c#与java_C#与Java的区别

    =>预定义数据类型 c#:预定义的简单数据类型比java多.例如,c#有unit,即无符号整数. =>c#没有>>>移位操作符. =>数组定义 c#:不支持int ...

  2. c#和java_C#和Java接口对比

    C#和java的接口有很多类似之处,对于编程约束和设计模式的实现有重要作用.这里记录几个知识点. 1. C#的接口中不能有字段,但Java的接口中允许有static final修饰的字段/域(fiel ...

  3. ras私钥c#转java_C#和JAVA的RSA密钥、公钥转换

    C#的秘钥跟JAVA的密钥区别 RSA对于程序本身是没有区别的,其格式都是相同的.对于不同的程序来说,存储使用的语法(包装的类)会有所不同. RSA语法和语法标准有很多,大的类型大概分为ASN.1.P ...

  4. c await和java_C# vs Java:C# 五个不可替代的特性瞬间秒杀 Java

    原标题:C# vs Java:C# 五个不可替代的特性瞬间秒杀 Java 如果我们可以同时拥有 C# 和 Java 世界的最好特性,那会是什么样呢? 完美的编程语言并不存在,我希望我们可以在这一点上达 ...

  5. 逗号表达式 java_c和java中问号表达式与逗号表达式问题

    C语言中的问号表达式. --?--:-- 式A?B:C值为:若A为真,则B:若A为假,则C. 但有一点是值得注意的,那就是问号表达式的结合性,问号表达式是从右往左的运算方向 尤其是当问号表达式嵌套使用 ...

  6. enumerable java_c# – 在Java中有类似Enumerable.Range(x,y)的东西吗?

    编辑:作为Java 8,这可以通过java.util.stream.IntStream.range实现(int startInclusive,int endExclusive) 在Java8之前: 在 ...

  7. Java开发的三大方向

    前言:Java在开发高访问.高并发.集群化的大型网站方面有很大的优势. 1.Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开 ...

  8. 浅谈桌面应用程序的开发

    浅谈桌面应用程序的开发 常用的桌面的应用程序的开发有这几个技术(难度递减) windows api > MFC > Qt > WinForm = VB = DevExpress &g ...

  9. QT 基础知识一(QT安装、创建项目、常用窗口控件使用、信号与槽机制讲解)

    QT概念 Qt:Qt是一个跨平台的C++框架(C++库),Qt除了支持界面设计(GUI编程),还封装了与网络编程.多线程.数据库连接.视频音频等相关的功能. ctrl 撤销(返回上一步) 市面常见的G ...

最新文章

  1. batch normalization
  2. 使用聚类算法进行标签传播学习(Clustering for Semi-Supervised Learning)
  3. 窗口最小化之后没有图标
  4. c++动态绑定和动态绑定
  5. python数组和矩阵用法
  6. kafka分区机制详解
  7. Python包和模块的使用方法
  8. pandas pivot 计算占比_pandas使用9:如何处理时间序列数据
  9. Numpy知识点:np.expand_dims()np.argmax()
  10. python使用多线程(二)
  11. 全球及中国在线教育行业发展态势与营利模式咨询报告2022版
  12. Ubuntu 下网易云音乐出现“加载失败,网络错误,可以在设置中发送反馈”问题及解决
  13. js获取浏览器内各种高度宽度总结
  14. 修改centos系统时间
  15. Keil社区版下载与安装
  16. 扫码枪 android 广播,Android 扫码枪监听封装
  17. 不爱,就收起暧昧走开...
  18. 西部狂徒自建服务器,在《西部狂徒》中如何快速建立自己根据地?杀人放火是上策...
  19. android点击展开内容,Android编程实现Listview点击展开和隐藏的方法
  20. deeplearning4j的官网

热门文章

  1. win11频繁更新,关闭win11恶意软件删除工具补丁更新
  2. matlab在图片上显示文字颜色,科学网-解决matlab saveas printf保存图片时 colorbar中的字体颜色发生改变-肖鑫的博文...
  3. python可以制作网站吗_Python大神带你用30行代码打造一个网站,爬虫+web不一样的玩法...
  4. pythoncsv数据怎么读_python如何读写csv数据
  5. java实现留言版并回复_Java-留言板-回复页面(JSP)
  6. storm throw 口袋妖怪_初版storm项目全流程自动化测试代码实现
  7. python多进程的使用方法
  8. 查看hdfs目录的方法
  9. oracle订单,银科软件:Oracle ERP订单管理模块详细介绍
  10. 量子计算机会取代经典计算机,量子计算机已经可以取代经典计算机了?已科学解答...