可能是重复问题:
C#和Java之间的主要区别是什么?
我相信是Eric Sink说过“C#是正确的Java”。我对Java非常熟悉,所以想尝试学习一些C#。
据我了解,这两种面向对象语言非常相似,那么实际上有哪些区别(如果有的话)?
可能是重复问题:
C#和Java之间的主要区别是什么?
我相信是Eric Sink说过“C#是正确的Java”。我对Java非常熟悉,所以想尝试学习一些C#。
据我了解,这两种面向对象语言非常相似,那么实际上有哪些区别(如果有的话)?
我曾经在商业和业余项目中广泛使用过Java和C#,个人更喜欢Java庞大的开源社区,但是现在C#的工具和语言进步速度更快。
Java比C#提前了5年,期间Java尝试了一些开创性的东西,并为C#提供了一些错误和最佳实践。这使得类库设计、泛型实现方式以及整体的完美程度有明显的差异。
此外,C#每隔几年就会引入一批强大、精心选择和良好集成的新语言特性(如LINQ、闭包、类型推断、动态变量类型、协变和逆变的通用支持等),让人感到非常愉悦。
令人惊讶的是,微软将从Haskell、JavaScript和Python等多种语言中直接引入一些最佳特性到C#中。所有迹象都表明,这种趋势将继续下去。
另一方面,Java比C#提前了5年(如果考虑微软开始更加开放的时间更长),建立了一个社区。这导致NUnit是JUnit的一个移植,NHibernate是Hibernate的一个移植,通常情况下,N*是J*的一个移植。
你通常会从每种语言的相应社区中获得非常相似的一套令人难以置信的工具,但很多东西在Java出现之前就已经存在(因此更加成熟)。
两者都值得学习,有很多东西可以从两者中学到。它们都拥有稳定的社区,对世界有稍微不同的看法。我建议了解两者,并密切关注它们的未来发展。
我简直不敢相信这个还没有被提到...
Java可以在许多不同的设备上运行(包括Win,*nix,Mac,手机,pas等),包括x86,arm和一些嵌入式设备,其操作码为字节码。
C#仅能在1个操作系统(如果你将2k、xp、win7 beta和win7视为“不同”的话,则为4个)和1种体系结构上运行。
有人会在此时提到Mono。Mono是一个错误;它是对.net的追赶者,但微软并没有起诉任何人,并声称他们可以。它不完整(永远不会完整),通常比真正的.net落后至少一个主要版本。
相比于C#(或.NET),Java可以在更多的平台上运行。