|
|
|
Call/create Scala class from Java in SpringBoot Project?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, создается небольшое веб-приложение на основе 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. Может кто уже делал похожие проекты, буду благодарен за подсказки ссылки и так д.. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 00:13 |
|
||
|
Call/create Scala class from Java in SpringBoot Project?
|
|||
|---|---|---|---|
|
#18+
_webdev_ 1. С какими проблемами я могу столкнуться если буду например из Java создавать Scala-object? ScalaObject sc = new ScalaObject(str); Например как обрабатывать Exceptions и так д.. Scala классы это те же JVM классы, если вам надо грубо говоря вызвать какой-то метод класса и вернуть обычный POJO, то никаких проблем не будет. Вам надо просто вынести API взаимодействия в отдельный jar, и описать там все интерфейсы и POJO без scala магии, вроде implicit. В проект java добавить зависимость на этот jar и спокойно работать. Насчет эксепшенов - Код: java 1. 2. 3. 4. 5. 6. 7. В таком случае они будут видны для java кода. _webdev_2. У меня gradle проект, нужно ли в нем разделять классы на src/main/java и src/main/scala или можно все в один, только для java - .java а для scala - .scala Наверняка можно, я правда работаю с мавеном там все заводится с полтыка. Gradle как-то не зашел мне _webdev_3. Может кто уже делал похожие проекты, буду благодарен за подсказки ссылки и так д.. Делали конечно, в целом никаких проблем нет, если вседелать по уму и выносить взаимодействие в отдельный jar,не использующий магию scala Хорошо описано в книге Scala in Depth. Но она довольно тяжелая для новичков, хотя раздел по java интеграции вы должны осилить. Далее, почти в каждой книге по Scala есть раздел по интеграции с Java, везде можно почерпнуть как это делается. Например Programming Scala 3rd Edition, Programming in Scala(это разные книги), Scala for Java developers, Scala cookbook, Atomic scala, не говоря о куче статей в инете. В общем очень советую Scala in Depth, 10 глава. Там еще хорошо описаны некоторые проблемы с боксингом\анбоксингом и визибилити проблемы(private protected static и тд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 01:42 |
|
||
|
Call/create Scala class from Java in SpringBoot Project?
|
|||
|---|---|---|---|
|
#18+
В начале хочу поблагодарить за хороший и развернутй ответ. забыл никScala классы это те же JVM классы, если вам надо грубо говоря вызвать какой-то метод класса и вернуть обычный POJO, то никаких проблем не будет. - ' - Да, это я понимаю. забыл никВам надо просто вынести API взаимодействия в отдельный jar, и описать там все интерфейсы и POJO без scala магии, вроде implicit. В проект java добавить зависимость на этот jar и спокойно работать. - Если я вас верно понимаю, ты вы предлагаете создать сл структуру? Еще 2 проекта. Один легковесный(Api) с интерфейсами и POJO другой уже с непосредственной имплементацией и в веб-проекте добавить 2 jar нужно же не только имплементация, но и реализация. забыл никВ таком случае они будут видны для java кода. - понял, думаю в процессе уже нагуглю. забыл никНаверняка можно, я правда работаю с мавеном там все заводится с полтыка. Gradle как-то не зашел мне - я тоже без проблем дружу с maven, на работе используется. Просто хочется немножко и gradle понимать, поэтому и так. Та в gradle не особо и сложнее )) забыл никДелали конечно, в целом никаких проблем нет, если вседелать по уму и выносить взаимодействие в отдельный - был бы благодарен за ссылку, если есть на открытый репозиторий. забыл никjar,не использующий магию scala - Что Вы имеете в виду? забыл никХорошо описано в книге Scala in Depth. Но она довольно тяжелая для новичков, хотя раздел по java интеграции вы должны осилить. - Спасибо. Я уже читал статьи некоторые и имею небольшое поняте в функц программировании. Обязательно прочту этот раздел. забыл никВ общем очень советую Scala in Depth, 10 глава. Там еще хорошо описаны некоторые проблемы с боксингом\анбоксингом и визибилити проблемы(private protected static и тд) - понял, будемс читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 10:33 |
|
||
|
Call/create Scala class from Java in SpringBoot Project?
|
|||
|---|---|---|---|
|
#18+
_webdev_Если я вас верно понимаю, ты вы предлагаете создать сл структуру? Еще 2 проекта. Один легковесный(Api) с интерфейсами и POJO другой уже с непосредственной имплементацией и в веб-проекте добавить 2 jar нужно же не только имплементация, но и реализация. Ну примерно так, да. Но это уже при деплое непосредственно на сервер. Я же говорил скорее о том как разбить проект во время разработки. Я бы делал так - 3 проекта 1) java-проект, который непосредственно зависит от scala-java-integration(интерфейсы и POJO), но не зависит от Scala. 2) scala-java-integration - просто jar 3) scala проект, тоже с зависимостью от scala-java-integration. Когда же будете деплоить, то да - в варку надо будет добавить еще и проект scala. Смысл в том, чтобы при разработке вы не видели scala проект, только интерфейсы _webdev_ был бы благодарен за ссылку, если есть на открытый репозиторий. Этим не помогу. _webdev_забыл никjar,не использующий магию scala - Что Вы имеете в виду? Ровно то, что и сказал - точка соприкосновения должен быть jar в котором тупо интерфейсы и доменные объекты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:22 |
|
||
|
Call/create Scala class from Java in SpringBoot Project?
|
|||
|---|---|---|---|
|
#18+
забыл никНу примерно так, да. Но это уже при деплое непосредственно на сервер. Я же говорил скорее о том как разбить проект во время разработки. Я бы делал так - 3 проекта 1) java-проект, который непосредственно зависит от scala-java-integration(интерфейсы и POJO), но не зависит от Scala. 2) scala-java-integration - просто jar 3) scala проект, тоже с зависимостью от scala-java-integration. Когда же будете деплоить, то да - в варку надо будет добавить еще и проект scala. Смысл в том, чтобы при разработке вы не видели scala проект, только интерфейсы - Да, мы так и делаем в некоторых проектах. ) - Здравствуй мултимодульный проект. Пасиб. забыл никРовно то, что и сказал - точка соприкосновения должен быть jar в котором тупо интерфейсы и доменные объекты - ааа, понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:32 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39398997&tid=2123176]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 416ms |

| 0 / 0 |
