【问题标题】:Has Java just not kept up? [closed]Java没有跟上吗? [关闭]
【发布时间】:2009-03-14 06:35:20
【问题描述】:

我整天都在编写 C# 代码,但最近因为爱好而跳到 Java,比如为 BlackBerry 和 Android 平台编写代码。一直以来,我一直认为,就语言特性而言,Java 和 C# 是一对孪生兄弟。

无论如何,我发现 Java 相当于 C# 1.1 或类似的东西。在 Java 中,我必须编写两倍于 C# 的代码。对象初始值设定项、lambda、看在上帝的份上的属性等特性会出现在 Java 中吗?我试图翻阅 JSR 的东西,但找不到任何东西。

Java 根本就跟不上吗?还是我根本没有按预期使用它?

【问题讨论】:

  • 为什么这个问题被关闭了。从答案来看,大多数人都认为Java在语言特性方面确实落后于C#。并且可以客观地确定缺少此类功能,例如闭包。
  • 我当然没有要求它作为发动宗教战争的一种方式。不知道为什么它被关闭了。

标签: c# java


【解决方案1】:

我认为你是对的,Java 没有 C# 引入的很多方便的新特性。许多新的 C# 功能只是编译器技巧(属性、对象初始化器、扩展方法),您可以在 C# 或 Java 中手动完成。

Java 人可能还没有引入这些新功能,因为他们可能更喜欢保持语言尽可能简单和向后兼容。

我不得不说我现在更喜欢写 C#。

【讨论】:

    【解决方案2】:

    我会说,是的,Java 没有跟上。 Microsoft 对 Java(和 C++)进行了长时间的认真研究,找出了它们存在的问题,以及缺少的功能,并在 C# 的后续版本中修复了其中的许多问题。

    此外,Java 设计者似乎试图使他们的语言和解析器尽可能简单,而 C# 设计者则不惧怕语法糖:属性、委托、lambda 和 LINQ 都是这方面的例子。正如您已经注意到的那样,一勺语法糖会使语言更容易下降。

    【讨论】:

      【解决方案3】:

      Java 肯定落后了,尽管我会说它比 C# 1.1 更接近 C# 2.0 - 例如,它具有泛型,尽管它们与 C# 中的有些不同。

      听说 Java 7 中删除了许多提议的语言特性(尤其是闭包),我感到很失望,但随后 Project Coin 出现了 - 所以至少我们可能有一些小特性期待。

      我无法看到 Java 在语言方面很快赶上 C# - 他们有更多的语言包袱,这使得为了一件事改变语言变得更加困难。虽然听起来微不足道,但已检查的异常为方法签名添加了一个额外的“轴”,这使得某些事情(如闭包)比其他事情更棘手。

      (当然,C# 4.0 也在关注中......)

      【讨论】:

        【解决方案4】:

        一种流行的语言越老,它的代码库就越大,并且对语言的更改以更保守的方式进行,以免破坏现有的代码库,这将是昂贵的修复。

        Java 是较旧的语言之一。 C# 相对较新,可以进行更彻底的更改。与十年不变的 C 和 C++ 相比。

        如果您真的想要新代码的新语言功能,请尝试另一种基于 JVM 且与 Java 互操作的语言(Groovy、Scala、Clojure)。

        【讨论】:

        • 除非旧语言是VB6!如果你有任何现有的 VB6 程序,那么微软有一些不错的新语言供你重写你的应用程序。也许你会在你的组织破产并且你的竞争对手将你的产品创新到无关紧要之前完成。
        【解决方案5】:

        我认为部分问题是经济问题。当 Sun 在市场上处于领先地位时,Java 的出现并非偶然。在 .com 公司购买的所有服务器的推动下,他们的股票在 2000 年 3 月创下历史新高。

        当泡沫破裂,所有这些服务器都投放市场时,供应过剩需要很长时间才能解决。孙还没有恢复过来。商品服务器功能的增加已经侵蚀了专业 RISC 芯片和 Solaris 曾经拥有的优势。除非你是经济强国,否则你不可能成为军事强国;成为这种规模的创新者也需要现金。

        他们失去了很多曾经为公司提供动力的人才(例如 Bill Joy)。

        Sun 本质上是一家硬件公司。 Java 的策略,尤其是在服务器端,是有助于推动硬件销售。

        我认为 Java 的变革步伐因此受到影响。

        Microsoft 继续开发 C#,因为收入不断涌入,Anders 仍在他们身边,他们是一家最终从产品中赚钱的软件公司。这就是他们现在领先的原因。

        【讨论】:

        • 微软开发他们的语言,因为它都是“开发者开发者开发者”。如果您想销售操作系统,最重要的是让软件开发人员想要为您的操作系统开发软件。
        • 如果微软的双胞胎摇钱树操作系统和 Office 被取代,我敢打赌,“开发人员”也将处于次要地位。是现金推动战略,还是相反?两者都需要。
        • 我的观点是,推动其发展的不是来自 C# 的收入,而是来自摇钱树的收入。从您的回答的措辞中,我并不完全清楚-他们“从产品中赚钱”-哪种产品?无论如何都要 +1
        • “产品”在这种情况下是他们销售的软件。你是对的,它不区分 OS、Office 和 C#。
        • @duffymo;看了两遍,真的很棒,这个话题大家要注意你的话。
        【解决方案6】:

        确实你是对的。但是,我认为语言改进的重点已经转移到新的 JVM 语言上,例如 GroovyScala

        这也许是件好事,因为 Java 拥有庞大的用户群,不幸的是,对于应该添加到语言中的哪些特性(如果有的话)以及以什么形式添加,这些用户群几乎无法达成一致。例如,看看这个poll。另一方面,Sun 承诺改进 JVM,以促进动态 JVM 语言的开发和执行,例如 invokedynamic 指令、JSR 292

        对我来说,这是一个不错的妥协。

        【讨论】:

          【解决方案7】:

          这不是 Swing 与 WPF,它们就像粉笔与鱼子酱。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-17
            • 1970-01-01
            • 2011-02-17
            • 1970-01-01
            • 2013-08-21
            • 1970-01-01
            相关资源
            最近更新 更多