Я использовал Scala.js и наслаждался этим, для написания функциональности веб-страницы.
Я написал некоторые графические функции, которые рисуют изображения на холсте, например. Я заинтересован в переносе некоторых из этого кода в Adobe Illustrator и Photoshop. Они предлагают скрипты на трех языках: (1) AppleScript, (2) JavaScript и (3) Visual Basic. Конечно, API совсем отличается от Canvas и предлагает множество конкретных, мощных функций, которые я хотел бы использовать.
Моя программа будет переписана и значительно расширена, поэтому разработка будет продолжена. Интересно, смогу ли я продолжить разработку в Scala, и если Scala.js можно использовать для написания кода для программного обеспечения Adobe или, действительно, для любого программного обеспечения, которое работает с JavaScript.
Я полагаю, что мне нужно создать какой-то интерфейс для Adobe API. Что бы это значило? Будет ли этот код написан на Scala? Будет ли это плагин для sbt? Сколько я должен узнать о внутренних компонентах компилятора Scala?
Стоит ли это делать, или я должен выбрать вместо этого для разработки в JavaScript? (Я не хочу писать в JavaScript напрямую, потому что у меня был плохой опыт работы с ним в браузере, но я не могу сказать, что я эксперт в этом.)
(Обратите внимание, что я еще не знаком с большей частью Adobe API... Сейчас я просто изучаю.)
Должно быть довольно просто. Ключ в том, что вам нужно будет строить фасады - строго типизированные описания Scala - для API, которые вам интересны в Illustrator и Photoshop. Это не особенно сложно: вам нужно только беспокоиться о функциях, которые вы на самом деле хотите назвать, и описываете сигнатуры функций в Scala. С небольшой практикой это становится довольно простым - обычно это занимает минуту или меньше за каждую функцию, если у вас есть зависание. (Я поддерживаю фасад jQuery, который является одним из самых больших, и ударил большую часть из них днем после того, как я был на практике).
Предполагая, что они используют разумный стандартный JavaScript, возможно, большинство из них - вы определяете эти фасады, записываете Scala.js-код для их использования и подключаете скомпилированный JavaScript в инструменты...