Безглавая однопользовательская библиотека для JVM и JavaScript

Мне нужно написать библиотеку, которая может быть скомпилирована в Java-классы (более конкретно: Android) и JavaScript или TypeScript (современный браузер и Node.js).

Lib будет обрабатывать списки объектов с большим количеством чисел и должен вычислять статистику и фильтровать / манипулировать списками. Никакой ракетоведческой науки, зависимости не могут быть объединены для каждой среды. Нет проблем с десятичной арифметикой. (=> Libs могут быть разработаны в TypeScript и Java, но никто не хочет поддерживать 2 семантически равных источника.)

Я не боюсь выучить новый язык, но интеграция должна быть гладкой (т. Е. Создать .jar со стандартным интерфейсом Java и типами Java и .js-файл для JavaScript / TypeScript без сотен килобайт времени исполнения).

Могу ли я выбрать Scala / Scala.js для этого?

Будет ли это работать с Котлином ?

Кто-нибудь из вас, ребята, справился с равной задачей? Каковы предостережения?

Ну, в Scala / Scala.js в наши дни очень обычны – многие библиотеки перекрестно компилируются без изменений. Компилятор Scala.js сильно оптимизирован и включает только код, который фактически вызывается, поэтому выход является разумным. (Если вам не нужны громоздкие внешние зависимости, которые компилятор SJS не может многое сделать.)

Управление различиями зависимостей будет дополнительным усилием, если вам нужно иметь дело с ними по-разному с обеих сторон. Это не является необычным для Scala / Scala.js, но требует, чтобы проект был структурирован для этого. Документация CrossProject попадает в детали.

Но в целом – да, это все довольно распространено в этот момент …