Pull to refresh
27
0.1

User

Send message

Тынц для глубокого погружения в тему от корифея.

добиться реально «нативного» UX можно будет только на одной платформе — на других будет в лучшем случае чужеродный интерфейс

Было бы желание. Да, оно, конечно, не pure-java на самом нижнем уровне, но само приложение вполне себе java.

Тут, по-моему, больше срабатывает древнейшая армейская мудрость: "Ты не умничай, ты пальцем покажи.".

Вот. Более понятно написана. Некоторые даже советуют начинать DDD с неё, а уже потом к синей книжке Еванса переходить.

Как итог

На ровном месте получил кучу геморроя с необходимостью самостоятельного экранирования входящих строк и прочих прелестей борьбы с sql-инъекцией. А также невозможности оптимизации запросов планировщиком.

Нечто подобное в одном проекте реализовывал на freemarker. Но там препроцессинг на основе переданных параметров просто вырезал лишние куски запроса. Шаблон, грубо говоря, содержал запрос со всеми возможными параметрами, но если какой-то из них отсутствовал, то его подстановка в конечный запрос вырезалась.

Получалось примерно следующее.

select *
  from person p
  where 1 = 1
    <if test="name">and p.name = :name</if>
    <if test="age">and p.age > :age</if>

"1 = 1", конечно, не нужно, если имеются какие-либо обязательные условия, которые должны присутствовать в каждом запросе.

P.S. За корректность синтаксиса тэгов не ручаюсь :).

Просто переводчикам нужно план выполнять, а перевод хорошей качественной статьи долог и с ходу не делается. Зато можно взять рандомного индуса с его блогом и фигачить по 100500 переводов в наносекунду.

Код, написанный на Kotlin, намного компактнее по сравнению с Java — на 30–40 %.

Таким образом, в теории размер приложений может уменьшиться на треть.

ЛПП. Уменьшиться может размер исходных кодов, но никак не приложения. Байт-код-то будет +/- один и тот же.

Java позволяет разработчикам присваивать значение null любой переменной.

Опять неправда. Примитиву нельзя присвоить null.

Изменяемым (mutable) и неизменяемым (immutable) типами в Kotlin являются var и val

Это не типы, а способы объявления переменных и полей.

В числовых литералах разрешается использовать символы подчеркивания.

Это вообще фича java с версии 1.5, емнип.

Короче, сравнивается тёплое с мягким. Причём с упором на разработку мобильных приложений.

Но какая же у них реализация? В JLS она не приведена, и в исходниках JDK ее тоже не найти.

Нужно только захотеть и можно отыскать эти методы.

А никак, по крайней мере в том виде, в котором показано в статье. Записи на роль JPA-сущностей не подходят.

В 99% soft-delete не нужен. От него геморроя больше, чем профита.

Хочется иметь возможность восстановить удалённые записи? Envers в помощь. Да, придётся сделать дополнительные приседания, но это хоть как-то управляемо и настраиваемо.

Можно, но это путь ко всевозможным NoClassDefFoundError, NoSuchFieldError, NoSuchMethodError и прочим LinkageError-ам.

Тогда уж 0x100й, а не 100й.

Интересно, а с какой целью сделан опрос? И почему нет варианта "Напишу в комментариях"? Я, может, хочу получать "стотыщмильёнов", а почему бы и нет?

А если для отступов используется не пробел, а символ табуляции? Сколько пробельных символов будет в результирующей строке? И там будут пробелы или знаки табуляции?

На этот и другие вопросы можно найти ответы в спецификаци языка.

Вкратце, не стоит отождествлять пробел и пробельный символ.

Могу предположить, что дело в том, что эти самые ограничения де-факто установлены повсеместно? В том числе, и чтобы снизить количество ДТП.

Написано же,

Метод, предоставленный в initMethod, должен быть void и не иметь аргументов. Этот метод может быть даже private.

initMethod - это метод создаваемого бина. Де-факто, то же самое, что и @PostConstruct, только через механизмы spring, а не стандартные java-овые.

ЕМНИП Sun довольно справедливо судилась с Microsoft, т.к. те, называя свою виртуальную машину java, пихали в неё кучу windows-only штук, нарушая лицензионное соглашение.

Не может. Статический метод не наследуется, т.к. привязан к конкретному классу. В классе-наследнике можно определить статический метод с такой же сигнатурой, но этот метод не будет иметь ничего общего с предком.

Собственно, именно поэтому вызов статического метода на экземпляре объекта вместо класса считается говнокодом и должно быть заменено на вызов через имя класса.

не включённых ни в один его интерфейс

Чтобы такое работало в load-time, достаточно просто включить создание прокси через cglib, а не через стандартный явовский Proxy.

@EnableAspectJAutoProxy(proxyTargetClass = true)

Information

Rating
3,225-th
Location
Омск, Омская обл., Россия
Registered
Activity