Будут ли языковые изменения в Java 16?
В Java 16 принципиально новых языковых фич, скорее всего, не будет. Но будут небольшие изменения в существующих.
Во-первых, pattern matching for instanceof станет стабильной фичей (я крайне сомневаюсь, что будет третье превью, хотя на 100% это не исключено). Изменения будут следующими:
• Переменные паттернов не будут неявно final. Это сделает их согласованными с обычными переменными и параметрами методов/лямбд. То есть можно будет написать:
Во-вторых, записи тоже станут стабильной фичей (и тоже третье превью маловероятно). Изменение будет только одно: предлагается разрешить объявлять статические члены во вложенных классах:
#java16 #records
В Java 16 принципиально новых языковых фич, скорее всего, не будет. Но будут небольшие изменения в существующих.
Во-первых, pattern matching for instanceof станет стабильной фичей (я крайне сомневаюсь, что будет третье превью, хотя на 100% это не исключено). Изменения будут следующими:
• Переменные паттернов не будут неявно final. Это сделает их согласованными с обычными переменными и параметрами методов/лямбд. То есть можно будет написать:
if (x instanceof String s) {
s = "abc"; // В Java 15 ошибка компиляции, в 16 - OK
}
• Предлагается запретить делать такие тесты, в которых тип выражения является подклассом типом паттерна. Например:String x = "abc";
if (x instanceof String s) { // ошибка компиляции
...
}
Имхо, это плохое ограничение, и я против его введения (потому что будет несогласованность с обычным instanceof, где так можно делать).Во-вторых, записи тоже станут стабильной фичей (и тоже третье превью маловероятно). Изменение будет только одно: предлагается разрешить объявлять статические члены во вложенных классах:
class A {
class B {
static void foo() { // OK
...
}
}
}#java16 #records
microJUG
Java будет выдавать предупреждения при попытке засинхронизоваться на классах, которые являются кандидатами в inline-типы. Это Integer, Double, Long, Version, Optional, LocalDate, LocalTime, ProcessHandle и другие. Предупреждение будет как во время компиляции…
Value-типы хотят переименовать во второй раз🤦♂️. Теперь это будут не inline-типы, а примитивные типы.
#valhalla
#valhalla
Какой вариант сравнения nullable переменной с константой вы предпочитаете?
Final Results
11%
if (nullable != null && nullable.equals(CONST))
66%
if (CONST.equals(nullable))
22%
if (Objects.equals(nullable, CONST))
1%
Свой вариант (напишу в комментариях)
microJUG
Shenandoah попадёт в JDK 11.0.9. Релиз выйдет 20 октября 2020 года. #shenandoah
Походу, они обосрались, и не включили Shenandoah в AdoptOpenJDK 11.0.9.
P.S. Shenandoah есть в Azul Zulu и, само собой, в редхатовской сборке.
#shenandoah
P.S. Shenandoah есть в Azul Zulu и, само собой, в редхатовской сборке.
#shenandoah
Как позвать protected метод у класса в чужом пакете? Ловите простой трюк. Просто переопределяем метод в анонимном классе, и сразу же вызываем его на этом объекте:
new ClassWithProtectedMethod() {
@Override
protected void method() {
super.method();
}
}.method();
Заметьте, что метод даже не пришлось делать public.В Java 16 появится метод
Кроме того, между всеми тремя способами есть различия:
•
•
•
#java16 #stream
Stream.toList(), который позволит конвертировать Stream в список. Сейчас это можно сделать с помощью Stream.collect(Collectors.toList()) и Stream.collect(Collectors.toUnmodifiableList()), однако toList() будет не только короче, но и эффективнее, поскольку не будет создавать никаких промежуточных массивов.Кроме того, между всеми тремя способами есть различия:
•
collect(Collectors.toList()) не гарантирует неизменяемость, позволяет нули (по факту возвращает ArrayList)•
collect(Collectors.toUnmodifiableList()) гарантирует неизменяемость, не позволяет нули•
toList() гарантирует неизменяемость, позволяет нули (по факту возвращает неизменяемый список)#java16 #stream
В сборщике мусора Shenandoah появится конкурентная обработка слабых ссылок (в т.ч. финализаторов). Это значит, что теперь использование слабых ссылок и finalize() не будет влиять на паузы GC. Изменение попадёт в Java 16.
#shenandoah #java16
#shenandoah #java16
This media is not supported in your browser
VIEW IN TELEGRAM
Когда проверяешь, как там поживает твой билд, и радуешься, что пока не упало ни одного теста
#юмор
#юмор
microJUG
https://youtu.be/NXh98XRi2is #ТагирВалеев
JUG. ru выложил остатки видео с JPoint 2020.
Пишите в комментах, какие доклады стоит посмотреть.
#jpoint
Пишите в комментах, какие доклады стоит посмотреть.
#jpoint
YouTube
JPoint 2020: открытый плейлист
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
Ух ты, в IntelliJ IDEA появился встроенный калькулятор
#IntelliJIDEA
#IntelliJIDEA
Ахах, Тагир научно доказывает, почему у Путина всё-таки два разных кабинета))
Twitter
Tagir Valeev
Любопытно, что в реплаях многие утверждают, будто подобное изменение картинки возможно, при изменении ракурса съёмки. Вот вам азов геометрии тред. https://t.co/AEW1wKlcI0
Какую сборку JDK вы используете? (можно отмечать несколько)
#опрос
#опрос
Final Results
25%
Oracle JDK (oracle.com)
42%
Oracle OpenJDK (jdk.java.net)
33%
AdoptOpenJDK (adoptopenjdk.net)
2%
Debian OpenJDK (debian.org)
14%
Liberica JDK (bell-sw.com)
6%
Red Hat OpenJDK (redhat.com)
10%
Azul Zulu (azul.com)
2%
IBM J9 / OpenJ9 (ibm.com)
6%
Amazon Corretto (amazon.com)
3%
Другое (напишу в комментах)