学java和c#,JAVA和C#我们学哪个?

C#和Java都是很不错的开发语言。它们通过类似的方式方法达到了类似的目的,尽管C#比Java延伸出来一些和句法相关的东西,例如foreach关键字和扩展/实现架构。糟糕的是,这些改进的光芒被削弱的东西削弱。在这篇文章里,我们来浅谈一下这两者之间的关系。

Java:不容争辩地具有C++所有的精华

在比较Java和C#的时候,你肯定会发现它们的相似之处,这在某种程度上要归结于它们共同的起源:C和C++。但是,当Gosling和他的同事们坐下来创造Java的时候,他们不仅吸取了C++的能力,而且他们去掉了一些无用特性,后者让C++更容易出错而且更难学习。C#的设计者加入了很多C++的特性,同样ava也加入了相同的特性,但是C#却没有去掉C++的最糟糕的特性。

语法语句方面:

显而易见得缺陷是流控制和句法。C#提供了goto

command,将其作为更改程序执行点的机制。Goto语句导致代码难以调试,而且不容易被测试工具发现并处理。

安全性能方面

C#有一个用于将代码区域标示为不安全的简单机制。在这些不安全的区域里,Java以及后来的C#安排到位了一些安全措施,用以防止程序员直接修改内存位置,以及使用点运算。在使用具有垃圾清理功能的高级语言时,如果下到内存地址这一层,就会把对象/内存之间有意作出分离弄混。错误就会容易出现,调试成了恶梦,缓冲区溢出再次出现,C和C++里著名的安全漏洞再次现身。

SOAP的集成

C#,及其更大的扩展.NET,已经同SOAP

Web服务紧密地集成在一起。SOAP是使用XML指定参数和结果值来进行远程过程调用的好标准,但是它并不是唯一的方式。利用用于Web服务的外部库能够允许Java开发人员轻易地更改其Web服务的风格,使其成为SOAP、XML-RPC,或者什么还没有发明的东西。当然,C#的开发人员总是能够选择将外部库用于SOAP的Web服务,但是由SOAP标准的紧密集成所造成的限制要比它能够做的东西更多。

所有权方面

C#微软已经申请了一个专利,以排斥他人编写第三方的CRL,如Mono计划。如果微软决定对免费的C#和.NET社区施压,它就有能力拿票子和法律的其开发活动赶回到Win32平台?当然这种情况也不一定会出现。

而Java语言则相反,不是ECMA标准的。但是,它是可以实现没有专利的阻碍,其虚拟机和核心类库都有来自第三方的开放和封闭源代码的实现。

C#表面看来是免费的,其实不是,随时可以背收回。而Java看起来限制很多,但是它能够依据法律通过免费的途径来实现。

客观一点评价,C#里没什么台复杂的东西。它没有Visual

Basic的复杂,也没有继承C里的一些繁琐,而这些会让开发人员难以施展。但是,最简单的问题,C#没有做很多东西,如果没有有任何比Java更有优势的话,那C#在某些方面很明显的要更差。如果要在这两个非常类似的编程语言之间作选择,做出学习研究职业定位的话,请选择那个更加成熟经过考验的:JAVA

你可能感兴趣的:(学java和c#)