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

В этом выпуске обсуждаем последние обновления в экосистеме Java и популярных инструментах для разработчиков — от уменьшения размера хедеров объектов и новых API для файлов классов до новинок в IntelliJ IDEA. Делимся полезными статьями и видео об ускорении сборок, работе с JPA и Elasticsearch и даем рекомендации по разработке собственного Kafka Connector. Не пропустите интересные подкасты и практические примеры! 

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

JEP 450: Compact Object Headers (Experimental) — часть проекта Liliput, перешел в статус Proposed to Target, а значит, мы можем увидеть его уже в следующем релизе Java. JEP посвящен уменьшению размера хедеров объектов с 96—128 до 64 бит на 64-битных платформах, что должно уменьшить размер кучи. 

JEP 484: Class-File API направлен в JDK 24. Мотивация создания API: файлы классов выступают языком общения в экосистеме Java и широко используются для изучения и расширения программ. Платформа Java должна уметь определять и реализовывать стандартный класс-файловый API, который развивается вместе с форматом файла класса. Цель API — предоставить API для обработки файлов классов, отслеживая формат файла, определенный спецификацией виртуальной машины Java.

JEP 489: Vector API (Ninth Incubator). Вектор API стал инкубатором в 9-й раз и продолжает бить рекорды по количеству попаданий в инкубатор одним JEP. JEP предлагает внедрение API для выражения векторных вычислений, которые надежно компилируются во время выполнения в оптимальные векторные инструкции для поддерживаемых архитектур процессоров, обеспечивая тем самым более высокую производительность по сравнению с эквивалентными скалярными вычислениями.

IntelliJ IDEA 2024.3 EAP 5. Вышел новый EAP intellij IDEA и принес с собой такие фичи:

  • поддержку фичей Kotlin 2.1 non-local break и continue в лямбдах;

  • подсветку выделенных слов в тексте теперь сразу во всем файле;

  • новые иконки для i18n-файлов, чтобы легче находить их на фоне файлов конфигураций;

  • новую область видимости в окне поиска по проекту — искать теперь можно в файлах, которые не занесены в .gitignore-файл.

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

Java Language Futures - Fall 2024 Edition Язык программирования Java быстро развивается. В докладе кратко рассказывается о многих недавних изменениях, которые появились, а еще о направлениях и функциях, которые находятся в разработке и появятся в будущих выпусках.

Release Your (Java) Projects Like OpenJDK With Tip & Tail - Inside Java Newscast #79 Tip & Tail — это модель выпуска программных библиотек, которая предоставляет разработчикам приложений лучший опыт и помогает разработчикам библиотек быстрее внедрять инновации. Выпуск библиотеки Tip содержит новые функции и исправления ошибок, в то время как выпуски Tail содержат только критические исправления ошибок. От кончика к хвостику передается как можно меньше информации. (JEP 14 о Tip & Tail)

Big News from Project Valhalla - Inside Java Newscast #77 Когда видео начинается со слов Holy sh*t, ты понимаешь, что тебя ждет что-то интересное ? В этом видео Николай дает емкий бриф о состоянии проекта Valhalla. Вас ждет описание Value-классов, которые будут чем-то средним между примитивами и определяемыми пользователем классами. В конце даже есть наглядная табличка с основными сходствами и различиями этих типов объектов. Рассмотрены синтаксис определения, инициализация переменных, поведение в рантайме и использование памяти. И выглядит все это очень многообещающе. Верим, надеемся, ждем!

A Preview of What's Coming in Project Leyden - Inside Java Newscast #78 Еще один проект, которого Java-сообщество ждет затаив дыхание. Ведь его цель — ускорить Java-программы как электричество в Лейденовской банке ⚡ Достигнуто это будет за счет выполнения ряда процессов Ahead of Time, то есть до запуска самого приложения. Это видео в большей степени сфокусировано на JEP 483: Ahead-of-Time Class Loading & Linking, который подразумевает AOT-подгрузку классов и их связывание за счет тренировочного запуска приложения и сохранения полученной информации в специальном кэше. Автор наглядно показывает, как это будет работать, на примере Spring Boot приложения Pet Clinic.

В прошлом выпуске мы касались этой темы, когда рассматривали выпуск подкаста Podlodka. Рекомендуем ознакомится, если вы еще этого не сделали.

Joker 2024: партнерские доклады. JUG Ru Group выложили партнерские доклады с прошедшей в этом месяце конференции Jocker 2024.

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

Jextract — The Native Library Binding Extraction Tool. Проект Panama разработан для поддержки доступа к нативным библиотекам на Java. Foreign Function and Memory API (FFM API) упрощает взаимодействие между JVM и чужими API-интерфейсами. FFM API добавлена в JDK 22 для поддержки доступа к внешней памяти и вызова внешних функций. Инструмент Jextract анализирует заголовочные файлы нативных библиотек и генерирует Java-код для использования внешних функций и API памяти. О том, как использовать этот инструмент, подробно в гайде.

