Наконец-то, спустя долгие годы ожидания, сегодня, 19 сентября, выходит Java 21, в которой наши мечты были исполнены, а обещания от оракла выполнены. Такого масштабного обновления не было со времён Java 8.
Итак, в релиз выходят и запускаются без всякой ебли с --enable-preview, а значит вы сможете всё это потрогать в реальной работе:
— LOOM!!!
— Pattern Matching: технически это несколько JEP и несколько фич, но логически это одно цельное изменение языка, которое добавляет возможность гораздо более удобно сравнивать данные с образцом; — вместе со всем сахаром, что так и напрашивается в сырых конструкциях сопоставления. На выходе мы имеем instanceof Integer integer, его навороченный брат instanceof Point(A x, B y) и новый switch с красивым java-style синтаксисом, который может проходиться по всему, что душе угодно: по иерархии наследования, по строкам, числам и енумам, но блядь не по булинам, с оптимизациями до O(1) и отдельным синтаксисом для частных случаев типа рекордов.
— Мало кто знает, но наши мольбы о .getLast() в List<T> были услышаны. Это JEP-433: Sequenced Collections, и реализован он был так, как завещали прародители Java в своих идеалах — основательно, абстрактно и продуманно: нам не просто сделали .getLast() в один-единственный List<T>, нам запилили целый интерфейс SequencedCollections, который добавляет целых 7 новых методов во все последовательные коллекции в Java, такие как ArrayDeque или, например, LinkedHashSet.
Но это ещё не всё! Следующие фичи выходят в превью:
— Structured Concurrency — новый способ асинхронного выполнения задач, с гораздо большим контролем над ходом выполнения, чем в стандартной неструктурированной java.util.concurrent. Больше никаких бессонных ночей из-за запечатанного в Future<Void> исключения.
— Scoped Value — более гибкий и удобный ThreadLocal. Можно настраивать время жизни, принадлежность к потокам, разграничивать изменяемость, и ещё туева хуча примочек. Вместе со структурированным параллелизмом и Loom изменяет до неузнаваемости модель многопоточности в Java, выводя её на новый уровень. И всё это возможно благодаря тому, что разработчики Java не бегают за модными трендами, а основательно подходят к каждому вопросу.
— String Interpolation. Да, теперь можно вставлять переменные (и не только, всё что угодно!) внутрь строк. И это сделано безопасно, с гарантиями сохранения обратной совместимости и с заделом на улучшение в будущем. Настолько же качественных аналогов в других языках нет.
— Unnamed Classes and Instance Main Methods — Брайану Гетцу принесли распечатанный на бумажке мем со сравнением Hello World в петухоне и в джаве, и 10 лет у него горел с этого пердак, пока он не придумал гениальное решение — сделать бесполезный синтаксис для хелло-ворлда, чтобы показать петухоноблядям, чьё место у параши. Теперь можно писать хелло-ворлд в однутри строчки.
Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki
Предыдущий тред:




















