Java Digest #1: Java 21 готова і буде гарячою, Kafka каже “па-па” ZooKeeper-у, Vector-search в Cassandra

💡 Усі статті, обговорення, новини про Java — в одному місці. Приєднуйтесь до Java спільноти!

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

Тому швидесенько перед прочитанням пішли міняти долари і кидати гривні на допомогу нашим Захисникам.

Java 21 — жарти в сторону!

Java 21 переходить у Rampdown Phase, що означає, що всі покращення і оновлення вже в білді, і тепер буде все тільки перетестовуватись і поліруватись.

Але, boy-oh-boy, скільки всього смачного ми побачимо в новій LTS версії! Білд міститиме 15 JEP-ів, в т.ч. Generational ZGC, Record Patterns, Pattern Matching for switch, Virtual Threads та багато іншого. Детальніше тут.

Завантажити і спробувати EA білд 21 можна тут. Для ентузіастів, які люблять жити на гребені хвилі та хіпстерів — білд Java 22 EA тут.

Одним з найобговорюваніших топіків, звісно, став JEP 445: Unnamed Classes and Instance Main Methods (Preview). І став він таким не через його екстраординарну значущість, а з огляду на кількість мемасіків, які ком’юніті згенерувало.

Глобальний тренд оказуалення мов програмування давно прослідковується і в Java, і це закономірний (давно очікуваний) крок. Вивчати мову і писати скрипти на ній однозначно буде приємніше.

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

Нашими фаворитами є:

Також, рекомендуємо до прочитання статтю Stuart «Dr.Deprecator» Marks про потенційні виклики в реалізації Sequenced Collections. А для тих, хто ще не встиг познайомитись із цією новою фічею джави, запрошуємо до перегляду:

А тут Billy Korando в епізоді Sip of java розповідає про апдейти в джавадоці, які доступні вже з jdk-20. Якщо ви любите відео Біллі так само, як ми, то ось вам ще одне — про Collections Utility Class.

В продовження покращень — стаття (насправді частина дослідження на PhD) про оптимізацію утилізації пам’яті завдяки автоматизованому контролю розміру хіпа в ZGC.

Brian Goetz разом з Gavin Bierman випустив твір-роздум на тему патернів, якими вони керувались в редизайні switch-a.

Ну, і для тих, хто краще сприймає на слух — Nicolai Parlog розганяє хайп-трейн Java 21 тут. А щоб підкреслити, наскільки нова версія джави буде великою, Nicolai записав додаткове відео, оскільки опустив кілька важливих деталей в першому. ¯\_(ツ)_/¯

Час оновлювати версії

До інших важливих апдейтів в світі JVM і суміжних світах

Scala випустила 2 релізи: v2.12.18 та 3.3.0. Разом з новими версіями тепер доступний і Scala-toolkit, наразі у версії 0.2.0.

Spring Boot вже доступний у наступних версіях 2.7.13, 3.0.8 та 3.1.1.

Josh Long (а хто ж іще) випустив (ще в травні, але ми слоупоки) оглядову екскурсію, як рухатись швидко з Spring Boot 3.1. А Jorgen Haller оголосив про реліз Spring Framework 6.1 M1, з якого відомо чого чекати у наступній версії улюбленого фреймворку, а саме:

  • Embracing JDK 21 LTS;
  • Virtual Threads (Project Loom);
  • JVM Checkpoint Restore (Project CRaC);
  • Data Binding and Validation, revisited.

Wiremock випустив лібу для зручної роботи з популярними апішками, за списком сюди.

На сайті Testcontainers вийшов гайд з роботи з JOOQ і Flyway. Також AtomicJar випустили оглядовий гайд, як тестувати Spring Boot апки за допомогою тест-контейнерів, після того, як в SpringBoot 3.1 була додана нативна їх підтримка.

У світі Kafka відбулася довгоочікувана подія — реліз 3.5, що дозволить нарешті позбутись ZooKeeper-a та мігрувати «старі» 2.Х ворклоади на KRaft.

Cassandra не відстає від трендів — нам завезли vector search, що, як обіцяє Datastax, полегшить написання LLM і Generative AI-застосунків.

Micronaut випустив чергові мінорні версії 3.9.3 та 3.9.4 — в них з цікавого апгрейд до Netty 4.1.92 та 4.1.94 відповідно, а також апгрейди Servlet і AWS модулів. І, продовжуючи тему Мікронавта, Oracle випустив v3.8.5 Graal Cloud Native.

На почитати (і на подивитись)

