5916
Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Не понял, что ты пытался сказать, но в го модуль - это версионируемый набор пакетов и ничего более(ну почти)
Читать полностью…
чёт не помню такого
ну может просто не занимался херней не пробовал)
ну в гугле например вместо спринга https://github.com/google/guice это юзают
как раз через модули тоже
и норм
Ну и бонусом - очень легко поднять только нужную часть приложения для тестов. и работает это очень быстро, без рефлекшна и без магии.
Читать полностью…
Очень похоже. Модуль - это структура, пользовательский экземпляр - это поле структуры, инициализация модуля - это функция, получающая другие модули и возвращающая экземпляр модуля.
Если нужен lifecycle, например, в тесте поднять часть модулей, а потом опустить, или ленивая инициализация, то придется прикрутить монадку, но концепт такой же.
банально это (о переписывании пару десятков строк) последнее вообще о чём я буду думать когда буду переносить из одной базы в другую работающее приложение
Читать полностью…
Тут же явно кто-то есть из революта, как там у вас ребята?
Читать полностью…
While the improvements aren’t quite as substantial as with native executables, and the container image size is a bit larger due to the AOT cache file, the results are impressive given the minimal effort required:
A minimal REST application created with quarkus create app sees startup drop from 370 ms to 80 ms.
A large REST CRUD application with 9,000 classes goes from 3 seconds to 900 ms.
как человек у которого нет спринга на java-проекте (да и в целом фреймворков)
инициализация всего и вся в здоровенном мейне
выглядит страшно только первый месяц, потом привыкаешь и смотришь на спринг с презрением
rest-а на проекте нет
Ну я правда раб спринга и без особой необходимости не слезу.
Читать полностью…
Ничего не мешает писать на джаве легковесные приложения в стиле го, кроме инерции мышления.
Читать полностью…
Ну пока у тебя десяток-другой компонентов в приложении - разницы ты не увидишь, может оно даже понятным казаться будет. Как только из станет 3-4 десятка, а то и сотни, то этим вот ваши модули превратятся в малопонятную лапшу
Читать полностью…
Живем с DI, просто для DI не нужен ioc-контейнер неожиданно
Читать полностью…
Ну т.е. для меня главная фича модуля - это наличие у него интерфейса (типы, которые он предоставляет) и реализации (типы, которые он инстанциирует, но наружу не светит). Плюс явное дерево зависимостей модулей, когда модуль может инжектить классы только из модулей, от которых он зависит.
Читать полностью…
когда я в последний раз смотрел на Guice, модули там были чисто декоративные. т.е. ничего не мешало заинжектить любой класс в любой другой класс.
Читать полностью…
И в тестах сплошное удольствие обращаться к экземплярам. app.services.myCoolService.doSomething();
Читать полностью…
Чем лучше - DI фреймворк -это один большой котел, в который беспорядочно накиданы классы. модули позволяют формировать жесткую! видимую! структуру приложения.
Читать полностью…
через интерфейсы же не?
можно любой репо умпутуна посомтреть типо
https://github.com/umputun/feed-master/blob/master/app/proc/processor.go#L35
в структурки кладёшь интерфейсы и вуаля
подтыкаешь что тебе надо, какие угодно моки
Можно сделать лучше. И модульно, и с lifecycle, и с возможностью переопределять экземпляры на тестовые. DI фреймворки для этого не нужны.
Читать полностью…
https://quarkus.io/blog/quarkus-3-32-released/
вчера принесли
leyden
Я не гошник, такой же сениор спринг бут девелопер. Просто новую платформу решили писать на го - ну вай нот не выучить еще один язык. Плюс в компании огромная экспертиза по го.
Что касается твоего вопроса - у нас написаны что-то типа стартеров и коммон библиотек. Как раз для логов, хелсчеков, grpc и прочего.
По тестам ты пишешь такие же юнит и интеграционные. Моки генерятся по скрипту, в общем особых проблем нет. Любой сервис можно замокать и заинжектить.
У нас топят за TDD поэтому говнокод с точки зрения зависимостей и написать особо не удастся.
Плюс есть темплейт в гитхабе - репа создается на его основе и остается только нейминг задать.
О, а расскажи, как гошник. как там живут без DI (testability!) и что с микросервисной обвязкой - метрики-логи-трассировка и прочие НФТ?
Читать полностью…
Я вот щас ненадолго перелез с джавы на го, первые пару недель не понимаешь, как они вообще тут живут без DI и прочего. Через две недели начинаешь писать реальный микросервис на 3 метода и все это проходит.
Читать полностью…
Это одна из главных проблем современной джавы. Люди не верят, что можно писать код без орм, без фреймворков, без наслоений фреймворков, написанных 20 лет назад.
Читать полностью…