2021-12-21 09:00:21
Два доклада с Joker 2021
Алексей Нестеров, Олег Докука — Что нового в Spring Framework 6 (1:10:58)
Оба спикера никак не связаны со спрингом, просто обсуждают слухи о нововведениях.
Spring 6 использует java 17 и не будет работать на версиях ниже.
Дата выхода - октябрь 2022.
Кодовая база Spring 6 использует модули (фича java 9). Можно скомпилировать только нужные модули, и итоговый проект займёт меньше места.
Spring Native переедет в Spring Boot 3.
Spring будет связывать некоторые бины на этапе сборки, а не в рантайме. Это ускорит запуск приложений и потребление памяти.
Поменяются имена некоторых модулей. Например, пакет
javax.* станет
jakarta.*
В Spring WebFlux добавится поддержка
HTTPClient из JDK 11.
Что удалится: Hessian, Http Invoker, JMS Invoker, JAX-WS, SecurityManager.
Что удалится, но менее вероятно: поддержка Joda Time, RxJava 1/2, FactoryBean, Autowired через сеттеры, конфигурация через XML.
Зачем смотреть: незачем. Информация недостоверная, много догадок, мало деталей.
Иван Крылов — От 11 к 17 версии Java (55:07)
Это доклад НЕ про новые фичи языка. Про sealed классы, records и switch спикер отсылает на доклад Тагира Валеева Java 17 для тех, кто в танке.
Два подхода к обновлению версии java в проекте:
1) Каждые полгода переходить на новую версию
Вариант подойдёт для проектов, где релизы происходят часто — каждый месяц или два. Или жизненный цикл проекта — это основной релиз и поддержка нескольких следующих релизов.
Плюс — всегда новая и поддерживаемая версия java
Минус — раз в полгода тратить несколько спринтов на переход
2) Переходить только на LTS версию
Встречается в проектах с редкими релизами — реже, чем раз в полгода.
Минус — переход всегда долгий и трудный, оттягивается до последнего.
Переезд на java 17 — это необходимость. Дело не в новых фичах, а в том, что поддержка старых версий ограничена и периодически прекращается. Миграция с 8 до 17 сложная, с 11 до 17 попроще.
С чем могут быть проблемы при переходе
Удалены финалайзеры из
FileOutputStream,
FileInputStream,
zip.Deflater, zip.Inflater, zip.ZipFile, color.ICC_Profile. Это связано с предстоящим удалением финалайзеров в java 18.
Удалён конструктор
URLDecoder.
Многие классы в AWT и Swing поменяли видимость.
Удалён Applet API.
Изменения виртуальной машины
GraalVM больше не связан с OpenJDK. Причина — административные проблемы и сложности с версионированием относительно OpenJDK.
Удалена оптимизация biased locking из-за плохой совместимости с Project Loom.
Добавлены CDS архивы для уменьшения времени старта VM.
Гибкий metaspace.
Изменения в сборщиках мусора
Удалён CMS.
ZGC готов к использованию в продакшене с 15 версии, в ранних версиях очень много багов.
G1 и Shenandoah возвращают неиспользуемую память ОС. Это уменьшает потребляемую память сервиса, и сервисы в облачной среде обойдутся дешевле.
Изменения в JDK
Классы по работе с TCP и UDP работают быстрее —
DatagramSocketAPI,
SocketAPI.
NullPointerException показывают больше информации.
Новый генератор случайных чисел.
Изменения Security
Добавлены Root сертификаты с разным сроком действия
Удалён
SecurityManager
Удалены модули
java.security, java.rmi.activation
Платформы
Добавилась поддержка Linux Alpine. ОС полезна для маленьких контейнеров в облаках. В ОС меньше команд, поэтому она более безопасна. Если маленькие контейнеры не нужны, то лучше выбрать другую ОС.
Полная поддержка ARM: унифицированный Linux порт, Windows, macOS
Какие проекты не успели войти в java 17
Loom: легковесные потоки в JVM
Panama: работа с нативным кодом, альтернатива JNI
Valhalla: новые типы данных value types — функциональные как классы и компактные как примитивы
Зачем смотреть: незачем. Большую часть видео перечисляются неязыковые фичи между 11 и 17 версией. О них говорят редко, так что для кого-то информация окажется новой. Но с тем же успехом можно посмотреть полный список фич и поискать слова, которые актуальны для вашего проекта или интересны лично вам.
2.0K views06:00