Pull to refresh
310.86

Java Digest # 10

Level of difficultyEasy
Reading time6 min
Views5K

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

?В этот весенний период, наполненный свежестью и обновлениями, ждите обзоров состояния jextract и новых функций терминала в JetBrains IDEs, включая его бета-версию. Готовьтесь к версии 0.8.0 Spring AI, где есть новые функции и улучшения. Вдохните аромат цветущей весны, пока мы погружаемся в обзор различных Java Enhancement Proposals (JEP), включая поддержку Markdown в JavaDoc, новые возможности для компиляции и выполнения Java-кода, а также превью функций Java 22. Вдохновляйтесь, ведь весна в мире Java приносит с собой обновления и новые возможности для всех нас. Stay tuned! ?

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

State of jextract. Jextract — инструмент для преобразования кода C в Java-код, поддерживающий различные аспекты C++. Jextract предоставляет средства для преобразования типов данных, включая указатели на функции и переменные функции. В отчете за февраль 2024 — все о том, как менялся этот инструмент и что в нем нового.

The New Terminal (Beta) Is Now in JetBrains IDEs. JetBrains представили бету нового терминала для своих IDE. Он будет полностью доступен в версиях 2024.1, но уже сейчас его можно пощупать, включив соответствующую настройку. Новый терминал предоставляет множество интересных функций: автозаполнение, улучшенная история команд и визуальное разбиение команд на отдельные блоки, между которыми легко навигировать. Выглядит действительно приятно.

Spring AI 0.8.0 Released. Вышла версия 0.8.0 Spring AI. Проект призван упростить создание приложений, которые используют ChatGPT и другие AI-модели, предоставляющие API для взаимодействия. Разработчики Spring AI хотят дать абстракции для работы со всеми основными моделями так, чтобы между ними было легко переключаться с минимальным изменением кода. В этой версии представлена такая функциональность:

  • API для взаимодействия с AI-моделями от разных поставщиков: OpenAI, Microsoft, Amazon, Google, Huggingface и других;

  • поддержка Vector Store API, которое предоставляет интерфейс для взаимодействия с векторными БД, поддерживается 8 различных БД;

  • вызов функций — блоков кода в ИИ-моделях, фича для Open AI;

  • автоконфигурация и стартеры Spring Boot для моделей ИИ и векторных хранилищ;

  • ETL-фреймворк для Data Engineering.

JEP 467: Markdown Documentation Comments — JEP 467, посвященный Markdown в JavaDoc, перешел в статус Candidate.

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

Project Leyden: Capturing Lightning in a Bottle. Проект Laden направлен на сокращение времени запуска приложений в два раза и на порядок — в будущем. В проекте участвуют разработчики библиотеки Java в Oracle. В докладе расскажут и покажут, как можно оптимизировать старт приложения на 800%(!), используя Laden.

Java's Custom Runtime Builder - jlink. JLink — инструмент командной строки для создания пользовательского образа среды выполнения Java. Он использует два варианта: добавление модулей и определение выходного образа. JLink позволяет создавать образы среды выполнения, содержащие только необходимые модули, что уменьшает размер образа и ускоряет запуск приложения. Подробнее об этом инструменте — в ролике.

Алексей Рагозин — Java в контейнере: особенности эксплуатации. Очень интересный, глубоко практический доклад. Спикер рассказывает, с какими проблемами можно столкнуться при запуске Java-приложений в контейнерах и как их решать. При этом не забывает в начале дать теоретический базис для лучшего понимания материала. Затрагивается работа с памятью и CPU и есть много дополнительных материалов, чтобы глубже погрузиться в тему.

Data Oriented Programming in Java 21, Solving the Countdown game - JEP Cafe #22. Видео — полчаса наслаждения изящными решениями с использованием новых фич Java, направленных на реализацию парадигмы Data-ориентированного программирования. Sealed-классы, рекорды, паттерн матчинг, безымянные паттерны, газереры для Stream API, Exhaustive Switch — они используются для демонстрации красивых решений задачи Countdown. Настолько наглядная демонстрация достойна восхищения!

Java 22 Previews Statements Before super(...) and this(...) - Inside Java Newscast #62. В Java 22 в качестве превью вошел JEP 447, который частично снимает запрет на код до вызова this() и super() в конструкторах. В этом видео Николай рассказывает, зачем изначально был введен запрет, какой именно код мы теперь можем писать и для чего это может быть нужно.

