Скажімо, у вас є команда з 3-х, де є 2 учасникипрацює в Java, а інший член працює в Scala. Чи можна компілювати та запускати цю програму з компілятором Java / JVM або вам потрібно використовувати компілятор Scala / JVM?
Який найкращий спосіб запустити програму, яка має вихідний код Java і Scala? Будь-яка подальша розробка цієї теми буде корисною.
Відповіді:
2 для відповіді № 1Scala є мовою на основі JVM, тому компілятором Scala єздатні розуміти програми Java, але не навпаки. Отже, якщо програма має як файли Scala, так і Java, компіляція за допомогою компілятора Scala є єдиним варіантом.
Що стосується того, як ці програми повинні бути запущені, виможе збирати результат у JAR, який може бути запущений JVM "звичайним" способом. Якщо ви використовуєте sbt для вашої програми, він має зручний плагін "збірка", який виконує більшу частину роботи за вас.
1 для відповіді № 2
Більшість IDE дозволяють спільно використовувати код Java і Scala. Netbeans і IDEA мають це з коробки. Можливо і затемнення.
Якщо ви хочете працювати на Scala та Java коді окремо, скомпілюйте код Scala до JAR і попросіть хлопців Java використовувати його як зовнішню бібліотеку. Для JVM Scala і Java код не відрізняються.
На хлопцях Java знадобиться вищезгаданий jar plus scala-library.jar
у розповсюдженні Scala у Росії SCALA_HOME/lib
. Якщо код Scala використовує акторів і т.д., то йому знадобляться додаткові банки Scala, доступні у вищевказаній директорії.
Я роблю це протягом багатьох років. Java-хлопці іноді навіть не знають, що вони написані на Scala.
0 для відповіді № 3
Канонічним способом було б просто використовувати SBT замість Maven. Ви також можете продовжувати використовувати Maven: http://davidb.github.io/scala-maven-plugin/
Див. Також обговорення на http://www.scala-lang.org/old/node/5248.html
0 для відповіді № 4
Для компіляції коду Scala вам знадобиться Scalaкомпілятор, який буде виробляти файли класів, які є сумісними з JVM. Отже, відповідь на перший параграф питання - так. І так, ви можете запустити скомпільований код Scala в JVM, але, оскільки він використовує бібліотеку Scala, вам потрібно надати його в класі.