目前C#势头良好。为了切换(或返回)Java,您需要有哪些功能?
如果人们为当前的Java版本发布了这些的变通方法,那么它也会非常有用,例如: Nullables被包裹在自定义类中,使其成为一个更有趣的维基。
答案 0 :(得分:33)
作为.NET / C#开发人员,这里缺少令我烦恼的功能。这个列表没有特别的顺序 - 就像想到的想法一样:
我很少使用Java,当我这么做时,我会有各种各样的WTF时刻。
编辑:我删除了每个评论,因为它不再是自1.5以来缺少的Java功能。
答案 1 :(得分:20)
根据我的经验,Java vs. .Net更像是商业决策,而不是技术决策。有MS经验的商店趋向于.Net和拥有Java体验趋势的商店和Java& OSS。我看到很少有人根据语言特征进行切换。另一方面,我看到商店大量倾向于一个或两个关键员工的平台,他们想雇用他们在该领域知识渊博。
答案 2 :(得分:16)
没有特别的顺序:
yield return
构造; <#li>这个用户非常友好
我认为这是最重要的一个:
答案 3 :(得分:13)
刚刚离开袖口,我认为Java 7需要的最大的事情是每个人都在为缺少封闭而感到遗憾。
答案 4 :(得分:13)
我是一名C#程序员,大约一年前,我不得不参与Java应用程序的开发。我最想念的是:
当我回到C#时,我错过了一个单独的Java功能:方法签名中的显式异常声明。
免责声明:我说的是一个有点旧项目,我不知道当前版本的Java中是否存在其中一些功能。
答案 5 :(得分:11)
减少令人发指的XML解析和操作工具。在Java中使用XML做任何事情糟透了。
答案 6 :(得分:10)
我也会反过来给出一个答案。 C#需要像Java一样的枚举实现。 Java的枚举摇滚!
我也可以在此列表中添加匿名覆盖。很抱歉离开主题,但C#需要能够匿名覆盖方法。我一直在Java和C#之间来回切换,我不得不说对单元测试遗留代码,没有比匿名类覆盖更好的了。
答案 7 :(得分:9)
动量。我在两个平台上都做了很多开发。由于C#语言的发展方式,我更喜欢.NET方面。 Java的演变似乎更像是对C#的反应,而不是对实际愿景的反应。所以我认为Java要做的最好的事情是忽略.NET并创建自己的新东西。
答案 8 :(得分:9)
我需要某种函数指针。在C#中使用委托的能力非常有用。在Java中有很多次我想创建一个委托或函数指针的映射作为解决方案,但我不能。我知道你可以在Java中模拟类似的东西,但将抽象作为语言的一部分是一个巨大的优势!
答案 9 :(得分:8)
我想要的另一个是LINQ。当我尝试进行顶级编码器竞争并意识到它们只支持.NET 2.0时,我注意到我实际上依赖于使用LINQ的能力。一旦习惯使用LINQ解决问题并使其成为常规编程词汇表的一部分,就很难在这方面看不到问题。它类似于使用泛型,然后无法使用泛型。
答案 10 :(得分:7)
我认为,Java和C#之间的选择不是语言功能的问题,而是平台和生态系统选择的问题。
所以,我怀疑Java或C#中的任何新的语法糖都会导致平台之间的大量切换器。
毕竟,JVM世界有Scala,许多语言敏感的开发人员正在以某种方式使用它。
答案 11 :(得分:5)
我认为,你应该考虑将这个神圣战争从“Java vs C#”转换为“JVM vs CLR”,因为JVM(在过去几年 - 主要是)不仅是Java,还有Scala,Groovy,Clojure,JRuby, Jython和十几种JVM语言。
答案 12 :(得分:3)
属性!
匿名对象也很好
答案 13 :(得分:2)
Continuations,就像Scala一样(在其余部分之上)对于代理开发也会很好。
答案 14 :(得分:2)
支持在没有IKVM和其他此类层的情况下运行CLR(反之亦然可能是JVM)。
答案 15 :(得分:2)
让我们明确一点,我们需要区分Java和JVM。我实际上是从C#切换到Java,但我承认这不是因为Java的语言功能惊人!我非常谦虚地认为,C#是更好的语言,而CLR可能是更优雅的VM。但是,即使使用Mono,您也不会编写遍布各处的应用程序!
我认为Java最大的理由就是它拥有的惊人社区。这是最先进技术的开发地,而不是Sun(现在的Oracle)。 Java社区一直是开发企业技术的领导者。例如,微软提供DI框架需要多长时间? .NET中的AOP在哪里?当我启动.NET项目时,我的基础是Spring.NET,一个Java端口。当我需要ORM时,它就是NHibernate。需要一个测试框架? NUnit的。我意识到.NET平台还有其他OSS项目,但与Java社区相比,他们的数量和微软的支持是可笑的。
答案 16 :(得分:1)
他们应该首先修复与日历/日期相关的类,即使这看起来太多了。
答案 17 :(得分:1)
Java替换BigDecimal类的原生'decimal'类型会很好。但Java线程安全的集合很不错。
也许问题不在于Java 7需要说服开发人员如何使用它,而是更多的问题是开发人员想要从企业/服务器端java语言迁移到不同的C#桌面仅面向Windows的世界?
对于大多数开发人员来说,语言不难发现,无论是Java还是C#。我用Java开发,但Linq没多久就理解和使用。
我认为Java或C#的选择取决于你个人的动机 - 也许是金钱?在这种情况下,任何一种语言都可以做它们是否具有某些特征。
步骤
答案 18 :(得分:0)
我认为这取决于商业决策,而不是语言本身。 但我真的非常喜欢C#lambdas和咖喱:D:D
答案 19 :(得分:0)
我认为任何地方“诱惑”任何人都没有任何意义。他们解决了不同的问题,你应该使用适合你的任何一个。
Java拥有更少的“语言”和更少的结构来吸引新人,它独立于平台,并且变化不会太快,允许旧代码长时间停留(对一些大公司有利)。
C#具有紧密的桌面集成和一系列不错的功能,使编程更加有趣。它有.net集成。它有指针,闭包等,这使得n00bs(一个有效的语言目标,因此是基础)更难,但对于有经验的程序员来说更有趣 - 我没有说服自己这些功能可以提高你的工作效率,但在某些情况下他们可以让你的代码更好!此外,如果您需要指针,需要指针。
我没有看到目标受众有很多重叠。为什么改变一种语言来吸引程序员,使整个行业更健康,有两种健康的语言,每种语言都旨在解决吸引不同开发者的不同问题?
答案 20 :(得分:0)
linq,lambda,匿名类型
答案 21 :(得分:0)
.net仅适用于Windows(单声道远离企业,没有任何企业使用它),myspace.com为其4000个Windows Web服务器许可证花了多少钱? 100万?
如果不购买专业版,你无法为VS安装一个简单的插件(也不能做其他事情),
亚马逊网络服务中的一些Windows实例类型几乎是linux版本的x2价格。
如果你看看ohloh.net开源java项目计数(使用语言比较工具),你会发现java的卷比c#多了x5。
此外,Java在全球拥有20%的份额,而c#拥有%4.x(来源:tiobe.com)
查看顶级网站;只有microsoft和myspace正在使用.net。谷歌,亚马逊,ebay,linkedin,阿里巴巴,推特(从铁路切换到scala)...他们中的许多人正在使用java,而其他许多人正在使用php,ruby(facebook,yahoo,..)
作为一种语言,Java远远落后于c#,但Scala(在jvm上运行)与c#一样好,它的性能与java几乎相同,并且它可以使用所有jdk和其他java代码作为他的库。
我不是说java更好,但我说java也和.net一样有价值。
答案 22 :(得分:0)
运行在任何可迭代的地图({codeblock})会很好。并过滤掉。并且能够从方法中轻松返回多个值。
(a,b,c) = getThreeValues();
(将分配各个变量a,b和c)。
实际上我只是认为他们应该在JVM上使用Haskell作为支持的脚本语言:D
答案 23 :(得分:0)
将模型中的值映射到UI的简单方法(如Java / FX中的bind
)