Java Digest # 12: оновлення JDK 23, String Templates та AI

🙋 Алоха, друзі!

Червень вже позаду, а це означає що 50% 2024 року вже пройдені!
Нас чекає спекотне літо і багато Java-новин. Тож вйо до них!

До речі, попередній дайджест можна прочитати тут, якщо ви раптом його пропустили.

Але пам’ятайте, що це стало можливим виключно завдяки ЗСУ і читати ви його зараз можете теж завдяки їм. Тому швидесенько перед прочитанням пішли міняти долари та кидати гривні на допомогу нашим Захисникам.

Білд 29 ранніх доступів JDK 23 уже доступний та включає оновлення зі збірки 28, які містять виправлення різних проблем.

Що нового нас чекає в Java 23?

Остаточний набір з 12 нових функцій у формі JEP можна розділити на чотири (4) категорії:

Шість в категорії Основна бібліотека Java:

Чотири — Специфікація мови Java:

Одна — HotSpot:

І ще одна в категорії Інструменти Java:

Для ентузіастів також вже доступний білд 24-loom+1-17 раннього доступу Project Loom, який базується на JDK 24 Build 3 і покращує реалізацію моніторів Java (синхронізованих методів) для кращої роботи з віртуальними потоками.

Також вже доступний білд раннього доступу Project Layden. Більше деталей можна отримати тут.

🔸 Ми вже раніше згадували, що String Templates буде видалено з Java. Чому так? Детальний «розбір польотів» від Nicolai Parlog:

What Happened to Java’s String Templates? Inside Java Newscast #71

🔸 Одразу пропонуємо вашій увазі і 72 випуск Java Newcast, звісно ж, про AI.

🔸 Ну і який Java Digest без відео від Billy Korando?

How-to Build Custom Java Runtimes with Jlink

🔸 А на завершення відео про теперішнє і майбутнє Java:

Java Language Futures — Spring 2024 Edition

P.S.

Вітаємо James Gosling із виходом на заслужений відпочинок 👏👏👏

Цього разу у нас не так багато новин про Spring, але вони доволі цікаві.

У новій версії Spring Framework 6.2.0-M4 було додано ряд змін. Ось деякі з найцікавіших:

  • Тепер Task та ScheduledTask містять метадані, завдяки яким ви можете дізнатися останній час виконання, статус та наступний час виконання.
  • Анотація @ExceptionHandler була розширена і тепер дозволяє вказувати обробник помилок залежно від запитуваного типу контенту.
  • Була додана підтримка атрибутів в RestClient.

Стали доступними версії Spring Boot 3.3.1 та Spring Boot 3.2.7. Обидві версії містять виправлення помилок, оновлення залежностей та документації. Детальніше тут і тут.

Версії Spring Session 3.3.1 та Spring Session 3.2.4 були випущені з оновленнями залежностей та новою функцією, яка розвʼязує проблему, коли замість користувацької реалізації поверталася стандартна реалізація інтерфейсу UserDetails. Детальніше про ці версії можна прочитати тут і тут.

Spring for GraphQL 1.3.1 та Spring for GraphQL 1.2.7 були випущені з виправленнями помилок, покращеннями документації, оновленням залежностей та новими функціями. Тепер підтримується повернення екземплярів класу Flux з методів, анотованих @EntityMapping, на додаток до наявної підтримки List, Mono<List> та CompletableFuture<List>. Крім того, у Spring for GraphQL 1.2.x додана підтримка GraphQL Java 21.x. Детальніше про це можна дізнатися за посиланням.

Основною зміною в Spring for Apache Kafka 3.2.1 та Spring for Apache Kafka 3.1.6 стало впровадження автоматичного мапінгу трейсінг-хедерів (kafka_listenerInfo, b3, traceparent, X-B3-TraceId, X-B3-SpanId, X-B3-Sampled та X-B3-Flags). З іншими змінами можна ознайомитися тут.

І до інших релізів:


З моменту останнього випуску Джош Лонг випустив чотири нових відео з серії Spring Tips.

🎬 У першому відео Джош розповідає про SBOM (Software Bills of Materials) та їхню важливість для кібербезпеки. Він наочно демонструє, як просто додати цю функцію до свого проєкту на Spring Boot 3.3 і як додати підтримку GraalVM Native Image.

🎬 Ми неодноразово згадували Spring Modulith у попередніх випусках. Якщо ви ще не використовуєте його у своїх проєктах, радимо переглянути наступне відео. У ньому Джош пояснює, що таке Spring Modulith і як він може допомогти краще організувати ваші проєкти.

