浅谈Java与C#

最初, 我是做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#各有偏重, 这是大家应该正确认识和包容的.

转载于:https://www.cnblogs.com/Freeway/archive/2012/11/07/Compare_Java_CSharp.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaC#是两种非常流行的编程语言,它们在很多方面有相似之处,但也存在一些区别。以下是JavaC#之间的一些主要区别: 1. 平台:Java是一种跨平台的语言,可以在不同操作系统上运行,如Windows、Linux和MacOS。而C#主要用于Microsoft的.NET框架,因此更适合在Windows平台上开发。 2. 语法:JavaC#的语法在某些方面略有不同。例如,Java使用大括号({})来定义代码块,而C#使用花括号({})和关键字“begin”和“end”来定义。此外,Java使用“extends”和“implements”来实现继承和接口,而C#使用冒号(:)来实现。 3. 内存管理:Java使用垃圾回收机制来管理内存,开发人员不需要手动释放内存。而C#有垃圾回收机制,但也提供了手动内存管理的功能,开发人员可以使用“using”语句来释放资源。 4. 异常处理:JavaC#都支持异常处理机制,但它们的语法略有不同。Java使用try-catch-finally块来处理异常,而C#使用try-catch-finally或try-catch-with块。 5. 开发环境:Java使用Eclipse和IntelliJ IDEA等集成开发环境(IDE)进行开发,而C#使用Visual Studio作为主要的开发工具。Visual Studio提供了丰富的功能和工具,使C#开发更加方便。 需要注意的是,JavaC#都是面向对象的编程语言,它们都具有类、继承、多态等面向对象的特性。此外,它们都有强大的标准库和丰富的第三方库支持,可以用于开发各种类型的应用程序。选择使用哪种语言取决于项目需求、开发平台和个人偏好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值