Смешивание файлов java, scala и xtend в одном проекте?

Поскольку все языки окончательно скомпилированы в JVM, могу ли я свободно смешивать все типы файлов в одном проекте?

Например, могу ли я взаимозаменяемо помещать все типы файлов в проект Eclipse? Если я это сделаю, как я могу быть уверен, что все файлы скомпилированы, когда я запускаю некоторые из моих основных классов?

Есть ли здесь какое-нибудь руководство по встраиванию частей Scala и Xtend в большой проект Java? Не руководство по использованию с нуля?


person Suzan Cioc    schedule 08.02.2015    source источник


Ответы (1)


Вы можете - просто включите соответствующие плагины maven/природы eclipse

Единственная проблема, о которой я могу думать, это наличие циклических зависимостей между ними. Компилятор scala достаточно умен, чтобы читать и понимать исходный код java и разрешать циклические зависимости между scala и java, но я сомневаюсь, что он понимает xtend, поэтому вам, возможно, придется избегать циклических зависимостей между классами scala и xtend и выбирать один порядок компиляции (либо xtend затем scala или scala, затем xtend). Я предполагаю, что аналогичные рассуждения применимы к xtend - круговые зависимости между xtend и java, вероятно, в порядке, круговые зависимости между xtend и scala, возможно, нет. Конечно, такие циклические зависимости в любом случае являются плохим стилем.

Я бы спросил, почему вы хотите это сделать. Xtend предназначен для того, чтобы предоставить вам самые важные преимущества scala без сложности полного языка. Но если вы все равно собираетесь учиться и ваш проект зависит от scala, я не вижу, какую пользу вы получите от написания части его в xtend.

person lmm    schedule 08.02.2015
comment
Я ожидаю, что это способ обучения: написать на Scala или Xtend только некоторые классы, оставив большую часть проекта на обычной Java. - person Suzan Cioc; 08.02.2015
comment
Я действительно не рекомендую пытаться выучить и то, и другое одновременно; Scala — это сложный язык, который потребует от вас полного внимания. - person lmm; 08.02.2015