控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

浅谈Java与C#

作者:未知 出处:cnblog 2012年11月08日 阅读:

最初, 我是做Java的, 由于项目需要, 我转向了.Net. 这发生在我职业生涯的初期. 从那就朝着.Net的方向走下去了...很长一段时间, 我用对Java的理解来处理C#的问题, 后来发现很多时候这样并不合适, 甚至是错误的, 虽然它们都是面向对象的语言...

在面向对象的世界里, 一切皆是对象.
Java和C#都是面向对象的语言, 它们都遵守面向对象的概念, 这也使得这两种语言很像, 至少看起来是这样. 但在具体实现上, 这两种语言还是有很大差别的.

作为面向对象的语言, Java先于C#面世. 一切皆是对象, Java遵守得很好--所有的类都继承自Object, 一点儿问题没有! 然而同时, Java认识到很多时候我们需要做一些简单计算: 2+3=5、(2==3)=false...这些频繁使用的简单的不能再简单的小东西, 我们有必要封装起来做成一个个对象再去操作它们吗? 回答是, 没有必要! 于是, Java引入了简单类型, 或者叫基本类型, 同时引入了值类型的概念. 换言之, Java的值类型就是这几个简单类型, 而且它们是脱离Object之外的概念, 它们不是面向对象的元素. Java便成了面向对象+boolean、byte、short、int、long、char、float、double这八个简单类型.

值类型是不是面向对象?
Java认为不是的, 它把八个简单类型单拿出来, 虽然小小的牺牲一点儿面向对象的纯度, 但Java相信这个世界会理解它的.

C#没有明说, 但它是这么做的: 引入ValueType类型, 让它继承自Object. 引入struct关键字, 让它表示ValueType类型. 接下来,C#做了更夸张的动作, 把Int32、Long、Boolean...甚至DateTime都定义成struct, 让int和Int32等价、long和Long等价、bool和Boolean等价...之后, C#自豪的声称自己是"纯"面向对象, 这里实在有点儿耍流氓的架势, 因为它完全可以让ValueType不继承Object, 自立门户是极简单的事情嘛.从这个意义上讲, C#比Java更不纯.

面向对象之外
Java更加注重面向对象, 更加注重标准化和完美化. 于是, Java有了Eclipse, 有了JSP、Serverlet、EJB, 有了Spring、Structs、Hibernate...

C#更加注重实用性和易用性, 它封装的更多一些. 于是C#有了VisualStudio, 有了ASP.Net、WinForm App、CommandLine App、WCF、WPF、WF、EntityFramework...

比较而言, Java更开放, 朋友很多; C#更封闭, 但微软很给力.

展望
2010年1月, Oracle收购了Sun, 把MySQL和Java纳入囊中, 让广大开发者不禁对MySQL和Java的前景产生担忧. 短短半年以后, Oracle状告Google Android侵犯Java专利的行为, 更是让全世界大失所望. 好在Oracle消停了, MySQL和Java都维护得很好.

2008年, C#刚兴起的时候, Java已经发展得如火如荼了. 但后来C#一直发展挺快, 向Java借鉴的同时, 也不断创新, 引入自己的新东西, 如:对值类型的大胆改造, 引入Linq、Lumda表达式, 等.

Java和C#都是在发展的. Java计划也将引入Lumda语法, 看来Java也开始放下架子, 和C#相互学习了. 开放还是封闭、依靠社区还是自己开发, Java和C#选择的道路不同, 但都将更强大且易于使用.

总结
Java和C#都是很好的很完美的(略有瑕疵)的面向对象的语言, 很强大, 且用起来也很相像.

从语言的层面上来讲, 由于C#对ValueType的引入和特殊处理, 使得它比Java更复杂一些.

VisualStudio很强大, 这也帮助C#更容易使用. 好多Java开发者认为.Net的开发者是傻瓜型编程, 并依此自认为高人一等. 这里, 我认为是没有必要的: 从config文件里面改配置就比从属性窗口修改更有优越感? 在Panel里new 一个Button, 之后给它设置位置、文本...就比拖动一个Button到Form, 之后拖动控制大小和位置来得更有成就感么? Java和C#各有偏重, 这是大家应该正确认识和包容的.

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统