Как стать автором
Обновить
474.59

Java Digest #9

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.8K

Всем привет! ? ? ? Мы Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки — и решили делиться этим не только с коллегами, но и со всем сообществом.

Главные новости

Build 33 ранней версии JDK 22 был доступен на прошлой неделе и содержит обновления от Build 32 с исправлениями различных проблем. Для JDK 23 и JDK 22 разработчиков призывают сообщать об ошибках через базу данных ошибок Java Bug Database.

Уязвимость Spring Framework. Команда Spring Framework заявила, что версии 6.1.3 и 6.0.16, выпущенные 11 января 2024 года, исправляют уязвимость CVE-2024-22233, известную как уязвимость Spring Framework Server Web DoS. Она позволяет злоумышленнику отправить специально созданный HTTP-запрос, который может вызвать состояние отказа в обслуживании, если приложение использует Spring MVC и в пути поиска классов присутствуют версии Spring Security 6.1.6+ или 6.2.1+.

Micronaut Foundation выпустила версию 4.2.4 фреймворка Micronaut. Новая версия содержит Micronaut Core 4.2.4, исправление ошибок, обновление зависимостей и модулей: Micronaut AWS, Micronaut Flyway, Micronaut JAX-RS, Micronaut JMS, Micronaut MicroStream, Micronaut MQTT и Micronaut Servlet. 

Quality Outreach Heads-up - Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal in a Future Release. Текст о намерении удалить методы доступа к памяти в классе sun.misc.Unsafe в будущих версиях Java. Это связано с усиленным фокусом на обеспечении целостности платформы Java. Deprecate планируется сделать в драфтовом JEP.

Релиз Hibernate Reactive 2.2.2.Final несет обновление зависимостей на Hibernate ORM 6.4.2.Final, удаление неиспользуемого кода и новые аннотации @EnableFor и @DisabledFor для включения и отключения тестов для типов баз данных. Второй альфа-релиз Hibernate Search 7.1.0 предлагает совместимость с Hibernate ORM 6.4.2.Final, Lucene 9.9.1 и Elasticsearch 8.12, интеграцию возможностей векторного поиска Elasticsearch/OpenSearch и получение информации о возможностях каждого поля при анализе метамодели. 

JEP 455: Primitive Types in Patterns, instanceof, and switch направлен в JDK 23.

JEP добавляет pattern-matching с примитивными типами в Patterns, instanceof и switch. Эта функция в предварительной версии направлена в JDK 23.

Максим Шафиров уходит с поста генерального директора JetBrains. На его место придет Кирилл Скрыган, который возглавлял отдел IntelliJ, также за время работы в компании он руководил проектами Code With Me и Rider.

Интересные видео

Кирилл Данилов — СБП: как обеспечиваем «быстро и надежно» и для чего разогнали отчеты в 5000 раз. Доклад в большей степени про архитектуру СБП, чем про Java. Он дает хорошее представление о том, как может быть устроена высоконагруженная система с требованиями по доступности 99,99%, какие решения нужно принимать при проектировании, какие могут возникнуть трудности и как их решать.

Java's Plans for 2024 - Inside Java Newscast #61. В прошлом выпуске было видео о том, что добавили в Java за 2023 год. А это — о том, что может появиться в 2024. Николай говорит о проектах Babylon, Loom, Leyden, Valhalla, Amber, Panama и Lilliput. Какие фичи ожидаются уже в этом году, а каких придется ждать дольше.

The Panama Effect - Inside Java Podcast 32. Foreign Function & Memory API будет завершен в JDK 22 и поможет интегрировать нативный код в программу на Java. С помощью нового API можно эффективно вызывать код вне JVM, безопасно получать доступ к памяти, не управляемой JVM, вызывать нативные библиотеки и обрабатывать нативные данные без хрупкости и опасности JNI. Гость Анны в этом эпизоде — Jorn Vernee, один из основных разработчиков и поддерживающих Foreign Function & Memory API.

Полезные статьи

Tutorial: JWebserver - Launch the Java Simple Web Server. JwebServer — инструмент JDK, который предоставляет минимальный HTTP-сервер. Этот сервер можно использовать для создания прототипов, тестирования и отладки. Инструмент работает только со статическими файлами и просматривает одну иерархию каталогов по протоколу HTTP/1.1, динамический контент и другие версии HTTP не поддерживаются.

