Java Digest # 12: оновлення JDK 23, String Templates та AI
🙋 Алоха, друзі!
Червень вже позаду, а це означає що 50% 2024 року вже пройдені!
Нас чекає спекотне літо і багато Java-новин. Тож вйо до них!
До речі, попередній дайджест можна прочитати тут, якщо ви раптом його пропустили.
Але пам’ятайте, що це стало можливим виключно завдяки ЗСУ і читати ви його зараз можете теж завдяки їм. Тому швидесенько перед прочитанням пішли міняти долари та кидати гривні на допомогу нашим Захисникам.
Білд 29 ранніх доступів JDK 23 уже доступний та включає оновлення зі збірки 28, які містять виправлення різних проблем.
Що нового нас чекає в Java 23?
Остаточний набір з 12 нових функцій у формі JEP можна розділити на чотири (4) категорії:
Шість в категорії Основна бібліотека Java:
- 466: Class-File API (Second Preview)
- 469: Vector API (Eighth Incubator)
- 473: Stream Gatherers (Second Preview)
- 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal
- 480: Structured Concurrency (Third Preview)
- 481: Scoped Values (Third Preview)
Чотири — Специфікація мови Java:
- 455: Primitive Types in Patterns, instanceof, and switch (Preview)
- 476: Module Import Declarations (Preview)
- 477: Implicitly Declared Classes and Instance Main Methods (Third Preview)
- 482: Flexible Constructor Bodies (Second Preview)
Одна — 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 Framework 6.1.10
- Spring Framework 6.1.9, 6.0.22 та 5.3.37
- Spring Security 5.8.13, 6.2.5, та 6.3.1
- Spring Data 2024.0.1 та 2023.1.7
- Spring Authorization Server 1.3.1 та 1.2.5
- Spring Modulith 1.1.6 та 1.2.1
- Spring for Apache Pulsar 1.0.7 та 1.1.1
- Spring Tools 4.23.0
З моменту останнього випуску Джош Лонг випустив чотири нових відео з серії 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.
- Червневий дайджест від RedHat про Kafka.
- Мікронавт 4.5.0 вже доступний.
- Microsoft розвиває підтримку Java в Visual Studio Code:
- У цьому відео показують розрахунки і візуальне відображення test code coverage. Також у відео показано як генерувати прості тести за допомогою GitHub Copilot інтегрованого в IDE. В цілому нічого принципово нового, але якщо ви шукаєте альтернативу іншим Java IDE, то можливо Visual Studio Code може нею бути. Якщо не зараз, то хоча б в перспективі.
- Також Copilot буде використовуватися для аналізу коду і генерування пропозицій рефакторингу. Поки що ця можливість доступна для Insiders, але подивитися як вона працює можна у цьому відео.
- Про новинки з Akka 24.05 можна почитати на нових блогах Lightbend. Наприклад, про підтримку data sharding, zero trust architecture, Java 21, а також GraalVM і Rust для використання Akka Edge на більшому спектрі пристроїв. Загальний огляд версії 24.05 можна послухати на записі вебінару.
- Langchain4j версії 0.32.0 вже доступний.
- Garbage Collection in Java: The progress since JDK 8 by STEFAN JOHANSSON
- Did You Know? — Faster, leaner applications with Oracle GraalVM
- Build faster persistence layers with Spring Data JPA 3 by Thorben Janssen @ Spring I/O 2024
- Java Meets AI: How to Build
LLM-Powered Apps with LangChain4j and Lize Raes - Cloud Coaching — Java meets Generative AI
Цей розділ поступово перетворюється в секцію ChatGPT blops 🙂
Неймовірно (ні), але ChatGPT та інші AI технології активно використовують для поширення рососійської пропаганди.
Ну а кращого ґрунту для цієї помийки, ніж хвіттер годі й шукати. (Комедія у 2 актах, гортайте)
Акаунт з галочкою і про крипту. Хто б міг подумати? Ілон не знав, йому не доповіли.
Друзі, нам важлива ваша думка! Поділіться в коментарях ідеями, як нам варто покращувати цей дайджест та які новини в ньому вам цікаво читати.
Над дайджестом працювала команда Avenga:
1 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів