繁体   English   中英

在同一项目中使用多种JVM语言

[英]Using multiple JVM languages in the same project

我想在项目中以及其他一些语言中一起使用Kotlin和Scala,但是我没有很好的方法。 我想到的唯一方法是编译一种语言并将其反编译为Java以与另一种语言一起使用。 还有其他选择吗?

您可以同时使用Scala和Java,因为scalac可以理解和编译Java文件。 其他语言也可能如此。 当使用多种替代JVM语言时,可能会出现问题,因为例如Kotlin编译器可能无法理解Scala文件,反之亦然。

我认为最好的方法是将项目分成不同的模块,并且每个模块最多使用一种替代语言。

我对模块是什么意思?

对于module ,我的意思是将一组源文件转换为一个 (二进制)工件,即jar文件。 在不同的情况下,我只是将“模块”称为项目。 请注意,一个模块可能在二进制级别上依赖于其他模块(例如,具有一些jar文件作为依赖项)。

IDE中的多模块支持

我认为,即使每个模块使用不同的语言,大多数主要的IDE也应该可以同时在不同的模块上工作。 各个IDE的术语有所不同。

术语

对于Intellij IDEA,我的模块之一称为“模块”。 对于Eclipse,它将被称为“项目”。

为了完整起见,而不是在别人的嘴里说些什么,我想称一下。

我同意齐格斯塔的回答的最后一句话。 正确的做法是采用基于组件的方法,而不是尝试在一个组件或项目中组合多种语言。

从技术角度来看,每种JVM语言都有自己的编译器。 有些,例如Scala的,可以同时编译Scala和Java文件。 但是,这对于其他编译器可能正确,也可能不正确。 为了避免奇怪的构建过程,一个好的方法是对每个构建的模块使用一种语言。

由于您坚持使用JVM语言,因此每种语言都可以编译成JAR,因此您可以轻松地将可执行二进制文件作为单个JAR文件分发,并将所有组件包装在其中。 这就是Fat JAR方法(请参阅有关Stack Overflow的此问题有关Java Code Geeks的这篇文章 )。

从人类可读性的角度来看,这还应该使您的软件更容易理解。 不仅您将其分解为逻辑构建块(每个组件),而且进行修改的人只需要了解他们正在使用的组件所使用的语言以及与之交互的组件的公共接口。 语言之间没有思维上的切换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM