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. springboot服务的一些问题

    一: springboot踩坑记--springboot正常启动但访问404; 1. spring boot的启动类不能直接放在main(src.java.main)这个包下面,把它放在有包的里面就可 ...

  2. 74HC238引脚定义 使用方法

    三八译码器 用作IO扩展与复用 用3个IO,可以控制8个输出 引脚定义 A0~A2:3个输入 E1.E2:拉低使能,可以接地 E3:拉高使能,可以接VCC Y0~Y7:8个输出 真值表 如果想输出8个 ...

  3. 【LeetCode】TreeNode类实现解析(java实现)

    https://blog.csdn.net/styshoo/article/details/52865386 在LeetCode中,TreeNode是经常用到的一个结构体,表示数据结构树(Tree)中 ...

  4. [b0039] python 归纳 (二四)_多进程数据共享和同步_锁Lock&RLock

    # -*- coding: utf-8 -*- """ 多进程 锁使用 逻辑: 10个进程各种睡眠2秒,然后打印. 不加锁同时打印出来,总共2秒,加锁一个接一个打印,总共 ...

  5. 《Python自动化测试九章经》

    Python是当前非常流行的一门编程语言,它除了在人工智能.数据处理.Web开发.网络爬虫等领域得到广泛使用之外,他也非常适合软件测试人员使用,但是,对于刚入行的测试小白来说,并不知道学习Python ...

  6. 渗透测试学习 十九、 XSS跨站脚本漏洞详解 续2

    二阶注入环境搭建 74cms 3.4 直接将源码放在PHPstudy的www路径下,在地址栏中输入127.0.0.1回车 然后进入网站首页,在填写简历里面存在二阶注入 先注册一个账号 创建简历 前面的 ...

  7. 运行java程序

    使用方式: java类名 硬盘上有HelloWorld.class,那么类名就是HelloWorld java HelloWorld[运行先到class路径下] 一定要注意:java命令后面跟的不是文 ...

  8. 有关csp自我反思

    首先说说体会把 这次前几个都是模拟,最后一道题以为自己可能会结果是半吊子根本不会,导致浪费了三个小时写第五题只有十分 如果不畏惧字符串而专心的写第三题的话,应该结果会不一样把.希望下次能好好考 第一题 ...

  9. python27期尚哥讲TCP:

    TCP:传输控制协议(使用情况多于udp) 稳定:保证数据一定能收到 相对UDP会慢一点 web服务器一般都使用TCP(银行转账,稳定比快要重要)TCP通信模型: 在通信之前,必须先等待建立链接 TC ...

  10. layui实现分页

    一 准备工作 首先必须先引入layui的完整目录,也就是你下载下来的整个layui的目录都要放在你的资源文件夹下,也就是这个文件目录 刚开始接触layui的时候,以为和jquery,vue等框架一样, ...