🎬 У наступному відео Джош розповідає про різні способи пришвидшення роботи Spring Boot застосунків, зокрема про AOT, GraalVM, AppCDS та CRaC.

🎬 В останньому відео Джош розповідає про підтримку Testcontainers і Docker Compose у Spring Boot, а також демонструє, як ця функція реалізована на прикладі створення нової автоконфігурації для RethinkDB.


Але це ще не все і у нас також є кілька цікавих статей, які варто переглянути.

🔸 Не можемо не поділитися двома новими статтями про Spring AI. В одній з них Mircea Cadariu розповідає про своє дослідження з використанням Spring AI, Llama3 та pgvector. А Thomas Vitale опублікував детальну статтю про класифікацію текстів за допомогою Spring AI.

🔸 Daniel Garnier-Moiroux, розробник Spring Security, у своєму блозі поділився роздумами про складність визначення тривалості дії access і refresh токенів в системах OAuth2 та OpenID.

🔸 Wim Deblauwe опублікував статтю, в якій пояснює, як патерн Transactional Outbox можна реалізувати за допомогою Spring Integration та Spring Modulith.

🔸 І на завершення, Fabio Niephaus опублікував допис, у якому зазначив, що все більше опенсорс проєктів використовують GraalVM. Цього разу до них приєднався і Maven Daemon.

☁️ Azure

  • Microsoft вивели в preview нове розширення Azure Container Apps — Dynamic sessions. Це безпечне середовище для виконання Python коду, наприклад, коду, згенерованого LLM, з мінімальним часом відклику і можливістю розширювати це середовище своїми бібліотеками. Детальніше про те, як це працює в Azure, можна подивитися у цьому відео, а про те, як використовувати java клієнт для Dynamic sessions, можна дізнатись у цьому відео, або відразу перейти до коду.
  • На Microsoft for Java Developers з’явилася серія відео Java on Azure container, де на прикладі Spring pet clinic розглядається розгортання на Azure, використання managed spring config server від Azure, налаштування tomcat через env variables і налаштування OpenTelemetry колектора для моніторингу і логування, а також налаштування auto scaling з залежністю на кількість одночасних http запитів.

☁️ OCI

  • Oracle зробили міні відеоогляд своєї Globally Distributed Autonomous Database і водночас нагадують про різні принципи таких баз даних: sharding, scalability, data sovereignty, consistent hash та ін.
  • Oracle Code Assist — ШІ асистент від Oracle, спеціалізований для Java, SQL i OCI, готується до релізу, але ще знаходиться в фазі internal user testing. Серед його можливостей, крім загального аналізу і генерації коду, мають бути поради як зробити проєкт більш ефективним саме на Oracle Cloud Infrastructure.

☁️ AWS

  • Amazon Q — ШІ асистент від Amazon, може стати в нагоді для legacy проєктів, які потрібно оновити до новіших версій Java і супутніх бібліотек. Ось приклад, де проєкт написаний на Java 8, що розгортається на EC2, модернізується за допомогою ШІ до Java 17 і перетворюється в контеризований cloud native проєкт, який буде розгортатись на AWS Fargate. Другий приклад показує деталі того, як Amazon Q оновлює spring v2 в v3, Junit 4 в Junit 5 і оновлює код, аби використовувати можливості новішої Java.

☁️ GCP

  • Ціна на BigQuery, яка залежить від кількості оброблених даних в результаті запиту, майже вилилася для Spotify у близько мільйона доларів для одного з запитів, що мав виконуватися кожну секунду і сканувати 75 GB даних. Як цю проблему вирішили, можна прочитати в статті на Spotify.

Цей розділ поступово перетворюється в секцію ChatGPT blops 🙂

Неймовірно (ні), але ChatGPT та інші AI технології активно використовують для поширення рососійської пропаганди.

Ну а кращого ґрунту для цієї помийки, ніж хвіттер годі й шукати. (Комедія у 2 актах, гортайте)




Акаунт з галочкою і про крипту. Хто б міг подумати? Ілон не знав, йому не доповіли.

Друзі, нам важлива ваша думка! Поділіться в коментарях ідеями, як нам варто покращувати цей дайджест та які новини в ньому вам цікаво читати.

Над дайджестом працювала команда Avenga:

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось12
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Спасибо. Хороший обзор

Підписатись на коментарі