【问题标题】:How well do Java and Scala work together?Java 和 Scala 协同工作的效果如何?
【发布时间】:2010-03-04 17:27:53
【问题描述】:

过去几个月我一直在学习 Scala,现在我觉得除了解决一些简单的问题之外,我还可以开始将其用于实际工作。我的问题是这两者如何协同工作?

我现在正在处理几个 Java 项目。开始在其中使用 scala 有多容易?有什么需要注意的问题吗?是否有任何教程或可用的东西?如果我想在 Web 项目中使用 Scala,该怎么做(除了提升)?欢迎所有想法和建议。

【问题讨论】:

    标签: java scala


    【解决方案1】:

    一般来说,使用 Scala 代码中的 Java 库比使用 Java 中的 Scala 内容更容易。这往往会发生,因为 Scala 具有在技术上可以在 java 中访问的高级功能,但由 scala 编译器通过生成各种名称混乱的额外类来实现。

    如果你的“主”程序现在要用 java 编写,但你想在 scala 中实现一些功能或模块,你可能应该根据 Java 接口来定义你的模块。然后,让您的 Scala 代码实现这些接口。

    希望你很快就会发现你非常喜欢 scala,以至于你切换到 scala 作为主要语言,调用你的旧 java 代码。

    【讨论】:

    • 我完全同意这些观点:这正是我将两者结合起来的方式。 (即 Scala 主程序或 Java 主程序通过 Java 接口与 Scala 交互,以避免在 Java 代码中进行名称修改。)
    • grrrr,“name mangling”是我在写这篇文章时无法想到的技术词,导致我使用了“funny names”这个词。
    • @BeanProperty 注释可以成为你的朋友,让 Java 代码更容易访问 vals 和 vars。它生成 java 风格的 getFoo 和 setFoo ,您可以从 java 代码中使用它们(尽管 scala 编译器不允许您从 scala 代码中访问这些名称)。
    【解决方案2】:

    一般来说,我不了解混合语言项目的前提,除非在极其特殊的情况下。 Scala 能够(作为一种语言)表达 Java 所能表达的一切,甚至更多。那么,为什么还要费心“将 Scala 引入 Java 项目”呢?为什么不写一个纯Scala项目?

    当我说纯 Scala 时,我认为您可能希望引用一个用 Java 编写的 JAR 文件。但对于绝大多数情况,我认为 不需要在 Scala 项目中编写 Java 代码。

    【讨论】:

    • 如果你有一个大型应用程序,重写整个东西以使其成为纯 scala 可能是不切实际的,尤其是在企业世界中。但是您可能想使用 Scala 编写插入应用程序的新模块。一旦 scala 进入现场,我不觉得有人提倡编写大量额外的 java 代码。
    • 这是一个公平的观点。我不得不说,我将大多数 遗留 系统保留为纯 Java - 但我们没有一个是庞然大物,而且大多数可能会在 3-5 年的周期内从头开始重写
    • 巨兽对于这些类型的系统来说是一个很棒的词,因为它意味着巨大和可怕:)
    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2021-12-09
    • 2019-04-21
    • 2014-08-05
    • 2020-01-14
    相关资源
    最近更新 更多