Пока вы там переходите на Java 17, в Java 24 уже появился первый JEP: Prepare to Restrict the Use of JNI
#jni
#jni
🔥6 6
Вышел новый EA билд Валгаллы. Как утверждает автор письма, это очень важный майлстоун. Скачиваем и тестируем.
Valhalla всё ближе и ближе к попаданию в mainstream.
#valhalla
Valhalla всё ближе и ближе к попаданию в mainstream.
#valhalla
🔥10 7
Вышла IntelliJ IDEA 2024.2. Новый UI теперь стал дефолтным, а старый UI теперь нельзя включить в настройках. Но можно установить через плагин в JetBrains Marketplace.
#idea
#idea
💩23👏9😁6👍4😭4 3🔥1🤮1
Вышел Hibernate 6.6.0 Final.
Главная фишка – поддержка нового стандарта Jakarta Data 1.0, который является спецификацией stateless репозиториев. Репозиторий – это typesafe API для взаимодействия с БД и представляет более простую программную модель, чем JPA. Для генерации репозиториев используется процессор аннотаций
Пример:
Больше деталей можно прочитать в официальной документации Hibernate и в блоге Гевина Кинга (часть 1 и часть 2).
#hibernate
Главная фишка – поддержка нового стандарта Jakarta Data 1.0, который является спецификацией stateless репозиториев. Репозиторий – это typesafe API для взаимодействия с БД и представляет более простую программную модель, чем JPA. Для генерации репозиториев используется процессор аннотаций
hibernate-jpamodelgen, который поставляется как отдельный артефакт. Процессор аннотаций используется потому, что многие ошибки репортятся на этапе компиляции, а не в рантайме.Пример:
import jakarta.data.repository.Find;
import jakarta.data.repository.Insert;
import jakarta.data.repository.Repository;
@Repository
interface Publishing {
@Find
Book book(String isbn);
@Find
Author author(String ssn);
@Insert
void publish(Book book);
@Insert
void create(Author author);
// query methods
...
}
Больше деталей можно прочитать в официальной документации Hibernate и в блоге Гевина Кинга (часть 1 и часть 2).
#hibernate
🔥9✍5👍5💩3👌1
if-else в новом стиле:// Before Java 23:
if (condition) {
// ...
} else {
// ...
}
// Since Java 23:
switch (condition) {
case true -> // ...
case false -> // ...
}
Всё благодаря JEP-455 😁. Будете так писать?
Please open Telegram to view this post
VIEW IN TELEGRAM
👀14 13👎10😁8🔥3🥴3 2
Похоже, что Lilliput скоро попадёт в мейнстрим OpenJDK. Роман Кеннке засабмитил пулл-реквест, который имплементирует JEP 450: Compact Object Headers (Experimental). Если пулл-реквест будет одобрен, то можно будет включать сжатые заголовки с помощью ключа -
Если всё будет хорошо, то Lilliput попадёт в Java 24.
#lilliput
XX:+UseCompactObjectHeaders. Правда пока это будут 64-битные заголовки, а не 32-битные (они будут следующим этапом). Но это всё равно отлично.Если всё будет хорошо, то Lilliput попадёт в Java 24.
#lilliput
Начиная с Java 23, GraalVM JIT включён в Oracle JDK в качестве альтернативы другим JIT-компиляторам (C2, C1):
К сожалению, он включён только в Oracle JDK, но не в OpenJDK.
#graalvm
-XX:+UnlockExperimentalVMOptions -XX:+UseGraalJIT
К сожалению, он включён только в Oracle JDK, но не в OpenJDK.
#graalvm
Появился новый черновик JEP: Treat Loop Variables as Effectively Final in the Bodies of All for() Loops.
Он сделает компилируемым вот такой код:
Пулл-реквест уже создан на гитхабе и должен быть смёржен в мастер. То есть возможно мы сможем использовать эту фичу в Java 24.
#java24
Он сделает компилируемым вот такой код:
for (int i = 1; i <= 3; i++) {
Runnable r = () -> System.out.println(i);
}Пулл-реквест уже создан на гитхабе и должен быть смёржен в мастер. То есть возможно мы сможем использовать эту фичу в Java 24.
#java24
Вот такие вот пироги
Хабр
Компания JetBrains начала блокировать оплаченные лицензии пользователей, находящихся на территории РФ
Давно использую продукты компании JetBrains. В 2022 году компания заявила о том, что уходит из России, но оставалась лазейка, что можно было сменить страну проживания и оплатить лицензию карточкой...
💩22👍13😢5🤬3🎉2🤮2❤1🔥1😁1
Podlodka Java Crew возвращается с новой темой — Асинхронной архитектурой, чтобы помочь Java-разработчикам освоить самые востребованные подходы и инструменты.
Пять дней насыщенной программы, сессии утром и вечером.
Погружаемся в асинхронность вместе:
- Рулетка кейсов: "Spring, Micronaut, Quarkus и Helidon" — Григорий Кошелев и Андрей Когунь о плюсах и минусах каждого фреймворка 🛠
- "Проектирование Event Driven-систем с DDD и Event Storming" — Кирилл Ветчинкин расскажет, как создавать масштабируемые и управляемые системы 📈
- Воркшоп "Apache EventMesh на практике" — Павел Бодячевский поможет внедрить Event Mesh в проект 🎯
- "Debezium: окно в асинхронный мир данных" — Евгений Ефименко раскроет секреты работы с данными в реальном времени 🔄
Присоединяйтесь, чтобы освоить асинхронность на практике: https://podlodka.io/javacrew
Пять дней насыщенной программы, сессии утром и вечером.
Погружаемся в асинхронность вместе:
- Рулетка кейсов: "Spring, Micronaut, Quarkus и Helidon" — Григорий Кошелев и Андрей Когунь о плюсах и минусах каждого фреймворка 🛠
- "Проектирование Event Driven-систем с DDD и Event Storming" — Кирилл Ветчинкин расскажет, как создавать масштабируемые и управляемые системы 📈
- Воркшоп "Apache EventMesh на практике" — Павел Бодячевский поможет внедрить Event Mesh в проект 🎯
- "Debezium: окно в асинхронный мир данных" — Евгений Ефименко раскроет секреты работы с данными в реальном времени 🔄
Присоединяйтесь, чтобы освоить асинхронность на практике: https://podlodka.io/javacrew
🔥3🤮2❤1👍1
microJUG
Lilliput смёржен в JDK 24. Ждём билда, чтобы можно было потестить. #lilliput
Lilliput попал в последний билд 24 OpenJDK. Комбинация ключей
Также в этот билд попал JEP 491: Synchronize Virtual Threads without Pinning.
Можно деплоить в прод.
#lilliput #loom
-XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders теперь работает.Также в этот билд попал JEP 491: Synchronize Virtual Threads without Pinning.
#lilliput #loom
🎉22 13 10🔥1😁1🆒1
Старайтесь избегать ветки default в switch
Многие программисты, чтобы писать поменьше кода, ставят в конце switch ветку default. И тем самым подкладывают самим себе свинью в будущем: если в enum появляется новая константа, то для неё исполнение switch пойдёт по ветке default, хотя это может быть некорректно. Например:
Если в Role когда-нибудь появится новая константа, например, какой-нибудь EXECUTE, то метод canWrite() будет по-тихому работать неправильно.
Чтобы этого не было, нужно не лениться и перечислять все константы явно:
Тогда если в Role появится EXECUTE, то switch уже не скомпилируется, и вам придётся обработать новый случай (в Java все выражения switch должны быть тотальными).
То же самое с паттерн-матчингом по sealed классам: также желательно перечислять все классы явно и не использовать default. Если в списке permits появится новый тип, то компилятор заставит вас его обработать в switch.
#switch
Многие программисты, чтобы писать поменьше кода, ставят в конце switch ветку default. И тем самым подкладывают самим себе свинью в будущем: если в enum появляется новая константа, то для неё исполнение switch пойдёт по ветке default, хотя это может быть некорректно. Например:
enum Role {
READ,
WRITE,
FULL
}
private static boolean canWrite(Role role) {
return switch (role) {
case READ -> false;
default -> true;
};
}Если в Role когда-нибудь появится новая константа, например, какой-нибудь EXECUTE, то метод canWrite() будет по-тихому работать неправильно.
Чтобы этого не было, нужно не лениться и перечислять все константы явно:
return switch (role) {
case READ -> false;
case WRITE, FULL -> true;
};Тогда если в Role появится EXECUTE, то switch уже не скомпилируется, и вам придётся обработать новый случай (в Java все выражения switch должны быть тотальными).
То же самое с паттерн-матчингом по sealed классам: также желательно перечислять все классы явно и не использовать default. Если в списке permits появится новый тип, то компилятор заставит вас его обработать в switch.
#switch
👍30🔥5 5🤡3
Новости по поводу Simple Source Files and Instance Main Methods (которые в Java 24 будут в четвёртом превью).
Gavin Bierman написал следующее в рассылке (полный текст).
Вкратце:
1. Фичу планируется сделать стабильной в Java 25 (ну хоть что-то у нас будет в следующем LTS).
2. Автоматических статических импортов не будет. Методы
3. Класс
4.
Gavin Bierman написал следующее в рассылке (полный текст).
Вкратце:
1. Фичу планируется сделать стабильной в Java 25 (ну хоть что-то у нас будет в следующем LTS).
2. Автоматических статических импортов не будет. Методы
println() и readln() нужно будет вызывать как IO.println() и IO.readln() (но при желании можно будет самому сделать import static).3. Класс
IO перемещается из пакета java.io в java.lang. Поэтому импорт для него будет не нужен.4.
IO.println() и IO.readln() будут реализованы через System.out и System.in, а не через Console.💩11❤7 4 1