📆 Приблизительный план выхода 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
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
👍9❤1👏1
Pattern matching for switch стало первой языковой конструкцией, которой не хватило два preview. В Java 19 будет третье preview. Неудивительно, ведь это очень сложная языковая фича с большим количеством краевых случаев.
В третьем preview предлагается заменить && в guarded patterns на when (расскажу подробней в еженедельном выпуске miniJUG).
#java19
В третьем preview предлагается заменить && в guarded patterns на when (расскажу подробней в еженедельном выпуске miniJUG).
#java19
👍12
🥳 Виртуальные треды попали в mainline JDK. И они уже присутствуют в ранней сборке JDK 19 build 22.
Так что уже можете скачивать и экспериментировать.
#loom #java19
Так что уже можете скачивать и экспериментировать.
#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
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-ое количество элементов. Это будут следующие статические методы:
•
#java19
•
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
Почему так:
2. Второй when – имя переменной (имеет тип When).
3. Третий when – это новое ключевое слово в Java 19, которое является контекстно-зависимым.
4. Четвёртый when – это имя переменной, которая была объявлена (см. пункт 2).
5. Пятый when() – метод класса When, возвращающий boolean.
6. Шестой when() – метод текущего класса.
🤯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
Кроме того, теперь можно искать по нескольким словам. Например, если ввести "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
• 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