Writing a Java Inspection for IntelliJ IDEA Using AI Assistant. ИИ-ассистент IntelliJ IDEA пишет инспекции Java кода для самой IntelliJ IDEA. Тагир Валеев подробно описывает процесс реализации простой инспекции (int)($VAR$ ^ $VAR$ <<< 32) => Long.hashCode($VAR$) с помощью генерации кода ИИ-ассистентом и приходит к выводу, что пока ИИ не в состоянии сгенерировать готовый для продакшена код. Например, ИИ не смутило, что в Java нет оператора <<<, это просто опечатка. Хотя такой ассистент не напишет для вас код, он точно позволит сэкономить время при его написании.

(Semantic) Versioning your Java libraries. Семантическая схема версионирования Java-библиотек давно стала стандартом. Она простая и интуитивно понятная. Но многие могли столкнуться с тем, что патч-версия якобы содержит обратно несовместимые изменения. Автор написал maven-плагин, который автоматически проверяет внесенные изменения и предлагает, какую часть номера версии нужно апдейтнуть. 

Project Loom. Не только виртуальные потоки. Интересная заметка о некоторых технических деталях виртуальных потоков и вариантах использования их внутренних API. 

Создание и использование BOM в Gradle. В простой и понятной форме наш постоянный контрибьютор @IvanVakhrushev рассказал, что такое BOM и зачем он нужен. Приводится пример того, как создать ВОМ в Gradle, а еще — как разрешать конфликты в версиях зависимостей.

Project Valhalla: эпичный квест Java за перфомансом. Небольшая, но очень занимательная статья о примитивных объектах из Project Valhalla, которые дают большую локальность памяти, а как следствие — и большую производительность. Рассказ подкреплен бенчмарками сортировки и подсчета суммы примитивов.

Как мы начали использовать виртуальные потоки Java 21 и на раз-два получили дедлок в TPC-C для PostgreSQL. Статья про опыт Яндекса при переходе на виртуальные потоки, рассказывающая о том, как плохо они работают вместе с synchronized. А также о том, что даже если вы уверены, что ваш код будет работать нормально, — подпортить жизнь может какой-то один synchronized, находящийся глубоко в сторонней библиотеке.

How to use the Java CountDownLatch. Маленькая статья от Vlad Mihalcea, которая может быть полезна новичкам. В этот раз автор рассказывает не про сохранность данных, а про синхронизацию потоков в Java с использованием CountDownLatch. 

Как загружать классы в Java 8 и Java 9+? Большой материал, полезный тем, кто хочет углубить познания в теме загрузки классов в Java. В статье рассматривается, как работала загрузка до Java 8 включительно, а затем рассказывается об изменениях, которые пришли в Java 9 с появлением модульности. 

Java ScopedValue — о scoped values, которые служат альтернативой thread local переменным в Project Loom. Рассматриваются и сравниваются их API, а также детали реализации.

Плагин для анализа планов PostgreSQL в IDE JetBrains и его разработка. Tensor, используемый для анализа планов postgresql-запросов, теперь можно подключить в качестве плагина для IDE от Jetbrains. Кроме этой новости в статье пошагово описана разработка плагина, что может быть интересно тем, кто хотел узнать больше об этой теме.

Любопытные подкасты

Javaswag — #55 — Дмитрий Тихомиров — J2CL и компиляция Java в Javascript, GWT и опенсорс в Редхат Type episode Kind page. Дмитрий рассказывает о своем опыте работы с J2CL, инструментом для компиляции Java-кода в Javascript. Кроме самого инструмента обсудили аналоги вроде Kotlin Multiplatform и кейсы применения таких инструментов. 

Джавовые события

Конференция FOSDEM 2024 прошла 3—4 февраля. На конфе был отдельный Java-трек, на котором обсуждали текущее состояние OpenJDK, проект Liliput , а еще шаги, которые нужны, чтобы сделать проект Loom лучше и стабильнее. Говорили о тонкостях работы с JFR — как в JDK, так и в GraalVM.

Спасибо @rudikone и @IvanVakhrushev за помощь в сборе материалов! Читателям спасибо, что мотивируете искать интересное и важное. Залетайте в комментарии с обратной связью, увидимся через месяц ?

Присылайте материалы, если встретили что-то интересное - опубликуем в следующем выпуске!

Теги:
Хабы:
Всего голосов 14: ↑14 и ↓0+14
Комментарии1

Публикации

Информация

Сайт
l.tbank.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия