Как стать автором
Обновить

Комментарии 3

boolean isThereAneedle = stringsList.stream() .anyMatch((@NonNull var s) -> s.equals(“needle”));

Что интересно (частность), даже в Java 17 ещё нельзя поставить var вместо PhoneNumber в выражении с переменной COMPARATOR:

Comparator<PhoneNumber> COMPARATOR = Comparator.comparingInt((PhoneNumber pn) -> pn.areaCode) .thenComparingInt(pn -> pn.prefix);

Map<String, List<MyDtoType>> myMap = new HashMap<String, List<MyDtoType>>();

В java 8 вы скорее напишите Map<String, List<MyDtoType>> myMap = new HashMap<>();, приведённый в статье способ -- это этоха 1.5/1.6.

Мне нравится потенциальная возможность перехода на 17, но по реальным ощущениям вы нарвётесь на необходимость использования --add-opens в каком-то количестве, практическую невозможность использования JPMS (например, если где-нибудь в зависимостях закралась guava, которая транзитивно тащит jsr305 с аннотациями в javax.annotation) и т. п.

Apache Maven 3.6.x, Gradle 6.x, всякие плагины с неистовой любовью к xml типа maven-jaxb2-plugin, некоторые annotation processor'ы, библиотеки сериализации, использующие defineClass и т. п. радостно разваливаются при запуске под 17. Рано или поздно это, конечно, пройдёт, но переход безболезненный только в тривиальных случаях.

В реальности -- надо пробовать и тестировать. В том числе гонять свои приложения под нагрузкой на 17, смотреть как реально поведёт себя ZGC/Shenandoah, если вы до этого жили с CMS. Если у вас используется jni/jna/jnr-ffi, kryo или какой-нибудь offheap, смириться с возможной болью и потихоньку сменить рантайм.

В исходниках версию с 1.8/11 поднять всегда успеете, вслепую прыгать дальше 11, имхо, не стоит. Легче отскочить на 11 при наличии проблем.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.