microJUG – Telegram
microJUG
978 subscribers
155 photos
1 video
2 files
237 links
Мысли о Java.
Основной канал: @miniJUG
Буст: https://news.1rj.ru/str/microJUG?boost
Чат: https://news.1rj.ru/str/micro_JUG
Таблица JEP'ов: https://minijug.org/jeps.html
Download Telegram
Первый JEP в проекте Leyden! Ahead-of-Time Class Loading & Linking
#leyden
82🔥1🤯1
Вышла IntelliJ IDEA 2024.2. Новый UI теперь стал дефолтным, а старый UI теперь нельзя включить в настройках. Но можно установить через плагин в JetBrains Marketplace.
#idea
💩23👏9😁6👍4😭43🔥1🤮1
Вышел Hibernate 6.6.0 Final.

Главная фишка – поддержка нового стандарта 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
🔥95👍5💩3👌1
😎 В Java 23 можно будет писать 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
👀1413👎10😁8🔥3🥴32
Похоже, что Lilliput скоро попадёт в мейнстрим OpenJDK. Роман Кеннке засабмитил пулл-реквест, который имплементирует JEP 450: Compact Object Headers (Experimental). Если пулл-реквест будет одобрен, то можно будет включать сжатые заголовки с помощью ключа -XX:+UseCompactObjectHeaders. Правда пока это будут 64-битные заголовки, а не 32-битные (они будут следующим этапом). Но это всё равно отлично.
Если всё будет хорошо, то Lilliput попадёт в Java 24.
#lilliput
129🔥6
Вышла IntelliJ IDEA 2024.2.1 с поддержкой Java 23.
#intellijidea
1654🤡3👌2👍1👎1😭1
Таблица JEP'ов на сайте теперь в формате SVG!
13🔥7🥱3👍2
⌨️ Завтра что-то будет
Please open Telegram to view this post
VIEW IN TELEGRAM
129👌5🌚2👀2🎉1
Начиная с Java 23, GraalVM JIT включён в Oracle JDK в качестве альтернативы другим JIT-компиляторам (C2, C1):
-XX:+UnlockExperimentalVMOptions -XX:+UseGraalJIT

К сожалению, он включён только в Oracle JDK, но не в OpenJDK.

#graalvm
9😢6😭21🥴1
Пришла аналитика рынка от икспертов)))
Скриним
#jetbrains
😁22🤡9🔥2💯1
Появился новый черновик JEP: Treat Loop Variables as Effectively Final in the Bodies of All for() Loops.

Он сделает компилируемым вот такой код:
for (int i = 1; i <= 3; i++) {
Runnable r = () -> System.out.println(i);
}


Пулл-реквест уже создан на гитхабе и должен быть смёржен в мастер. То есть возможно мы сможем использовать эту фичу в Java 24.

#java24
168🔥3👍1👌1
Podlodka Java Crew возвращается с новой темой — Асинхронной архитектурой, чтобы помочь Java-разработчикам освоить самые востребованные подходы и инструменты.

Пять дней насыщенной программы, сессии утром и вечером.

Погружаемся в асинхронность вместе:

- Рулетка кейсов: "Spring, Micronaut, Quarkus и Helidon" — Григорий Кошелев и Андрей Когунь о плюсах и минусах каждого фреймворка 🛠
- "Проектирование Event Driven-систем с DDD и Event Storming" — Кирилл Ветчинкин расскажет, как создавать масштабируемые и управляемые системы 📈
- Воркшоп "Apache EventMesh на практике" — Павел Бодячевский поможет внедрить Event Mesh в проект 🎯
- "Debezium: окно в асинхронный мир данных" — Евгений Ефименко раскроет секреты работы с данными в реальном времени 🔄

Присоединяйтесь, чтобы освоить асинхронность на практике: https://podlodka.io/javacrew
🔥3🤮21👍1
microJUG
Lilliput смёржен в JDK 24. Ждём билда, чтобы можно было потестить. #lilliput
Lilliput попал в последний билд 24 OpenJDK. Комбинация ключей -XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders теперь работает.

Также в этот билд попал JEP 491: Synchronize Virtual Threads without Pinning.

Можно деплоить в прод.

#lilliput #loom
🎉221310🔥1😁1🆒1
Старайтесь избегать ветки default в 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🔥55🤡3
Новости по поводу Simple Source Files and Instance Main Methods (которые в Java 24 будут в четвёртом превью).

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.
💩11741
Что будет послезавтра?

⌨️
Please open Telegram to view this post
VIEW IN TELEGRAM
256🔥2🤔1
3
Ежегодный опрос. Какую версию(-и) 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
11