microJUG
984 subscribers
156 photos
1 video
2 files
239 links
Мысли о Java.
Основной канал: @miniJUG
Буст: https://t.iss.one/microJUG?boost
Чат: https://t.iss.one/micro_JUG
Таблица JEP'ов: https://minijug.org/jeps.html
Download Telegram
📆 Приблизительный план выхода preview-фич в JDK:

JDK 19 (2022):
Template strings (Amber)

JDK 20 (2023):
Deconstruction patterns (Amber)
Virtual threads (Loom)
Structured concurrency API (Loom)
Value classes (Valhalla)

JDK 21 (2023):
Primitive classes (Valhalla)
Universal generics (Valhalla)
Vector API (Panama)

2024:
• More structured concurrency (Loom)
• More/custom patterns (Amber)

2025:
Specialized generics (Valhalla)

P.S. Это личные догадки Николая Парлога, никаких гарантий, что именно так и будет.

#valhalla #loom #amber #panama #java19 #java20 #java21
👍91👏1
Pattern matching for switch стало первой языковой конструкцией, которой не хватило два preview. В Java 19 будет третье preview. Неудивительно, ведь это очень сложная языковая фича с большим количеством краевых случаев.

В третьем preview предлагается заменить && в guarded patterns на when (расскажу подробней в еженедельном выпуске miniJUG).

#java19
👍12
🥳 Виртуальные треды попали в mainline JDK. И они уже присутствуют в ранней сборке JDK 19 build 22.
Так что уже можете скачивать и экспериментировать.

#loom #java19
🔥14🎉3
Забавная ситуация наблюдается с релизом JDK 19: почти все JEP'ы в них либо превью, либо инкубатор. То есть будет много новых фич, но все они только для того, чтобы поиграться, но не для продакшена. Из стабильных только JEP 422: Linux/RISC-V Port, но я не думаю, что кто-то из читателей этого канала использует такую архитектуру. Все остальные JEP'ы нестабильные:

JEP 405: Record Patterns (Preview)
JEP 424: Foreign Function & Memory API (Preview)
JEP 425: Virtual Threads (Preview)
JEP 426: Vector API (Fourth Incubator)
JEP 427: Pattern Matching for switch (Third Preview)

Также возможно успеет попасть JEP 428: Structured Concurrency (Incubator), и он тоже инкубатор.

PS. Зато нас похоже ждёт вкусный LTS-релиз Java 21, где будет стабильный Loom, паттерн-матчинг и FFI.

#java19
9😱1
В Java 19 наконец-то появятся методы, которые создают HashMap и HashSet с достаточным размером, чтобы туда поместилось n-ое количество элементов. Это будут следующие статические методы:

HashMap.newHashMap(int)
HashSet.newHashSet(int)
LinkedHashMap.newLinkedHashMap(int)
LinkedHashSet.newLinkedHashSet(int)

Да, у HashMap есть конструктор HashMap(int initialCapacity), но это не то же самое: этот конструктор создаёт лишь хеш-таблицу с нужной ёмкостью, а не с ожидаемым количеством элементов. Таблица расширится, если будет достигнут предел заполняемости (load factor), который по умолчанию равен 75%. Другими словами, если на пальцах, то HashMap.newHashMap(n) == new HashMap(n / 0.75).

#java19
👍15🤔4👏1🎉1
🤯 Данный код является валидным кодом на Java 19+ и компилируется.

Почему так:
1. Первый When – это имя класса.
2. Второй when – имя переменной (имеет тип When).
3. Третий when – это новое ключевое слово в Java 19, которое является контекстно-зависимым.
4. Четвёртый when – это имя переменной, которая была объявлена (см. пункт 2).
5. Пятый when() – метод класса When, возвращающий boolean.
6. Шестой when() – метод текущего класса.

#java19
🤯29👍5😁5😱3👎1
Полезное улучшение в Java 19: отдельная страница поиска по JavaDoc'у. До Java 19 можно было вводить строку поиска только в выпадающем меню. А сейчас можно, например, скинуть коллеге ссылку со строкой запроса: https://docs.oracle.com/en/java/javase/19/docs/api/search.html?q=map%20copyof.
Кроме того, теперь можно искать по нескольким словам. Например, если ввести "map copyof", то JavaDoc найдёт все сигнатуры, где встречаются и map, и copyof.

#java19 #javadoc
👍12👌1
Результаты опроса и выводы:
• Java 17 вырвалась вперёд и обогнала Java 11 🥳.
• Java 18 и 19 заметно выросли, но процент всё ещё ничтожен (никто не хочет юзать STS-релизы).
• Java 8 постепенно умирает.
• Kotlin показывает стабильный рост. Но мне кажется, что это из-за того что грэдлисты переходят с Groovy на Kotlin DSL. Но могу ошибаться. Напишите в комментах, для чего вы юзаете Kotlin (основной язык / Kotlin DSL / Android).
#java8 #java11 #java17 #java18 #java19 #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉6👍2🤔2