web_dev
@web_dev

Call/create Scala class from Java in SpringBoot Project?

Здравствуйте,

создается небольшое веб-приложение на основе SpringBoot.
Но некоторые функции будут делаться другим человеком, и он бы хотел все делать на Scala+Spark и так д..
Scala-Функционалитет закрыт, тоисть в Scala классах будет только вычисление, и со стороны Java нужно будет только создать объект, вызвать функцию, получить расчет в форме String или POJO.

В принципе, у меня сейчас есть работающее приложение на SpringBoot, которое полностью вплоть до старта на Scala.
Сейчас стал вопрос разработки безопасности и так д.. И понимаю, что придется искать другие библиотеки, в любом случае будут "танцы с бубнами", так как со скалой, знаком очень плохо.

Посему решил все делать на привычной Java а все нужные вычисления на Scala.
В итоге появилось несколько общих вопросов..

1. С какими проблемами я могу столкнуться если буду например из Java создавать Scala-object? ScalaObject sc = new ScalaObject(str); Например как обрабатывать Exceptions и так д..
2. У меня gradle проект, нужно ли в нем разделять классы на src/main/java и src/main/scala или можно все в один, только для java - .java а для scala - .scala
3. Может кто уже делал похожие проекты, буду благодарен за подсказки ссылки и так д..

Спасибо!
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 3
zolt85
@zolt85
Программист
Scala + Spark это конечно хорошо, но насколько мне известно (слушал доклад Евгения Борисова на прошлогоднем JPoint) нет никаких проблем работать со Spark из Java. И еще одно не стыкуется в голове, а именно "небольшое web приложение" и использование Scala и Spark для расчетов. Это я к тому, что может не стоит так переусложнять задачу на старте? Соберите требования, подумайте над архитектурой. Можно окунуться в "прекрасный" мир микросервисов, тогда часть вычислительная может быть и на Scala, и на Python, и на JavaScript.

Лично я не стал бы заморачиваться, и писал бы все на Java. Ну если очень хочется функциональщины, можно присмотреться к Kotlin.
Ответ написан
web_dev
@web_dev Автор вопроса
Евгений В начале хочу поблагодарить за хороший и развернутй ответ.

Scala + Spark это конечно хорошо, но насколько мне известно (слушал доклад Евгения Борисова на прошлогоднем JPoint) нет никаких проблем работать со Spark из Java.
- я тоже этот доклад слушал, но я думаю Вы согласитесь, что в Java реализация не на 100% такая же как и Scala. Для Spark Scala - основной язык, остальные они стараются поддерживать на надлежащем уровне. Ну и второй пункт, та часть - для рассчетов будет делаться другим человеком и он хочет подучить именно Scala и в Java не очень.

И еще одно не стыкуется в голове, а именно "небольшое web приложение" и использование Scala и Spark для расчетов. Это я к тому, что может не стоит так переусложнять задачу на старте?
- вот именно, нужно стартануть, чтоб каждый хоть чуток занимался своим, а в процессе можно и поменять что-то... Главное продумать минимум. ))

Соберите требования, подумайте над архитектурой. Можно окунуться в "прекрасный" мир микросервисов, тогда часть вычислительная может быть и на Scala, и на Python, и на JavaScript.
- Требования собраны, как я и описывал проблему, - человек хочет скала, а я не могу весь веб проект сходу и другие библиотеки и скалу. Обдумывание архитектуры в процессе. Часть обдумана, вотт, интересуюсь здесь, чтоб получше понять. С этим "прекрасным" миром знаком, но если уж делать все по "фэншую", то для коммуникации нужно будет дополнительно JMS и так д, не продолжаю список, так как понимаю сколько там работы.. Если для двух человек загрузнуть на некоторое время с этим, то функционала не дождемся )))
И да, Писал, что человек хочет Scala, проект носит немного и обученческий характер. Сейчас подбирается не язык под проблематику, а желание поизучать то что хочется и возможно с полезностью..
Ответ написан
Комментировать
denisftw
@denisftw
В Scala абсолютно все заточено под SBT и его инкрементальную компиляцию. Если вы используете что-то другое (Maven, Gradle), то будьте готовы к тому, что время компиляции станет проблемой.

Второй момент, мало кто использует Spring (Spring Boot в том числе) из Scala - не потому что это невозможно, а потому что это глупо. В Scala-экосистеме есть решения, которые и быстрее и надежнее, и лучше вписываются в язык и т.д. Соответственно, результат изучения нового языка тоже будет не очень. Кстати, по поводу того, как разработкичи Spark'a используют Scala вот почитайте:

https://www.reddit.com/r/scala/comments/2ze443/a_g...

Лучше было бы взять SBT, Play, MacWire (и т.д.) - меньше проблем и гораздо больше пользы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы