Вышла 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
Какая самая полезная новая фича в Java 24 для вас?
(preview не включен в опрос намеренно)
(preview не включен в опрос намеренно)
Anonymous Poll
28%
JEP 485: Stream Gatherers
6%
JEP 484: Class-File API
11%
JEP 450: Compact Object Headers (Experimental)
7%
JEP 483: Ahead-of-Time Class Loading & Linking
47%
JEP 491: Synchronize Virtual Threads without Pinning
1%
JEP 493: Linking Run-Time Images without JMODs
Ежегодный опрос. Какую версию(-и) Java или язык JVM вы используете на работе?
Anonymous Poll
9%
Java 8 или более старую
12%
Java 11
43%
Java 17
52%
Java 21
1%
Java 22
1%
Java 23
5%
Java 24
19%
Kotlin
2%
Scala
4%
Groovy
❤1 1
Что ж, опрос вроде более-менее настоялся, и можно подвести итоги.
• Java 21 взлетела с прошлого года на 27% и стала самой популярной версией Java.
• Java 17 упала на 20% и стала второй.
• Java 11 упала на 11% и уже уходит в прошлое.
• Java 8 уже стала меньше 10%.
• Kotlin стабильно держит свои ≈20% и мало меняется от года к году.
Но давайте помнить, что это опрос исключительно по подписчикам нашего канала. В целом по энтерпрайзу картина более консервативная, и там старые версии ещё очень активно используются. Например, согласно опросу Азула проценты такие:
• Java 6 – 10% (да-да, Java 6)
• Java 7 – 13%
• Java 8 – 23%
• Java 11 – 23%
• Java 17 – 34%
• Java 21 – 31%
Вообще в западном энтерпрайзе много чего по-другому, чем у нас. Например, там за Java Support платят 85% компаний. То есть подавляющее большинство. Сколько компаний платят у нас?
• Java 21 взлетела с прошлого года на 27% и стала самой популярной версией Java.
• Java 17 упала на 20% и стала второй.
• Java 11 упала на 11% и уже уходит в прошлое.
• Java 8 уже стала меньше 10%.
• Kotlin стабильно держит свои ≈20% и мало меняется от года к году.
Но давайте помнить, что это опрос исключительно по подписчикам нашего канала. В целом по энтерпрайзу картина более консервативная, и там старые версии ещё очень активно используются. Например, согласно опросу Азула проценты такие:
• Java 6 – 10% (да-да, Java 6)
• Java 7 – 13%
• Java 8 – 23%
• Java 11 – 23%
• Java 17 – 34%
• Java 21 – 31%
Вообще в западном энтерпрайзе много чего по-другому, чем у нас. Например, там за Java Support платят 85% компаний. То есть подавляющее большинство. Сколько компаний платят у нас?
👏7 7 3