所在的位置: java >> 历史起源 >> 知乎Java和nbspC最大

知乎Java和nbspC最大

看下面的技术大牛怎么回复:

1楼:对比c和C++来说,C#和JAVA都是一个阵营,带虚拟机的编译型跨平台语言,带GC,可以方便反射,BLABLABLA。。。。对比PYTHON、LUA、PHP、JS来说,C#和JAVA也是战友。所以,他们的差别比其他的语言要小。

在手机领域,JAVA是安卓的,C#是UNITY3D的,C++是全平台的,想保住自己的小饭碗,还是先黑完C++再说吧!

2楼:说实话,我无法非常客观的评论这个问题,我做.NET多而Java少,主观上也是更喜欢C#一些说说主观的看法:关于跨平台,.NET可以跨几乎所有的Windows和勉强跨linux,对于做Winform而言还是很不错的.NET支持多种语言,王牌的当C#和VB莫属了,还有F#,也有第三方扩展的如IronRuby,这一点更多的还是微软的营销策略新兴技术,特别是多核运算,,NET已经支持了,几代C#也增加了很多新特性,从这点也可以说Java在创新和发展速度方面已经趋于缓和,这点既是Java的优势也是劣势,优势在于Java开发人员不用过于费心赶潮流,劣势在于失去往日的竞争力再一点就是,和.NET相关的东西如Windows、IIS、SQLServer、Office优势比较成熟的商业产品,稳定性比开源产品更好一些,莫名其妙的故障会少一些,如果在Linux上开发可能要精通相关的很多东西,学.NET能稍微轻松一点。当然,我并非不推崇专研新技术的热情,只不过生命短暂、时间精力有限,如果为了Java去专研相关的开源产品那还不如直接搞C/C++算了,现在比较能跨平台C/C++类库也有不少了如果你是想知道学什么好的话,郭德纲说得好,一般的手艺坎在外面,一看就知道有难度,说相声是坎在里面,进了门、入了行才知道难学(因为一般人都会认为说相声就是说话么,打小就会)。学.NET实际上也不容易,算法、数据结构那套基础理论一样要学好,其中比Java简单的地方就在于上面所说的相关产品的稳定和易入门,还有学习资料更系统化以及开发工具的易用(VisualStudio、Expression等)

Java属于大家,.Net属于微软,这话虽然有点糙,但是基本上能反映现状。当然这并不是指版权,而是指围绕这两个东西的生态和社区。

Java的跨平台的确有很多槽点,严格意义上说是不能成立的说法。但是现实是,对几个主流平台的支持的确给开发者带来很多实惠。不论你的产品是一个jar还是war,都可以随意选择Windows/Linux/MacOSX作为开发平台,然后再任意选择一个作为发布平台,大多数情况下不会遇到什么问题,这个好处是很明显的。

有人说不用Oracle的JVM会被告,这个有点危言耸听了。Android的例子很特殊,它的问题也离普通的开发者非常远(甚至略显讽刺的是,如果.Net/mono系真的不会导致类似的问题或者有开发优势,为何Google没有在第一时间选取这套方案而非Java?)。具体到JVM上,首先除了官方的Hotspot以外,肯定可以用开源的OpenJDK。除此外也有其他的商用JVM,比如Zing。绝大多数时候,开发者更关心的是相关的生态和社区环境,遇到问题能不能得到帮助,相比之下选择哪个VM是很少会遇到的问题了。

而.Net,或者说C#,离开Windows以后用户数量显然是骤减的。Mono的确提供了一种选择,但是更应该看作是一种.Net开发者的延伸。如果没有Windows+VisualStudio这种开发利器培育出来的后台社区,只剩下一个.Net的核,还有多少人会选择用它做主开发平台呢?Mono的社区成熟度显然和Java不在一个量级上,既缺少Eclipse这样的跨平台IDE,也缺乏Maven/ivy之类的buildingsystem。

实际上Mono的对手从角色上来看应该是Eclipse。Mono作为一种开源跨平台实现给.Net增加的开放性,正如Eclipse给Java增加的开发便利一样。Eclipse显然不能跟M系的正牌军VisualStudio比功能,但是基本的东西也都提供了,也算是一个很好的补充。

一定要说两者的区别,我觉得Java代表了一种水平的方案,选择Java的同时往往意味着也选择了Linux,Eclipse,Maven,Jenkins,MySQL/PostgreSQL等一系列免费开源的东西,你得花心思自己拼装组合,如果能磨合好是不输于商用系统的方案,但想要进入Windows主场比如做GUI开发,屌丝气是挥之不去的。选择.Net/C#,基本上就意味着绑定了微软的垂直方案,Windows/VisualStudio/SQLServer等等,这些东西大部分不免费,但是都出自一家公司,整合性已经很好,需要自己磨合的不多,主场作战的话非常省心,但离开主场就比较乏力了。比如说服务端开发,没有Unix系的ssh,shell,apt/yum之类为命令行设计的工具链,会有人喜欢远程操作Windows的感觉吗?

脱离开这些背后的生态环境,具体语言设计上的差距已经是次要问题了,语法精简一些或者智能一些都很难让两者进入对方的优势领域。

3楼:我看这里回答的不少是关于语言特性,这样无一例外的都是开喷Java。题主问Java和C#最大不同,这不仅局限于语言特性吧。看到前面有人提到,这两个语言要是对抗其他语言的话,他们算是一类的,而且也经常被放到一起说事。只看这两个语言的话,语言特性层面固然是C#更有优势,毕竟是更晚出现的,借鉴了Java的优点,改进了Java的缺点。但对于编程语言来说,语言特性并不是全部,更重要的是要看你用它来做什么。Java和C#被用的比较多的是开发Web后端、WebService等。如果你的服务器操作系统是Linux(感觉这个是大部分时候的情况),那选择Java就比选择C#好很多了。如果你的服务器操作系统是Windows,那或许是C#更好一些。Java作为相对更开放的东西,有许许多多开源的轮子可以使用(例如SpringFramework、Hibernate等),还有Groovy、Scala这样基于JVM虚拟机的语言。但反观C#,基本上是被M$死死控制的。总体来说就是,用Java,你在其他东西上的选择面会更多,但是用C#,那就基本是被套在M$的东西里了。









































北京哪家白癜风医院便宜点
北京哪家看白癜风好



转载请注明:http://www.jiaju1314.com/lsqy/1439.html

  • 上一篇文章:
  •   
  • 下一篇文章: