戍码编程老师直接接听

400-029-09** 400-029-0997 转 78351
查看完整号码
扫码拨号
微信扫码拨号

Java 和 C# *大的不同是什么?

2021/5/27 18:03:32

Java 和 C# *大的不同是什么?

微软的c#设计者更注重一线开发人员的感受,为方便开发提高效率,他们愿意大费周章改善语言本身各方特性,不断加入语法糖,从泛型,nullable,隐式类型到lamada再到dynamic,awaitasyc等等都可看到其一直在围绕代码整洁,减少bug等实际的开发过程中问题来进行的改进,同时越来越智能的IDE也说明了这点。

而java设计者则不同,他们的关注点在于java应用系统本身,更好的降低耦合,保持OOP是其始终坚持的。同时也应该不难发现,社区对java应用架构师提出的各类尖锐问题反馈总是较为及时,而对java应用开发者则相对冷淡些。正因此,使用java开发的大型应用系统相比同等代码量c#开发出的系统至少在系统结构上要比c#更加美观,易维护,代码变腐烂的速度也更慢。加上java及linux均为开源产品,许多大型公司又在基于成本的考虑上终于还是选择使用java进行应用系统开发。

然后拿泛型举例看看c#和java对待同一问题时各方的区别:c#在2.0中为推出泛型特性是对预编译,编译及运行时做了根本性改变的,而java设计者则显然不够"诚意",他们在预编译期直接将泛型"处理"掉了,你在运行时根本看不到泛型这一特性。我臆测java设计者可能认为即使没有泛型,应用系统设计师通过优秀的程序设计是可以解决list类型不一致问题的,这种通过添加语法规则规避问题的做法实际是懒惰思维,添加了泛型支持也只是向社区的呼声做了一次妥协。

面对同一问题采用不同处理方法的结果是,c#基于泛型后续衍生出了lamada,linq等一系列更能提高开发效率的语法利器,而java因有了泛型的强制约束使得java开源中间件变得更加稳定,同时可以看到后续的许多开源中间件产品体量也变得更大,功能也开始更加大胆。这也算是通过泛型确保类型一致带来的好处之一吧。

所以,虽语法非常相似,但关注方向并不相同的两种语言至少目前来说区分优劣为时尚早了些,但就趋势来说,c#的发展势头要更为强劲,不去关注两种语言本身,就平台而言,微软对c#的掌控力要优于java社区对java平台的掌控力,c#设计者在改造c#语言时不需要做出太多妥协,他们考虑更多的只是5.0如何向4.5兼容,4.5如何向4.0兼容,而java在发展的过程中每一步跨越需要考虑的则更多。同时,要命的,java的一切设计都是牢牢基于面向对象的,然而从实际的开发经验来看,现实世界中的许多问题并不能单纯依靠面向对象来解决,牵强使用OOP给实际系统开发已经带来不少的负面影响,例如,红苹果到底是苹果的子类还是红色是苹果的一个属性?有人会觉得这要联系上下文才能知道究竟应该如何定义这颗苹果,然而联系上下文的过程本身就是一个寻找妥协的过程,可以符合当前系统设计要求,但,不代表系统需求不会改变,而在敏捷开发中,我们首先要树立的思想便是"需求是迟早会变的",这种矛盾在面向对象的开发过程中会长期相伴。回头再看c#,虽然其出身也是彻头彻尾的面向对象,然而在其后续的演进过程中似乎并未把OOP放在眼里,到c# 3时干脆加入了具有函数式编程特性的linq,而当其与原先就支持的委托特性结合时,其强大之处就可见一斑了,原先需要使用OOP思想编写的大量"难看"代码linq居然只要几行就能搞定,且更加符合自然语言表达。而java支持lamda似乎是linq推出整整6年(也许还不止)后的近期了。

回到问题本身回答题主,综上,C#和JAVA的区别有很多,而较大的区别在于他们的语言(平台)设计者的关注点并不相同。

添加微信咨询
文老师 @戍码编程

栈程教育&戍码编程

微信号:133******22

立即咨询

    相关资讯

  • 学习Java开发的入门书籍推荐

    学习Java开发的入门书籍推荐

    2021/7/16 9:09:07
  • IT行业*热门的职位有哪些?

    IT行业作为当今发展前途最大的几大行业之一,获得了前所未有的广泛关注,且随着科技的发展,这一趋势将更加明显。那么IT行业究竟有哪些职位呢?哪些岗位是当下最热门的呢?

    2021/6/18 10:47:06
  • 做 软件测试需要学什么?

    随着移动互联网时代的发展,自动化测试越来越成为企业刚需,软件测试的门槛已经不再低了。那么软件测试需要学什么?

    2021/6/8 17:07:54
  • java和python的区别是什么?

    作为常用编程语言java和python的区别是什么?

    2021/6/7 17:16:30
  • java学到什么程度可以找工作?

    实际上Java初级开发岗位对于从业者的要求并不高,通常能够熟练使用常见的Java框架就可以找到第*份工作了(很可能是外包)。但是人难免忐忑,心里没谱儿,到底Java学到何种程度可以找到工作呢?

    2021/6/3 16:18:02

“戍码编程”是栈程(大连)科技有限公司在教育宝平台开设的店铺,若该店铺内信息涉嫌虚假或违法,请点击这里向教育宝反馈,我们将及时进行处理。

机构评分

环境:4.0师资:4.0服务:4.0效果:4.0

公示信息

店铺名称:戍码编程

单位名称:栈程(大连)科技有限公司

账号名称:dlqcjy(135******34)

所属城市:辽宁大连

入驻时长:7年

在线客服:在线聊

微信咨询

返回顶部