🔗 Ігор Дідик ділився досвідом написання ботів для Telegram на Lviv JavaClub.
🔗 Oracle дає можливість здати OCI сертифікації безоплатно з липня по кінець серпня 2023.
🔗 Аліна Юренко (дев-адвокат graalvm в Oracle) випустила статтю про нові релізи GraalVM і нові безкоштовні ліцензії до них.
🔗 Микола Винницький випустив гайд для початківців по роботі з Apache Airflow.
🔗 А IntelliJ Idea потішить (?) нас новим дизайном UI вже у версії 2023.2.
🔗 John A. De Goes, один з видатних пропагандистів функціонального програмування та активних прихильник Scala, взяв участь в цікавому подкасті від Tech Conception, в якому розповів про адаптацію функціонального програмування бізнесом та розвиток Scala для масового застосування.
🔗 Потроху починають з’являтися в загальному доступі відеозаписи з DevoxxUK (який відбувся 8-10 травня). Цікавою виглядає доповідь Peter Urs з роздумами, чи замінить Project Loom корутини в Kotlin.
🔗 Robert Metzeger виклав свої слайди з BerlinBuzzWords про оптимізацію споживання пам’яті для Apache Flink.

Stack Overflow опитування

13 червня 2023 Stack Overflow виклав результати свого великого інженерного опитування, в якому взяли участь 90 тисяч спеціалістів з усього світу.
Результати виявились досить передбачуваними: JavaScript і Python в топі, Java все ще найпопулярніша серед олдскульних бекенд мов (з гарним запасом).

Однак у фінансовій галузі Java залишається номер один.

ІТ. Повернення до корінь

Нещодавно була новина про те, що AWS перейшли з мікросервісної архітектури на монолітну та зменшили витрати на 90%. Виявляється, старі рішення можуть мати нові переваги!

Тепер Instacart вирішили попрощатись з хмарними сервісами та повернутись до власної, внутрішньої інфраструктури. Хоча хмарні сервіси зручні та гнучкі, вони можуть бути дорогими для тривалого використання.

Компанія виявила, що володіння власною інфраструктурою може бути вигіднішим і ефективнішим. Цей перехід дозволив зекономити понад 50% витрат.

Таким чином, здається, ідеї минулого знову знаходять своє місце в сучасному світі ІТ.

Daily-reminder не довіряти безапеляційно всьому, що генерує ChatGPT

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

👍ПодобаєтьсяСподобалось25
До обраногоВ обраному8
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

Вітаю, Андрію!

Цікаво, а чому дайджест #1? По ідеї мав би бути #48, адже на DOU вже виходили 48 випусків Java-дайджесту від #0 до #47.

У будь-якому разі вийшло круто. Видно, що ви проробили велику роботу. Так тримати!

для нас він став першим)

Зрозумів. Чекатиму на нові випуски! ;)

скільки всього смачного ми побачимо в новій LTS версії!

Я перепрошую, але не усіє такого терміну як Java LTS версія взагалі в природі. Єдине що зветиться LTS це те що ми (Oracle) надаємо клієнтам один рік після релізу кожні 2 роки:
— Oracle JDK 17 LTS коли вийшла Java 19,
— Oracle JDK 21 LTS коли вийде Java 23.

Це одне з найбільших хибних уявлень в комʼюніті наразі. Oracle щось називає LTS лише тоді, коли воно таким стає. Наприклад Oracle JDK 17.0.2+ стала тією самою LTS версією. Як це буде із Oracle JDK 19 — буде видно що саме буде LTS рік по тому, тобто у 2024 році.

Чого тут ще не було написано, так це про нові внутрішні API — Classfile API як новий спосіб керуванням байткоду і мати змогу втручатися в виконання недостовірного коду в безпечному середовищі. Ці нові API дуже легко інтегруються в інтерфейс Java агентів.

P.S.: окрема дяка за посилання на моіх друзів-коллег Біллі та Жозе. Вони також вдячні за поширення.

Так, ви безперечно праві.
Але сильною стороною джави завжди була стабільністиь і прогнозованість.
А оскільки наразі 21 — planned як LTS згідно офіційного Оракла — www.oracle.com/...​a-se-support-roadmap.html не вважаю це аж дуже сильний (як мінімум на даному етапі) місконсепшин.

Але як маєте якісь інсайдики з цього питання — завше раді)

Та ні, тут інсайдів нема, документ все правильно каже. У момент релізу Oracle JDK 21 не стає LTS, він стає лише рік після релізу коли закінчується безкоштовне оновлення (один рік після релізу) — це по-фактах основа ліцензіювання, тобто один рік NFTC www.oracle.com/...​enses/no-fee-license.html, а потім оновлення стають платними у межах підписки Java SE.

Загалом, ми хочемо щоб усі ставилися однаково відповідально до кожного релізу, бо нема сенсу чекати допоки вийде нова версія із LTS, бо із кожним релізом платформа та екосистема стають кращіми. Наприклад, не треба чекати допоки Project Panama допилять до релізного стану, векторизація SIMD може стати в нагоді вже зараз і ми це бачимо на прикладі проекту Tribuo (ML in Java).

Дякую, почитав з задоволенням

Супер огляд, Молодці!

Дякую за дайджест!

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