C#和Java的对比
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的对比的更多相关文章
- Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结 1. defer关键字1 2. try!形式存在的“不失败”机制3 3. Guard 4 4. swift的新语 ...
- JAVA语言对比C++语言的几个优点和自身的关键特性
之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别.因水平有限,某些内容可能太过片面,欢迎指正和讨论. JAVA语言在设计上很好地借鉴 ...
- java操作对比两个字符串,将差异数据提取出来
记录瞬间 在实际的工作中,需要解决生成两次字符串结果进行对比的问题,将存在差异的字符串直接给出来. 当然,前提是需要将对比的两次结果,进行前期处理 比如: a_str = "@com/ene ...
- C++ 与 Java 语言对比
1 . Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的.从这里就可以看出 C++ 的 OO 思想不够彻底,至少在封装这一点上. 2. C++ 中有拷贝构造函数,可以把一个 ...
- java语言对比,jvm,垃圾回收
1.java/c++/ruby/python集中语言的对比 java和c++ 1,没有指针 2,没有多继承 3,没有const 4,在实现多态上的区别 tc++里面的虚函数,纯续函数和java里 ...
- .NET和JAVA 反射对比
反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息.使用反射可以看到一个程序集内部的接口.类.方法.字段.属性.特性等等信息.在System.Reflectio ...
- C#和java的对比及总结
1.Java里的AClass.class得到的Class<T>类的对象对应C#的typeof(AClass)得到的Type类型的对象:(但是C#如果要反射创建对象是用Type对象的Asse ...
- Java中对比两个对象中属性值[反射、注解]
在Java中通常要比较两个对象在修改前与修改后的值是否相同,一般我们采用的是反射技术获取对象的get方法[或其他的方法]获取值并做比较.如果系统将修改的属性名称也显示出来,这样就能更直观的显示类中的哪 ...
- php和java优势对比
PHP很专一,用于创建动态网页的服务器端的脚本语言.作为一种为Web而特别设计的语言,PHP带来了许多商业机构渴望的特性. ·学习周期短,比较简单 ·快速的开发时间 ·非常高的性能 这 ...
随机推荐
- 为Dynamics CRM注释的图片附件做个预览功能
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复163或者20151017可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! Dynamics CRM中注释可 ...
- ABP进阶教程6 - 布局配置
点这里进入ABP进阶教程目录 解读参数 l - length changing input control (左上,每页显示记录数) f - filtering input (右上,过滤条件) t - ...
- 7.JavaCC官方入门指南-例2
例2:整数加法运算--改良版(增强语法分析器) 1.修改 上一个例子中,JavaCC为BNF生产式所生成的方法,比如Start(),这些方法默认只简单的检查输入是否匹配BNF生产式指定的规范.但是 ...
- bayaim_杀神_全民飞机大战
bayaim_杀神_全民飞机大战 ------------------------ 系统:IOS QQ:7742469490 王者:30 游戏名:神 级别:98 装备:满鸡 + 新战魂+ 歼31 + ...
- firewalld基础
firewalld是一个基于网络区域的动态管理防火墙的守护进程.在iptables中需要理解表,链等概念,而在firewalld中需要从理解区域的概念开始 防火墙依照特定的规则允许或限制输出的数据通过 ...
- Maven更改本地默认仓库时遇到的问题。 No implementation for org.apache.maven.model.path.PathTranslator was bound
按照提示去查看log日志 2019-10-22 16:52:08,646 [ 161168] ERROR - #org.jetbrains.idea.maven - com.google. ...
- 4.web基础$_POST
- leetcode 分类
https://www.douban.com/note/330562764/ https://blog.csdn.net/Irving_zhang/article/details/78835035 h ...
- Python 可执行对象
Python 可执行对象 eval/repr eval eval 可以执行字符串类型的表达式 (或 compile() 创建的代码对象(code object) ) 并返回执行结果 eval(expr ...
- CF1278C-Berry Jam-(前缀和)
https://vjudge.net/problem/CodeForces-1278C 题意:有2n瓶果酱,中间有一个楼梯隔开,从中间往左或右两边清空果酱,使得两种果酱的数量相等,最少要清空多少瓶 思 ...