🍑 В Java 19 в сентябре 2022 добавили несколько интересных штук (опять в режиме превью)
- Паттерны записей (o instanceof Point(int x, int y) {})
- В паттерн-матчинг switch - охранные паттерны && были заменены на условия when (было case Integer x && x > 0 -> …; стало case Integer x when x > 0 -> …;) и null матчится категорически только в ветке case null
- Виртуальные потоки
- Foreign Function & Memory API
🥭 В Java 20 в марте 2023 содержала в основном различные улучшения всего, что было добавлено в Java 19.
🥝 В сентябре 2023 вышла Java 21, в ней из заметного:
- Наконец добавили в основную версию виртуальные потоки, паттерны записей и паттерн-матчинг switch,
- Добавили (естественно как превью) строковые шаблоны (например: String str = STR."\{x} is the capital of \{y}";) и безымянные переменные и паттерны (чтоб не придумывать имена),
- Также теперь (в режиме превью) можно запускать программы с методами main(), которые не являются public static и у которых нет параметра String[] args
- Также были сделаны изменения относительно сборщика мусора, шифрования и прочие.
🍒 Следующая версия - Java 22 - вышла в марте 2024 года, и вот что интересного там добавилось:
- Безымянные переменные включили в основную версию (переменная, которая обозначена автором как неиспользуемая и обозначаемая символом подчёркивания (_))Также был сделан ряд прочих изменений, не столь заметных.
- Стало возможным в режиме превью писать инструкции кода в конструкторе перед явным вызовом конструктора (super() или this())
- Теперь можно запускать программы, состоящие из нескольких исходных файлов Java (это развитие фичи из Java 11 - где стало можно запускать исходные файлы без компиляции >java Main.java - теперь Main может содержать вызовы методов других классов и это не приведет к ошибке).
Вот, собственно, и вся история!
Хотя, погодите, на носу сентябрь, а это значит, что буквально через месяц нас ждет новая Java 23 🥳.
Судя по всему, все новшества там ожидаются в режиме превью - в частности добавятся примитивы в шаблоны instanceof и switch и появится возможность импорта целого модуля (import module M).
Но это уже совсем другая история!
🍀
Post #14
388
- 👍 5