C#和Java的对比

C#是微软公司在2000年6月发布的一种面向对象的高级程序设计语言;Java是Sun公司在1996年1月发布的一种面向对象的、平台独立的高级程序设计语言。它们是现在最流行的面向对象的高级程序设计语言,人们经常会拿两者进行对比。

1. 关于运行速度

就语言层面来说,C#和java的运行速度非常接近,有权威机构利用C#和java采用相同的算法,运行速度测试对比:文件读写1000次,并存储到集合当中。C#平均时间:150-200毫秒、Java平均时间:220-300毫秒。1000毫秒等于1秒,这个速度其实是非常的接近的。

程序的运行速度最关键的在于算法逻辑。抛开编程人员的技术水平或者采用的算法效率,直接说java快于C#,或者C#快于java都是不负责任的。

2. 关于安全性

就语言层面来说,C#和java 的安全性都很高。他们都严格遵循面向对象的规范,封装细节,只提供接口给用户;都有边界检查,不会出现C/C++中的缓存溢出等安全漏。都是强制类型转换,支持线程;都有自动垃圾回收器,可以防止内存泄露的风险。都通过编译器、检验器、类装载器、建立安全策略等方式保证了程序的安全性。唯一的区别是C#支持指针,而java无指针运算,增加了内存级的安全性。但是C#仅仅是支持指针,并不鼓励指针,有经验的开发人员都会避免使用指针,保证程序的安全性。同理,如果低水平的java开发人员,即使有垃圾回收器,也会写出内存泄露的代码。

3. 关于开发速度和语言特性

就开发速度而言,C#是比java要快很多的,这一点无法否认。C#诞生时间比较晚,在设计之初就吸收,借鉴了java的很多优点,同时又有所创新,它易用、门槛低、优雅、非常简洁,有许多更加简洁高效的语法,可以大大提高开发速度。比如C#2008年就支持lamda表达式,java2014年才支持。再比如event和委托,var,linq,java直到现在都没有对应的语法。微软提供的专用编程工具VS更是极大的提升了开发速度。Java相对来说开发过程更加繁琐,配置环节更多,同水平的开发人员,使用java的开发速度相对C#要慢。

4. 关于生态和开源

就开发生态而言,Java强于C#,这点毋庸置疑。Java诞生早,Sun公司在2006年就宣布开源,13年来在开发生态上,已经取得了非常大的成绩。C#诞生晚,微软公司更是拖到了2014年才将其开源,至今不过5年时间。在开发生态上,C#远远落后于java。但是微软公司最近几年在开源动作上越来越主动和积极:全面宣布C#和.net开源;连续多年成为全球最大的开源贡献公司;2018年收购了最大的开源代码平台github。反观java在2009年被oracle收购后,在开源上的动作原来越少,权限越收越紧,导致谷歌的安卓系统都已经着力采用新的语言Kotlin以期待替换掉java,摆脱oracle的控制。

5. 关于平台可移植性

Java设计之初就考虑到了跨平台,而C#在设计之初只考虑了windows平台,平台移植性不如java,不过这个差距现在已经被拉平。2014年开源之后,C#的底层平台同时支持.NET Framework和.NET Core,而NET Core是完全重新架构设计的,能够完美的支持跨平台。

6. 结论

综上,其实C#和java就语言层面来说,是不分伯仲的,有差距的是使用编程语言的人,就像我们不能说剑比刀差,而要看使用刀剑的人的武功——真正对信息化成败起到决定性作用的是程序员,是公司。

C#和Java的对比的更多相关文章

  1. Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结

    Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结 1. defer关键字1 2. try!形式存在的“不失败”机制3 3. Guard 4 4. swift的新语 ...

  2. JAVA语言对比C++语言的几个优点和自身的关键特性

    之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别.因水平有限,某些内容可能太过片面,欢迎指正和讨论. JAVA语言在设计上很好地借鉴 ...

  3. java操作对比两个字符串,将差异数据提取出来

    记录瞬间 在实际的工作中,需要解决生成两次字符串结果进行对比的问题,将存在差异的字符串直接给出来. 当然,前提是需要将对比的两次结果,进行前期处理 比如: a_str = "@com/ene ...

  4. C++ 与 Java 语言对比

    1 . Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的.从这里就可以看出 C++ 的 OO 思想不够彻底,至少在封装这一点上. 2. C++ 中有拷贝构造函数,可以把一个 ...

  5. java语言对比,jvm,垃圾回收

    1.java/c++/ruby/python集中语言的对比 java和c++ 1,没有指针 2,没有多继承 3,没有const 4,在实现多态上的区别    tc++里面的虚函数,纯续函数和java里 ...

  6. .NET和JAVA 反射对比

    反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息.使用反射可以看到一个程序集内部的接口.类.方法.字段.属性.特性等等信息.在System.Reflectio ...

  7. C#和java的对比及总结

    1.Java里的AClass.class得到的Class<T>类的对象对应C#的typeof(AClass)得到的Type类型的对象:(但是C#如果要反射创建对象是用Type对象的Asse ...

  8. Java中对比两个对象中属性值[反射、注解]

    在Java中通常要比较两个对象在修改前与修改后的值是否相同,一般我们采用的是反射技术获取对象的get方法[或其他的方法]获取值并做比较.如果系统将修改的属性名称也显示出来,这样就能更直观的显示类中的哪 ...

  9. php和java优势对比

    PHP很专一,用于创建动态网页的服务器端的脚本语言.作为一种为Web而特别设计的语言,PHP带来了许多商业机构渴望的特性.   ·学习周期短,比较简单 ·快速的开发时间 ·非常高的性能       这 ...

随机推荐

  1. Redis Python(一)

    Infi-chu: http://www.cnblogs.com/Infi-chu/ NoSQL(NoSQL=Not Only SQL),中文意思是非关系型数据库. 随着互联网Web2.0网站的兴起, ...

  2. Dynamics CRM 2015/2016新特性之三十二:新增乐观并发处理

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复215或者20160328可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  3. [转]RHEL7上配置NFS服务

    原文地址:http://380531251.blog.51cto.com/7297595/1659865 1.课程目标 了解什么是NFS及其功能: 掌握NFS的配置: 掌握NFS的验证: 能够单独熟练 ...

  4. 使用Azure进行自动化机器学习

    什么是自动化机器学习? 自动化的机器学习,也称为 AutoML,让数据科研人员. 分析人员和开发人员,同时维护模型质量构建具有高缩放性. 效率和工作效率的机器学习模型. 自动化机器学习生成的机器学习模 ...

  5. fiddler---Fiddler查看get和post请求

    前几篇写了Fiddler的一些功能介绍,今天我们一起学习下如何通过fiddler查看get请求和post请求和get,post区别 get请求 1.启动fiddler,抓取安静博客地址 2.通过fid ...

  6. requests---重定向

    通常我们抓包的过程中,都会看到302的状态码,那么这个过程发生了什么? 什么是重定向 就是通过各种方法将各种网络请求重新定个方向转到其它位置,本来应该从a出发到达b但是最终到达了c,这种场景就叫做重定 ...

  7. JAVA反射(资源版)

    关于JAVA反射的作用可以看这篇博客(说的很详尽): https://www.cnblogs.com/jqyp/archive/2012/03/29/2423112.html 下面是关于JAVA反射的 ...

  8. 1.Python爬虫入门_urllib

    #2019-11-22 import urllib.request #Pthon自带的网络连接库 import gzip #解压缩库 #程序入口 if __name__=='__main__': #u ...

  9. 初学JavaScript正则表达式(四)

    字符类 [] 一般情况下正则表达式中一个字符对应字符串一个字符 可以使用元字符 [ ] 来构建一个简单的类        类泛指符合某些特征的对象 例: 'a1b1c1d1'.replace(/[ab ...

  10. C++学习一 结构与结构体

    结构体属于C++与C区别之一. 代码例子如下(来自<C++程序设计>): #include <iostream> #include <string> using n ...