Комментарии 29
Если вдруг приходиться отладкой заниматься — с ломбоком начинает напоминать ад (хотя может сейчас уже плагины стали получше). Не совсем очевидно, что там он за код нагенерировал (прежде всего equals/hashcode).
Т.е если говорить о синтаксическом сахаре лет 10 назад — то ломбок был вполне себе ответом, но сейчас, когда есть лучшие решения… зачем делать такой шаг назад?
я не думаю, что бизнес согласится выкинуть весь код написанный сотней разработчиков и начать все с нуля в Котлине. причем я то аргументов не смогу привести зачем надо тратить на это деньги. Лучше уж тогда все на Rust переписать :)
И про Rust вы наверно пошутили…
И там, и там можно писать новый код «в новом стиле» (без шаблонных геттеров и прочего), не трогая старый.
И без поддержки в IDE c ним никак.
Kotlin точно так же всовывается в любой проект на любой стадии без проблем.
Подозреваю, что с котлином все точно также, плюс-минус детали.
А каких фишек вам не хватает?
Все новые фичи рантайма (например, сжатые строки и G1) не зависят от языка. А в языке Java пока не появилось ничего нового, чего могло бы не хватать тем, кто перешёл на Kotlin.
openjdk.java.net/jeps/280
bugs.openjdk.java.net/browse/JDK-8175883
Тут даже вопрос не в конкретных поинтах, а в том, что при развитии jdk kotlin не будет подхватывать оптимизации и улучшения.
Казалось бы, делает жизнь проще, столько работы за собой скрывают. Но вот приходишь в какой-нибудь типовой проект с Lombok, Spring, Hibernate и что-нибудь ещё. Весь код просто увешен как ёлка с ног до головы аннотациями.
А молодые неокрепшие умы восхищаются, для них кругом магия, понять которую они не спешат. Зачем? Поставь аннотацию, всё сразу заработает. Не работает? Не хватает какой-то аннотации.
А мне всё больше кажется, что есть в этом что-то костыльное. Повышается ментальная нагрузка — глядя на аннотацию, надо вспоминать, что она добавляет или какую аннотацию ещё надо добавить. Как будто ключевых слов в языке прибавилось раза в два. Аннотации не нарушают принцип «явное лучше неявного»?
К Lombok, наверно, тут меньше всего претензий — он порождает довольно простой код, но тоже вносит свою лепту в общую копилку. Хотя можно же просто жмакнуть пару клавиш в IDEA для генерации геттеров/сеттеров и проч.
Всё чаще начинает казаться, что уж лучше я руками.
Всё чаще начинает казаться, что уж лучше я руками.
Полностью согласен. Меня в этом вопросе вообще далеко занесло: в своё время отказался от spring-boot (условно раз и навсегда), так как там есть ConditionalOnClass и ему подобные механизмы, в результате которых анализ нестандартных проблем и реализация нестандартного функционала ох как сложно даётся. Конкретный пример — в версии 1.4 (или более ранней?) нельзя было НИКАК добраться до ObjectMapper из FasterXML (который из JAX-RS — не путать с MVC), чтобы немного его «поднастроить». На раскопки тогда ушло пол-дня или день. Ну не предусмотрели на тот момент «магической аннотации», а создаваемый ObjectMapper в контекст (ни в Spring Context, ни в атрибуты сервлетов/сессий/запросов) не клался. И всё — птица «обломинго» заставила заменить фреймворк.
К чему это я всё написал: сам подход «всё сделает магия» приводит к тому, что за нестандартным поведением приходится ходить либо очень далеко, либо вообще отказываться. И если разработчики фреймворка этот сценарий предусмотрели — то вы добавляете «вторую магическую аннотацию или файлик», а если нет — то никак. Это всё хорошо для pet-проектов и «ща я за 5 минут сделаю докер-образ с годным приложением из 3-х сущностей», а в сложных проектах (где таблиц хотя бы 100 и бизнес-атрибутов на некоторых их них столько же) — увы…
но «возвращает величие Java», «реализует новые функции языка» — явный перебор, эта тулза лишь синтаксический сахар
все «проблемы» которые решает тулза спокойно решаются через автогенерацию в idea, но без диких хаков и ужаса при дебаге
Lombok sucks a butt. Kotlin data classes are way better and don’t require a ghetto compiler extension.
пыль решили сдуть с книжных полок? Тогда надо сразу автору и про новые фишки в виде стримов и лямбд в Java 8 рассказать — с ними Java ещё величавее будет
Kotlin и data классы — это хорошо. Но, что если нужно генерировать кастомную функциональность. Тут альтернатив особо нет, если конечно все вручную не писать.
Вопрос о совместимости lombok с модулями (Jigsaw в Java начиная с 9).
У меня есть два модуля:
open module db {
requires lombok;
requires .....;
requires .....;
exports models;
exports services;
}
module taskManager{
requires db;
}
В модуле db используется lombok и все методы там работают (модуль сделан как maven-проект, зависимости и импорты прописаны).
Но при запуске методов из taskManager получаю такую ошибку:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe"....
Error occurred during initialization of boot layer
java.lang.module.FindException: Module lombok not found, required by db
В интернетах что-то ничего внятного не нашёл. Lombok вообще может работать с модулями? И где/как его прописать?
Lombok возвращает величие Java