JVM 和 JavaScript 的无头单源库

Headless single-source library for JVM and JavaScript

我需要编写一个可以编译为Java-类的库(更具体地说:Android)和JavaScript或TypeScript(现代浏览器和Node.js)。

该库将处理包含大量数字的对象列表,并且必须计算统计信息和 filter/manipulate 列表。没有火箭科学,可以为每个环境桥接依赖关系。十进制算术没有问题。 (=> 这些库可以用 TypeScript 和 Java 开发,但没有人愿意维护 2 个语义相同的源。)

我不害怕学习一门新语言,但集成应该很顺利(即创建一个具有标准 Java 接口和 Java 类型的 .jar 和一个用于 JavaScript/TypeScript 没有数百 KB 的运行时)。

我可以选择Scala/Scala.js吗?

它可以与 Kotlin 一起使用吗?

你们中有人成功地完成了同样的任务吗?有什么注意事项?

好吧,现在 Scala/Scala.js 的基础非常正常——许多库交叉编译,没有任何变化。 Scala.js 编译器经过高度优化,只包含实际调用的代码,因此输出相当精简。 (除非您需要庞大的外部依赖项,SJS 编译器对此无能为力。)

如果您需要在两侧以不同方式处理它们,那么管理依赖性差异将需要一些额外的努力。这对于 Scala/Scala.js 来说并不少见,但确实需要为此构建项目。 documentation of CrossProject进入细节

但总的来说——是的,这在这一点上相当普遍……