Does Java 22 Kill Build Tools? - Inside Java Newscast #63. Maven и Gradle больше не нужны. В Java 22 представили JEP 458, который по сути продолжает идею JEP 330: дает возможность компилировать и запускать Java-код одной командой java. Но если раньше речь шла об одном файле, то теперь Java найдет все файлы классов и даже джарники, необходимые для компиляции и выполнения программы. Николай рассказывает, как это работает, какие есть подводные камни и, самое главное, зачем это нужно.

Дмитрий Тучс — The art of JUnit extensions. «Extension — не аналог @BeforeEach/All» — цитата идеально передает суть доклада. Спикер демонстрирует мощь механизма Extension-ов, представленного в JUnit 5, на примере авторизации по OAuth 2. Если вы все еще используете наследование в своих классах тестов, этот доклад обязателен для просмотра, так как в 99% случаев вам на самом деле нужно не наследование, а свой экстеншен.

Foreign Function & Memory API - A (Quick) Peek Under the Hood. Хороший доклад, в котором автор рассказывает о современном, эффективном и безопасном доступе к нативному коду из Java через Foreign Function & Memory API, а также чем это лучше уже давно существующего JNI.

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

Использование resilience4j со Spring Boot. Resilience4j — библиотека, предоставляющая набор инструментов для повышения надежности и отказоустойчивости Java-приложений прежде всего в микросервисной архитектуре. В статье разбираются основные компоненты с примерами и то, как они могут помочь при разработке.

Гексагональная архитектура и Spring Boot. У обычной структуры Java-проекта на spring boot есть проблемы с расположением классов и сложностью понимания. Гексагональная архитектура предлагает отделение скучного кода от логики и слабую связность. Подробнее о том, как это будет выглядеть на spring boot, читайте в статье.

Hibernate StatelessSession JDBC Batching рассказ о StatelessSession, которая существует в Hibernate больше десяти лет, но получила новые применения в Hibernate 6. Теперь ее можно использовать для создания INSERT, DELETE и UPDATE батч-запросов.

Optimizing Java for Modern Hardware: The Continuous Evolution of the Vector API. Небольшая статья, в которой просто и понятно рассказывается о том, что такое Vector API, почему он дает прирост производительности, а еще есть простой пример его использования.

Мифы и реалии «Мультимастера» в архитектуре СУБД PostgreSQL цикл статей, в которых академически описана проблематика и решаемая задача. В первой части — общие концепции мультимастера. Во второй части фокус смещается на гарантии консистентности и разрешение конфликтов в мультимастере, а в третьей части рассказывается о производительности. Рекомендуем к прочтению.

The Billion Row Challenge (1BRC) — Step-by-step from 71s to 1.7s.  В статье автор рассказывает, как принимал участие в The Billion Row Challenge. Задачей испытания было написать программу, которая считает минимальную, среднюю и максимальную температуру для каждой погодной станции. Основная сложность заключается в том, что все данные лежат в файле, содержащем миллиард строк. В статье кратко описываются инструменты профилирования и более подробно рассказывается про различные методы оптимизации в Java, безопасные и не очень.

Подборка любопытного

Настройка CI/CD глазами разработчика. Умение настраивать CI/CD, может, и не самый часто используемый навык Java-программиста, но все еще очень полезный. Статья описывает процесс создания CI/CD для проекта на Java с использованием Docker и сделана как руководство с пошаговыми инструкциями, что удобно, когда хочешь что-то попробовать в pet-проекте с минимальным CI.

Speed up your Java Development on Windows with Dev Drive в Microsoft рассказали про Dev Drive. Dev Drive — новое решение, построенное на Resilient File System (ReFS) и призванное увеличить скорость разработки благодаря оптимизации работы файловой системы. В статье описано, как его создать, есть пример с Spring Pet Clinic sample application. Сборку через maven удалось ускорить с 2 минут до 45 секунд.

СберТех приглашает разработчиков протестировать свой аналог GitHub — веб-сервис GitVerse. СберТех выпустил российский аналог GitHub. Сложно как-то это комментировать. Лучше сходить посмотреть и попробовать.

Podlodka Java Crew — 11 марта стартует очередная Podlodka Java Crew, где всю неделю будут обсуждаться интеграции. Тема максимально практическая и прикладная. Запасаемся попкорном и бежим за билетами.

Спасибо, что дочитали! Увидимся через месяц ?

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

Tags:
Hubs:
Total votes 18: ↑17 and ↓1+17
Comments0

Articles

Information

Website
l.tbank.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия