我正在使用 Struts 2 编写一个 Java 应用程序,但现在我想将它变成一个 Java 和 Scala 的混合项目。我没有太多使用 Scala 的经验,但我几年前在大学里学过 Haskell —— 我真的很喜欢函数式编程范式,但当然在类里面我们只会遇到非常适合函数式解决方案的问题!在现实世界中,我认为有些代码更适合命令式风格,为此我想继续使用 Java(我知道 Scala 支持命令式语法,但我还没有准备好朝着纯 Scala 项目的方向发展刚刚)。
在混合项目中,如何决定什么用 Java 编码,什么用 Scala 编码?
最佳答案
两件事:
- 99%的Java代码都可以用Scala表达
- 您可以编写支持 Java+Scala 混合编译的项目。你的 Scala 代码可以调用你的 Java 代码,你的 Java 代码也可以调用你的 Scala 代码。 (如果你想做后者,我建议在 Java 中定义接口(interface),然后在 Scala 中实现它。否则,从 Java 调用 Scala 代码会变得有点难看。)
所以答案是:任何你想要的部分。您的 Scala 代码不需要是纯函数式的。您的 Scala 代码可以调用 Java 库。因此,几乎任何可以用 Java 编写的部分也可以用 Scala 编写。
现在,一些更实际的考虑。当第一次尝试 Scala 时,有些人会选择他们程序中相对孤立的、非关键任务的部分来用 Scala 编写。如果您喜欢这种方法,单元测试是一个不错的选择。
如果您熟悉 Java 并且过去学习过 Haskell,我建议您将 Scala 视为“更好的 Java”。从根本上说,Scala 编译成与 Java 输出非常相似的 JVM 字节码。唯一的区别是 Scala 更“高效”:它每行代码产生的字节码比 Java 多。 Scala 与 Haskell 有很多共同点(一流的函数,for-comprehensions 就像 Haskell 的 do-notation,有限的类型推断),但它也有很大的不同(默认情况下它不是惰性的,它不是纯粹的)。因此,您可以使用 Haskell 的一些见解来激发您的 Scala 风格,但“在幕后”它全是 Java 字节码。
关于java - Java 应用程序的哪些部分应该用 Scala 编写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1452568/