徐州专业做网站,舞蹈网站模板,网站网页设计公司有哪些,深圳罗湖企业网站本文将从技术人员的角度横向分析C#、C和Java优劣#xff0c;其实选择Java阵营还是.NET阵营#xff0c;大家可以根据自己的实际需要来确定。 C#诞生之日起#xff0c;关于C#与Java之间的论战便此起彼伏#xff0c;至今不辍。抛却Microsoft与Sun之间的恩怨与口角#xff0c;…本文将从技术人员的角度横向分析C#、C和Java优劣其实选择Java阵营还是.NET阵营大家可以根据自己的实际需要来确定。 C#诞生之日起关于C#与Java之间的论战便此起彼伏至今不辍。抛却Microsoft与Sun之间的恩怨与口角客观地从技术上讲C#与Java都是对传统面向对象程序设计在组件化软件时代的革新之果可谓殊途同归。虽说两个语言有着90%的重叠但那另外10%的较量也往往能够左右一个天平的方向。本文将携90%之共论10%之异对两个语言做纯技术品评。文章不涉及两个语言的公司市场等台面后的事情--虽然这往往也会影响人们对编程语言的选择。也不预备得出谁是谁的Killer读者应该选择谁的问题。语言选择乃艺术而非技术问题业界早有定论无需多言。
C#和Java都提出了对传统C艰深晦涩的语法语义的现代改良。在语法方面两者都摈弃了C中函数及其参数的const修饰宏代换全局变量和全局函数等许多华而不实的地方。在继承方面两者都采用了更易于理解和建构的单根继承和多接口实现的方案。在源代码组织方面都提出了声明与实现于一体的更好的逻辑封装。在类型系统方面两个语言都在中间语言IL或字节代码的基础上提出了映射(Reflection)这样的概念彻底革新了传统C运行时类型鉴别的问题。但在大刀阔斧地对C进行改革的同时C#显得更为保守它对很多原来C中很好的性质予以了保留如基于栈分配的轻量级的结构类型枚举类型引用ref输出out数组params修饰的参数传递方式等这些在Java中都被很可惜地丢掉了。在基本类型和单根继承的对象之间的类型统一方面C#提出的box/unbox要比Java的包装类显得高明效率也要好。
对C不安全的指针及内存分配方式C#和Java都提出了托管执行环境。效率问题是托管执行环境一直以来令人诟病的地方Java虚拟机JVM的解释执行方式曾经让很多开发者慢的不可忍受。C#的JIT编译方式为C#在这块战场上赢得赞声一片某些C#托管代码甚至比传统C代码都快。虽然现在各厂商实现的Java平台也都一致地采取了JIT编译方式但C#在这方面的比较优势非常明显--C#的目标编译语言IL从设计初始就把效率摆在了重要的地位而Java的字节代码的设计却有些鲁莽。托管执行环境经过几年的实践在现代软件界已经达成了共识效率的牺牲换来的是高度安全的代码--当然前提是牺牲的效率必须足够的小至少可以忍受。值得指出的是在这里C#同样念念不忘老一辈C程序员C#允许我们在unsafe上下文中进行指针操作。数组的索引越界检查类型安全在C#和Java中都被提到了相当的高度。在异常处理方面不管从内置支持还是从执行效率来讲C#都较Java略胜一筹。
一次编程多处执行是程序设计一直以来的一个诉求尤其是在现代互联网络时代。在跨平台方面Java的支持和实现都是为人称道的虽然JVM的速度仍然让人备感头疼。而C#虽然在底层构造方面对移植性进行了充分的考虑但至少目前还没有成熟的经过检验的产品。C#在跨平台方面似乎更热衷于XML Web Services互操作而不是跨平台编程。但C#通过其基础语言构造CLI对二十多种主流语言的对象级的互操作支持又极大地提升了C#的技术地位。和COM组件廉价地互操作也为C#挣到不少分数--保持一个兼容的体系对现代软件工业非常重要也是对广大开发人员负责任的表现。
面向组件无疑是当代软件开发的主流。C#对组件编程甚至到了迷恋的地步这与6年前就出道的Java不可同日而语--当然这是时代问题。C#通过属性索引器委派事件操作符重载特征版本等实现了其对组件编程的第一手的支持。虽然这些在Java中都可以通过方法接口或者适配器来间接地实现但软件业的历史告诉我们这无论对编程效率或者逻辑设计都是一种极大的损伤--高级语言首先面对的是人而不是机器。除去这些语言层面的组件支持机制.NET平台也为组件的配置运行管理等提供了一揽子解决方案而为组件开发量身定做的Visual Studio.NET更是令人兴奋这都为C#的组件编程开辟了广阔的天地。在其他技术方面Java的微弱劣势尚且可以忽略不计但在组件编程方面Java相较于C#却有着不可治愈的硬伤。尤其对于从C和Visual Basic背景过来的开发人员C#在这方面有着不可抵挡的魅力和诱惑。
鉴于XML Web Services在下一代企业分布式计算中的地位我们有必要在这方面对两个语言有一个简单的交代。在XML Web Services的操作方面.NET平台直接在IL中间语言中的内置XML支持使得C#与生俱来地成为下一代Web服务的首选这是通过API集来支持Web服务的Java所不能比的。在C#中XMLSOAPUDDIWSDL等底层协议被构建成了面向开发人员的组件而Java中这些仍然是JAX(Java XML API)等底层协议的操作函数。当然这种局面可能仅仅是时间问题一个强大的高效的Web Services组件模型对Java来说并不是不可逾越的鸿沟。
在语言标准化方面微软也史无前例地做出了令人赞赏的动作。目前C#及.NET平台基础构造已递交欧洲计算机制造商协会ECMA经过标准化后的C#将可由任何厂商在任何平台上实现其开发工具及其支持软件这为C#的发展提供了强大的驱动力。而Java在这方面虽有动作--JCPJava Community Process但无疑只能是准标准化。在组件化软件时代拥有一门像C一样的标准化语言对软件界尤其是广大开发人员非常重要。
当然两个语言的全面的技术品评绝非仅仅上述几点简单的罗列比较其后端平台(C# for .NET, Java for J2EE)及其编程框架的支持各语言相关工具的实现现有的系统基础等等都对程序设计语言的发展产生相当的影响。从纯技术角度来讲C#无疑较Java更具竞争力。争吵谁抄袭谁也没有意义--技术的发展本来就是一个相互借鉴的过程。纯技术较量也并不能决定这场论战的胜负--如果非要一决雌雄的话。软件界倒乐见竞争经过市场锤炼的技术才能更好地为我们服务让我们拭目以待!
【编辑推荐】
详解C#编程中的反射机制与方法Fan——类似Java和C#的新语言C#连接数据库和更新数据库 如果你的学历和能力只能进入一般的软件公司或集成公司那么选择微软的技术体系不错。因为微软体系网上很多学习资料而且大量的企业应用是用微软技术开发的而且很多公司也用微软技术。所以公司多你好找工作。微软的技术一般固定C#Asp.netSQLSERVERVisual Studio。如果你的学历和能力能进入做大型企业应用的公司那么你就选择JAVA的技术体系。因为现在大型企业基本都用JAVA开发。你可以从eclipse、structs、hibernate、WebService、Tomcat、Apache、JBoss、POJO、Oracle开始学习然后再学习WebLogic、WebSphere、Portal技术、工作流技术。如果你想进入互联网公司或web2.0创业公司。那么一般Php、Mysql、Apache、Ruby on Rails、Python是你的学习目标。如果你想进入手机开发那么Symbian和CNokia市场份额最大、J2MEandroid产品google发布还未正式生产但笔者认为很有前途、Windows Mobile(微软好开发从开发思路到工具到语言都是你所熟悉的)。这三类都会三者鼎立谁也不会把谁干掉。至于5年之后就不好说至少5年内是手机时代是手机无线时代每个厂商都在争抢这一块未来最有钱途的肉。如果你想进入目前炙手可热的网游公司。做服务器端你得C过硬、网络传输技术过硬、并发线程处理、了解Linux编程要和了解windows编程一样深入。如果你想做客户端那么图形图像处理算法你得首先过关。当然现在很多引擎、工具、AI包、材质库、脚本减少了不少客户端编程的难度。如果你想进入现在已经未来10年内一直很热的嵌入式编程那么C而且你的单片机编程你得过关。中国是世界第一制造大国而且这种局面在5-10年内也很难改变。制造过去比谁的工人成本低。但是现在材料和人工的增长使制造压力巨大。就只能提升自己的制造能力。制造高尖端的产品就需要高尖端的流水线。而且中国的电子产品也越来越强大日本产品从最初的独霸中国渐渐变成了中国国货的天下。在手机上、数码相机上、家电、冰箱、DVD、空调、汽车、交通、医疗、数控等等很多领域需要嵌入式编程。就连咱们的嫦娥一号也是嵌入式编程的典范。华为、中兴这些通信设施也是嵌入式编程范围。当然你也可以剑走偏锋。过去是Notes编程随着国产OA的兴起Notes编程渐渐衰退。但是中国现在大型企业都在上线ERP而且大多用的是Oracle或SAP的ERP。这些ERP产品都提供了客户化定制编程开发环境提供了完备的应用API。大型企业应用ERP都需要定制化开发大量缺乏这类人才。但是市面上这些学习资料都非常少这是个难题。另外现在的外包也非常热各地建立外包园就跟当年建立软件园一样群起。想进入外包公司首先日语或英语需要过关。咱们国家的外包一般来自日本和欧美。在开发中一般也是三种语言的主流C、C#、JAVA。所以从以上分析来看C、C#、JAVA都是当今的主流。都在各方面都应用很广。你选择哪一类都会有很多的机会和空间。但如果你学了C又怕以后碰不到C的工作还要学C#还要学JAVA那么你终将一事无成。不要怕钻一门足矣。不过拥有了一份技术技能你能应聘进入一家公司。但是一家软件公司如何管理你是否适合这种管理你在这个团队中能扮演什么角色你在公司中奋斗的路径是什么我会在下一篇详细介绍软件公司管理的时候给大家讲到。我是工作2年后就跳一次然后加15%的薪水呢还是有计划的发展我的IT职业呢还是我就混一混不好玩我就换行业呢你的路你自己把握。但千万不要自己玩自己不好玩。