在同一个项目中使用Scala和Java

16

我可以在同一个项目中使用Scala和Java吗?我是编程新手,所以有点困惑。

从我的研究中,我发现获得良好项目的最佳组合是Java/Spring或Scala/Lift。为什么存在这些组合呢?不能使用Spring和Scala或者Lift和Java之间的组合吗?

如果我使用Scala,我应该将整个配置都放在Scala代码中吗?还是可以使用外部资源,这样就不必每次修改Scala代码。

2个回答

14

Q. 我能在同一个项目中使用Scala和Java吗?

可以的。您可以在同一个项目中使用大多数基于JVM的语言。

Q. 我该怎么做呢?

基本思路是配置构建工具来编译Java和Scala代码。例如,如果您使用Maven,可以使用Maven Scala插件 来编译Scala代码。使用此插件有两个选项:

  1. 禁用默认编译Java代码的Maven编译器插件。然后让Maven Scala插件编译Java和Scala代码。
  2. 继续使用Maven编译器插件编译Java。将Maven Scala插件配置为仅编译Scala代码。

我更喜欢选项2,因为我发现Scala编译速度相当慢(虽然每个新版本都在不断改进性能),因此使用Maven编译器插件可以减少整体构建时间。

Q. 不可能使用Spring与Scala或Lift与Java吗?

可以的。您可以检查我的示例应用程序,该应用程序使用Java、Scala和Spring。

示例应用程序有单独的源文件夹用于Java和Scala代码,尽管这并非强制要求,可以在Maven配置中进行配置。

Q. 如果我使用Scala,是否应该将整个配置都放在Scala代码中?

我假设您指的是Spring配置。无论您是否希望使用XML文件、Java类或Scala类进行配置,完全由您决定。所有方法都可行。这取决于您更喜欢和更熟悉的风格。

您甚至可以将配置分散在多个类中,甚至可以使用XML和类的组合方式。


7

简短回答

是的

详细回答

Scala 和 Java 可以很好地协作。

Scala 的主要编译目标是可以编译成在任何 JVM 上运行的 Java 字节码。除了具有运行时兼容性外,Scala 语言本身还支持互操作性。

因此,基本的项目设置如下:

./src
   /main
       /scala
       /java
    test
        /scala
        /java

如何将所有内容绑定在一起取决于您使用的构建系统,例如sbtgradlemaven都可以提供良好的支持。


当我使用scalajava时,我会得到哪些好处?我可以使用java来制作整个后端,而不需要使用scala吗?您能否请详细解释一下 :) 谢谢! - Ayoub Abid
没错。即使你使用的是用Scala编写的库,你仍然可以从Java中调用它,因此你不需要使用Scala。 - Andreas Neumann
在Java和Scala代码中,是否有必要将它们分别放在不同的文件夹/包中? - William
这是最佳实践,一切都可以配置。虽然不是必需的,但建议这样做。 - Andreas Neumann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接