Всем привет! ???? ???? ????

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

Льюис Кэрролл писал: «Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!» Надеемся, что поможем немного сберечь силы в этом марафоне всем читателям. Stay tuned! ???? 

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

С днем рождения, Java! ????????????

Мы очень рады в первом выпуске поздравить любимый язык! 23 мая Java исполнилось 28 лет. Язык представили в 1995 году на конференции SunWorld 1995. Желаем ему новых фич, роста комьюнити и долгих лет жизни ???? 

Spring Boot 3.1 — вышла первая минорная версия третьего Spring Boot, а вместе с ней обновились несколько проектов экосистемы Spring. Статья описывает изменения относительно версии 3.0 и объясняет, как мигрировать.

JEP 451: Prepare to Disallow the Dynamic Loading of Agents новый JEP, в котором предлагается выдавать предупреждения, когда агенты динамически загружаются в работающую JVM. Такие предупреждения нужны, чтобы подготовить пользователей к будущему выпуску, который по умолчанию запретит динамическую загрузку агентов. Инструменты удобства обслуживания, которые загружают агенты при запуске, не будут вызывать предупреждение ни в одном релизе.

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

Save 10—20% Memory With Compact Headers — Inside Java Newscast 48. Выпуск посвящен JEP 450: Compact Object Headers, он же проект «Лилипут». Цель проекта — уменьшить размер заголовков объекта на HotSpot в два раза — с 128 до 64 бит. Сначала идет рассказ о том, из чего состоит заголовок, а потом — целевая картина. Из приятного: в описании к видео есть короткая шпаргалка по теме.

Script Java Easily in 21 and Beyond — Inside Java Newscast #49. В этом выпуске речь пойдет про JEP 445, который призван помочь начинающим Java-программистам в обучении. 

JEP 445 предлагает писать stand-alone основные методы, которые не являются общедоступными, нестатическими и не имеют массива аргументов, поэтому самая короткая возможная программа Java просто void main().

KotlinConf 2023: Watch the Recordings пост про записи докладов с KotlinConf 2023. Есть ссылки на плейлисты на канале Kotlin by JetBrains.

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

Spring Transaction and Connection Management заметка Vlad Mihalcea о том, как работают транзакции в hibernate в контексте спринга и как использовать параметр readOnly.

Java Developer vs. ChatGPT Part I: Writing a Spring Boot Microservice — статья про относительно новый проект Spring for GraphQL, когда, используя всего один Spring Boot Starter, можно получить все необходимое для создания GraphQL API в своем приложении.

Analyzing Dependencies in IntelliJ IDEA емкий и полезный туториал о возможностях IntelliJ IDEA в плане анализа зависимостей. Рассказывается как о Dependency Analyzer, так и о Dependency Diagram с обзором самых основных полезных фич этих инструментов, как, например, поиск конкретной зависимости, фильтрация по скоупу, группировка и подсвечивание конфликтующих зависимостей.

EvilGPT против джуна: обманываем разработчика и сбегаем из дырявого приложения. Хотите представить себя злой версией ChatGPT и напичкать проект эксплоитами? Статья из серии вредных советов в этом поможет, а заодно покажет интересные уязвимости при написании Java-кода. Посмотрим, сможете ли вы сбежать от разработчика, посоветовав наибольшее количество уязвимого кода.

Пишем простой docker-compose.yml для контейнеризации приложения (React, Spring Boot, PostgreSQL, pgA…) руководство по написанию docker-compose.yml для контейнеризации простого приложения, которое включает фронтенд на React, бэкенд на Spring Boot, базу данных PostgreSQL и pgAdmin для просмотра данных в базе. Статья для начинающих разработчиков, которые хотят разобраться в назначении файла docker-compose.yml и начать использовать его в своих проектах.

Reduce Java Application Startup and Warmup Times with CRaC — статья о том, как сделать запуск Java-приложений быстрее c использованием CRaC — Coordinated Restore at Checkpoint. Сама фича уже интегрирована в новые версии Azul JDK 17, а суть ее в том, что операции контрольных точек и восстановления сохраняют состояние JVM и Java-приложения в образе. Приложение Java можно возобновить из образа в любом момент в будущем. Что интересно, с использованием CRaC, Spring Boot приложения стартуют даже быстрее, чем Micronaut и Quarkus с использованием CraC.

Quality Outreach Heads-up — JDK 21: Sequenced Collections Incompatibilities  в новый билд JDK21 интегрирован JEP 431: Sequenced Collections, в котором в иерархию Collection Framework добавляются новые интерфейсы. Небольшая статья рассказывает о таких трудностях совместимости, как проблемы с неймингом методов, конфликты переопределения ковариантов и сложности с type inference. Будет полезно тем, кто использует кастомные или самописные коллекции.

A Dissection of Java JDBC to PostgreSQL Connections — интересная статья о взаимодействии JDBC-драйвера с postgresql и затрагивающая такие темы, как:

  • разница между простым и расширенным протоколом postgresql и почему расширенный более эффективен и используется по дефолту;

  • разница между PreparedStatement в JDBC и базе данных и почему выполнение PreparedStatement в приложении не создает аналогичные сущности на стороне базы данных при первых исполнениях;

  • почему важно закрывать PreparedStatement.

Breaking down Barriers: Introducing JDK 21’s Approach to Beginner-Friendly Java Programming рассказывает о JEP-445, который призван упростить написание простых программ на Java тем, кто только начинает изучать программирование, без необходимости понимать фишки языка, нужные для больших приложений. А еще эти нововведения упрощают скриптинг на Java, позволяя писать небольшие скрипты намного быстрее.

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

Выпуск «Кому нужны многопоточные алгоритмы?» интересен возможностью вспомнить, а может, даже узнать что-то новое по теме многопоточных алгоритмов в простой и удобной форме. Выпуск рекомендован тем, кто хочет вкатиться в тему или освежить знания.

Занимательные квизы

Quiz yourself: When is a Java object still reachable? Сборщик мусора может собрать объект, только когда тот больше недоступен ни из одного живого треда. Вооружившись этим правилом, попробуйте решить квиз, но помните: все не так очевидно, как может показаться.

Quiz yourself: Crossing Java’s CyclicBarrier in a multithreaded environment. CyclicBarrier используется, чтобы установить определенную точку для фиксированного количества тредов, на которой они будут останавливаться до тех пор, пока все не дойдут до этой точки. В квизе реализовано как раз такое приведение, но, как обычно, есть нюанс.

Спасибо, что были с нами! Оставляйте обратную связь, вопросы и предложения в комментариях. Увидимся через месяц ????

Комментарии (3)


  1. Konishuk
    07.06.2023 09:34
    +3

    Спасибо)


  1. MaximIs
    07.06.2023 09:34
    +3

    Надеюсь будем наблюдать на постоянной основе:)


  1. SimSonic
    07.06.2023 09:34
    +3

    Спасибо, продолжайте =)