Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
 Тяпничный список инжекторных движков  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Тяпничный список инжекторных движков
Spring
88,9%
 (24)
Google Guice
25,9%
 (7)
Dagger
3,7%
 (1)
Quarkus
14,8%
 (4)
Голосование открыто только для зарегистрированных пользователей.
Проголосовало: 27  

Привет друзья. С пятницей всех.

Проголосуйте какие двигатели DI вы использовали в своих проектах и планируете использовать в будущем.
Есть опция мульти-выбора. Прошу прощения если я что-то забыл или не упомянул ваш фрейморк.

Дополните текстом.
26 мар 21, 17:10    [22300475]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
забыл ник
Member

Откуда:
Сообщений: 3471
mayton
Привет друзья. С пятницей всех.

Проголосуйте какие двигатели DI вы использовали в своих проектах и планируете использовать в будущем.
Есть опция мульти-выбора. Прошу прощения если я что-то забыл или не упомянул ваш фрейморк.

Дополните текстом.

С переходом на скалу перестал использовать какие-либо DI в принципе, чему безмерно рад. Хотя там тоже есть один неплохой - macwire, можно юзать вместе с play, когда приложение написано в стиле better-java. Для ФП DI фактически не нужен
26 мар 21, 17:18    [22300481]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
SpringMan
Member

Откуда:
Сообщений: 231
забыл ник

С переходом на скалу перестал использовать какие-либо DI в принципе, чему безмерно рад.

А вот я со спарком страдаю. Когда куча логики и надо прокидывать конфиги, пулы к базам, хдфс-у, кафкам - так начинаешь скучать по старому-доброму @Autowired-у (
26 мар 21, 17:27    [22300486]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
забыл ник
Member

Откуда:
Сообщений: 3471
SpringMan
забыл ник

С переходом на скалу перестал использовать какие-либо DI в принципе, чему безмерно рад.

А вот я со спарком страдаю. Когда куча логики и надо прокидывать конфиги, пулы к базам, хдфс-у, кафкам - так начинаешь скучать по старому-доброму @Autowired-у (

Ну это ваша личная какая-то проблема.
1) dev.conf,prod.conf,uat.conf
2) Config.load($ENV)
Когда нужны именно разные имплементации подсистем, то typeclass+ final tagless, вообще никаких проблем
26 мар 21, 17:31    [22300490]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
В настоящий момент будем использовать Dagger для амазонских сервисов.

О кваркусе - наслышан но ни разу не использовал. Интересно посмотреть как они обеспечивают
быстрый старт. Возможно за счет спец плагинов компилляции в натив.
26 мар 21, 17:42    [22300496]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
kolchanov
Member

Откуда: Питер
Сообщений: 202
Даже без native компиляции стартует значительно быстрее spring.
ИМХО просто потому, что в отлиции от spring, injection происходит compile time, а не runtime.
27 мар 21, 10:27    [22300691]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
kolchanov
Даже без native компиляции стартует значительно быстрее spring.
ИМХО просто потому, что в отлиции от spring, injection происходит compile time, а не runtime.


а как это? я вот в спринге пишу в одном модуле что-то в духе:

@Autowired(required=false)
private List<Service> services;

в надежде, что в другом модуле будет реализация, а тут как?
28 мар 21, 08:35    [22300990]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
andreykaT
Member

Откуда: =||==
Сообщений: 3402
mayton
Привет друзья. С пятницей всех.

Проголосуйте какие двигатели DI вы использовали в своих проектах и планируете использовать в будущем.
Есть опция мульти-выбора. Прошу прощения если я что-то забыл или не упомянул ваш фрейморк.

Дополните текстом.

кваркус это ж жее древнючий.
28 мар 21, 11:28    [22301021]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
andreykaT
Member

Откуда: =||==
Сообщений: 3402
mayton
В настоящий момент будем использовать Dagger для амазонских сервисов.

О кваркусе - наслышан но ни разу не использовал. Интересно посмотреть как они обеспечивают
быстрый старт. Возможно за счет спец плагинов компилляции в натив.

я написал сервис из нескольких модулей (штук 6). оно стартует секунд 30-40. думаю на спринге было бы ровно тоже самое. всё что он делает - гребет с кафки данные складывает в эластик и по апишке юзерам данные из эластика выдает. и стартует оно не особо быстро. срезал всё что можно. стало быстрее. но быстрее чем выше не получилось.

у кварка просто удобные плюшки которые сразу делают модные докеримаджи (которые без бубнов один хер работают только ровно как в мануале написано. шаг влево-вправо - ищи бубен) которые там даже сразу куда то пушатся. а так тот же спринг. пока еще худенький и с детскими багами.
28 мар 21, 11:32    [22301022]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
andreykaT
Member

Откуда: =||==
Сообщений: 3402
гуис емнип в плее юзается. проголосовал за кварк и за гуис. :)
28 мар 21, 11:32    [22301023]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
andreykaT
mayton
Привет друзья. С пятницей всех.

Проголосуйте какие двигатели DI вы использовали в своих проектах и планируете использовать в будущем.
Есть опция мульти-выбора. Прошу прощения если я что-то забыл или не упомянул ваш фрейморк.

Дополните текстом.

кваркус это ж жее древнючий.

Какие ваши доказательства?

(с) Черный Трудяга Шварценбрухер.
28 мар 21, 12:45    [22301035]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
kolchanov
Member

Откуда: Питер
Сообщений: 202
>а как это? я вот в спринге пишу в одном модуле что-то в духе:
>в надежде, что в другом модуле будет реализация, а тут как?

https://quarkus.io/blog/quarkus-dependency-injection/
Все тоже самое, @Inject ищет compile time имплементацию.
29 мар 21, 12:26    [22301365]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
kolchanov
https://quarkus.io/blog/quarkus-dependency-injection/
Все тоже самое, @Inject ищет compile time имплементацию.
На вопрос "как" отвечают скорее не там, а в том месте, где рассказывают про AoT и GraalVM, однако в спринге тоже якобы все есть: https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/ и не нужно пользоваться убогим наследником CDI
29 мар 21, 14:35    [22301452]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Конечно на стороне Спринга ентерпрайзное превосходство.

Но наверное кваркус возник как попытка превзойти Спринг в части минимального футпринта
на микросервис по количеству классов и по размеру артифакта.
29 мар 21, 17:05    [22301553]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
mayton
Конечно на стороне Спринга ентерпрайзное превосходство.

Но наверное кваркус возник как попытка превзойти Спринг в части минимального футпринта
на микросервис по количеству классов и по размеру артифакта.


всем известно, что футпринт изменяется в деньгах. Можете расчеты привести, чтобы можно было увидеть как ограниченность технологии со всеми вытекающими (баги, проблемы с кадрами, проблемы с поддержкой) приносило бы ощутимую экономию? А то может ну ево нах эту жаву и пора все на C писать.
29 мар 21, 17:29    [22301576]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Я не могу. Да и мне пока кваркус не нужен. Но возможно кто-то ковырял его для server-less архитектур.
29 мар 21, 17:45    [22301589]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
mayton
Я не могу. Да и мне пока кваркус не нужен. Но возможно кто-то ковырял его для server-less архитектур.


т.е. преимущество непонятно в чем, но оно точно есть Если посмотреть кто этот кваркус делает, то выяснится, что это те же самые бракоделы из редхата разработчики jboss, которые умеют делать так, что приложение, прекрасно работаютщее в коте и сфере в их поделку даже не деплоится.
29 мар 21, 19:04    [22301637]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Я не защищаю кваркус, если что.
29 мар 21, 20:14    [22301673]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
Kachalov
Member

Откуда: Москва
Сообщений: 5817
mayton
какие двигатели DI вы использовали в своих проектах и планируете использовать в будущем

Weld
29 мар 21, 21:26    [22301696]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Spring boot рулит!
нахер ваши конфиги и xml портянки

разрабам и так хватает жести с докером и кубернетис ,всеми этими облачными деплоями и тд
29 мар 21, 21:39    [22301702]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
kolchanov
Member

Откуда: Питер
Сообщений: 202
>всем известно, что футпринт изменяется в деньгах. Можете расчеты привести, чтобы можно было увидеть как ограниченность технологии со всеми вытекающими (баги, проблемы с кадрами, проблемы с поддержкой) приносило бы ощутимую экономию? А то может ну ево нах эту жаву и пора все на C писать.

Для нас в клаудных проектах критическим фактороми стали именно время старта, потребление CPU во время старта и память на поду.
Настолько критическим, что часть сервисов переписали на go, часть на с, там где это невохможно - quarkus.
Spring boot стал de-facto legacy.

Для in-house разработки, может это и не было проблемой, но приходится конскурировать с теми, у кого "микросервис" не стартует пару минут и не потребляет 250 Mb памяти на поду только на фреймворк. Т.е. это вопрос продаж а не cost cutting.

Баги есть у всех, и spring boot в новых версиях тоже приносил ошибки и обратную несовместимость.
Поддерживать все равно прходится самим.

проблемы с кадрами - эксперимент показал, что за две недели разработчик осваивает quarkus c сохранением уровня.
мидл отается мидлом, сеньер - сеньером.
30 мар 21, 01:00    [22301774]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
asv79
разрабам и так хватает жести с докером и кубернетис ,всеми этими облачными деплоями и тд

Ты как всегда... Принёс в топик свой гнев и горе.

Что у тебя там за жесть с докером?
30 мар 21, 01:20    [22301778]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
kolchanov,

а не могли бы вы как-то ширше чтоли тему раскрыть? Я ранее ссылку на spring aot приводил, там пишут что без aot характерное время старта 1500ms, а с aot 100ms, вот другая: https://spring.io/blog/2018/12/12/how-fast-is-spring - там речь идет про 1-2 секунды, вы же утверждаете что на спринге получаются минуты, с моей точки зрения минуты может занимать БД запустить или такой добротный монолит - у меня в текущем проекте сборка монолита и запуск тысячи интеграционных тестов с подъемом 2 БД, 10 спринговых контекстов и прогоном миграций liquibase занимает 5 минут (мавен показывает 4:46 на сборку с интеграционными тестами и 54s просто на сборку), поэтому здесь я склонен верить тому, что пишут в интернетах про старт в пару секунд, нежели вашим минутам. Может у вас там где-то явный косяк в инфраструктуре/архитектуре при котором вы видите что на кваркусе можно получить какое-то преимущество, а на буте - нет (ну там сеньоры на самом деле не сеньоры, DevOps - совсем не DevOps, и все в таком духе)
30 мар 21, 05:42    [22301786]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
mayton
asv79
разрабам и так хватает жести с докером и кубернетис ,всеми этими облачными деплоями и тд

Ты как всегда... Принёс в топик свой гнев и горе.

Что у тебя там за жесть с докером?


да там все понятно что за треш и угар у него, вот с моей точки зрения есть некий bottom line, который говорит о том, нормально проект организован или нет:
- удаляем ~/.m2 или ~/.gradle
- читаем README.md из проекта, выполняем, что там написано (при этом команды mvn или gradle(w) запускать нельзя)
- открываем IDE
- находим тест (лучше интеграционный) и запускаем его из IDE (без компиляций и остальных прелюдий, кроме описанных в README.md)

если тест успешно завершился, то проект живой, нет - говно.

Стасу же наверняка еще в проект понапихали докеров без возможности отладки и без информации о версиях того, что там крутится.
30 мар 21, 06:18    [22301789]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный список инжекторных движков  [new]
kolchanov
Member

Откуда: Питер
Сообщений: 202
>Может у вас там где-то явный косяк в инфраструктуре/архитектуре

Проблема в самом слабом звене - людях.
Spring boot очень мощный и вариабельный, и позволяет декларативно для run-time стадии описыывать кучу вещей.
Я 100% уверен, что хороший программист, который понимает что стоит за каждой аннотацией, и как она влияет на производительность сможет написать на spring boot сервис, который будет стартовать приемлемо быстро.

Но в "кровавом enterprise", где тысяи разработчиков всегда приходит ОН, разработчик уровня:

>разрабам и так хватает жести с докером и кубернетис ,всеми этими облачными деплоями и тд

Я видел реальный spring-boot код (не могу его показать по юридическим причинам), в котором только в одном Configuraton классе аннотоации занимали целый экран.
- Никто не понимает как это работает
- Никто не может быстро туда внести изменения

Есть известная фраза - хороший фреймворк позволяет легко делать правильные вещи, и тяжело неправильные.
Когда я только узнал о существовании spring (не помню, был это уже 1.0 или нет), он позиционировался как non-intrusive фреймворк. В коде приложения не должно быть упомнинания spring, только внешний DI. И это было очень круто.

Сейчас spring-boot из-за большого количества фич и возможностей просто провоцирует писать приложения, которые стартуют 1-2 минуты, и бороться с этим очень сложно.
Проще выбрать другой фреймворк, в котором тяжелее писать неправильные вещи, или даже другой язык, где не может быть spring из-за особенностей языка.

Наш опыт на наших реальных микросервисах, а не на "сферическом коне в вакууме", показывает улучшение время старта в 10-30 раз на quarkus.
На другой исходной кодовой базе с другими программистами эта пропорция будет другой.
30 мар 21, 08:44    [22301807]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
Все форумы / Java Ответить