Advancing AI by Accelerating Java on Parallel Architectures. Статья рассказывает про эволюцию платформы Java в контексте растущих требований к машинному обучению и параллельной обработке. Java, известная своей надежностью и масштабируемостью, адаптируется для создания высокопроизводительных, ориентированных на данные приложений. Это подробное исследование предназначено для опытных разработчиков Java, архитекторов программного обеспечения и энтузиастов, которые заинтересованы в использовании возможностей Java для внедрения инноваций в быстро растущих областях искусственного интеллекта и высокопроизводительных вычислений.

Five Ways to Speed up Your Maven Builds. Как ускорить ваши Maven-сборки? «Поставить Gradle», — скажет кто-то. Ребята из Gradle считают иначе и даже подготовили статью на эту тему. По их мнению, в случае проблем со скоростью ваших сборок стоит присмотреться к профилям: возможно, некоторые плагины сильно замедляют сборку. С помощью профилей можно отключить часть плагинов для локальной или CI-сборки в зависимости от того, что вам нужно ускорить.

RESOURCE_LOCAL JPA Transaction Type. Небольшая статья от Vlad Mihalcea, посвященная типу транзакции RESOURCE_LOCAL в JPA. Тип транзакции RESOURCE_LOCAL используется как стандартный в Spring Data JPA. Советуем ознакомится со статьей, если еще не слышали про такой тип транзакции.

CompletableFuture Example: Crawler. Статья посвященная использованию Completable Future и содержит интересный пример его использования. Описана реализация веб-сканера (web crawler), который, начиная с Reddit/r/Java, будет по ссылкам искать новости, посвященные хакингу.

Null Object Pattern to Avoid Null Pointer Exception with JEP-45. Небольшая заметка об использовании Null Object Pattern в контексте добавления поддержки примитивных типов в Pattern Matching в JEP-455. 

How to Use LazyConnectionDataSourceProxy with Spring Data JPA. Небольшая заметка о LazyConnectionDataSourceProxy — инструменте, который позволяет получать коннект к БД в Lazy-режиме, то есть в момент непосредственного выполнения запроса, что улучшает утилизацию коннектов и позволяет увеличить пропускную способность приложения.

Пишем свой Http Kafka Sink Connector. Исключительно практическая статья о написании своего Sink Kafka Connector. Статья подразумевает, что вы знаете, что такое Kafka Connector, а в качестве примера автор пишет коннектор для HTTP на Kotlin. 

Полнотекстовый поиск в Java-приложениях с помощью Elasticsearch. Лонгрид об интеграции Elasticsearch в приложение Spring Boot с основным хранилищем данных в PostgreSQL с целью обеспечения быстрого и масштабируемого поиска. Помимо теоретической части по использованию ElasticSearch в статье достаточно много примеров построения модели данных, а также самих запросов для обеспечения различных видов поиска.

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

Podlodka #395 — дизайн API-библиотек. Сказать, что дизайн API — это непростая тема, значит не сказать ничего. Как сделать интуитивно понятное API? Как выбрать правильный уровень абстракции и не допустить ее протекания? Как следить за обеспечением обратной совместимости? И наконец, как приход к власти нового императора в Японии связан с хотфиксами функциональности работы с датой ивременем в JDK? На эти и многие другие вопросы ответит Сева Толстопятов, ответственный за дизайн core-библиотек в Kotlin.

Просто интересное

7 баз данных за 7 недель, Clickhouse — Книжный клуб .rar Один из выпусков серии «7 баз данных за 7 недель» от Книжного клуба.rar. В формате живой беседы эксперты из Т-Банка рассказывают об их опыте работы с Clickhouse. Для каких задач лучше всего использовать этот инструмент, с какими проблемами можно столкнуться и как их решать. 

Тестирование CAP теоремы на примере MongoDB — Книжный клуб .rar

Интересный доклад в рамках Книжного клуба.rar, в котором рассматривается CAP-теорема. Докладчик рассказывает о параметрах записи и чтения в MongoDB и на практике показывает, какие трейдофы они накладывают при выходе из строя узлов или разделении частей системы.

Программирование — это вообще не просто! Очень веселая (или мучительная) статья, в которой на реальных примерах можно увидеть, что программирование — это безумие совсем не просто. И речь не о сложных алгоритмах и структурах данных, а о самых простых и повседневных ситуациях, с которыми каждый из нас регулярно сталкивается на работе. Автор убедительно развенчивает мифы о том, что программирование — это что-то логичное и предсказуемое, что мы обычно располагаем хорошей документацией, что версионирование обеспечивает защиту от поломки обратной совместимости, и прочую чушь, никак не связанную с реальностью ?

Спасибо за прочтение! Ждем вашей обратной связи в комментариях. Присылайте материалы, если встретили что-то интересное, — опубликуем в следующем выпуске! Увидимся через месяц ?

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