microJUG – Telegram
microJUG
982 subscribers
155 photos
1 video
2 files
237 links
Мысли о Java.
Основной канал: @miniJUG
Буст: https://news.1rj.ru/str/microJUG?boost
Чат: https://news.1rj.ru/str/micro_JUG
Таблица JEP'ов: https://minijug.org/jeps.html
Download Telegram
Channel photo updated
Вышла IntelliJ IDEA 2020.1 EAP (Early Access Program) с начальной (но уже приличной) поддержкой записей и паттерн-матчинга для instanceof. А ещё из интересного: можно скачать JDK прямо из IDE.
Большинство из нас ещё использует Java 8. А вы ни разу не задавались вопросом, сколько она ещё будет поддерживаться? Если вы не клиент Oracle и используете OpenJDK, то ответ – до июня 2023 года. Именно такой срок поддержки объявлен RedHat'ом, который руководит обновлениями OpenJDK 8.
Кстати, если вам нужен список всех возможных дистрибутивов JDK со ссылками на скачивание, то его можно найти здесь. Кажется, что в этом списке собрано вообще всё. Тут есть Oracle JDK (начиная с JDK 1.1), Oracle OpenJDK, AdoptOpenJDK, IBM J9, RedHat OpenJDK и т.д. Есть даже JetBrains Runtime. Некоторые из них я сам вижу впервые (например, Alibaba Dragonwell и Pivotal Spring Runtime).
📬 На какие списки рассылок OpenJDK подписаться, чтобы быть в курсе событий?

Вот мой TOP 5:
jdk-dev – обсуждение самых разнообразных тем, касающихся JDK. Здесь же объявляются все новые JEP'ы.
core-libs-dev – обсуждение стандартной библиотеки, багов в ней, добавление новых API.
compiler-dev – компилятор javac.
amber-spec-observers – пожалуй, самый интересный список рассылки. Здесь члены экспертной группы обсуждают новые языковые возможности.
amber-dev – это про то же самое, но здесь больше обсуждают конкретную реализацию этих возможностей в JDK (баги, несоответствие спецификации и реализации и т.п.). В общем, граница размыта, так что лучше подписаться на оба.
А вот это действительно прикольно. Теперь IDEA применяет Data Flow Analysis прямо к "живым" данным во время отладки: https://blog.jetbrains.com/idea/2020/01/dfa-debugger/
Подъехали результаты ежегодного технологического опроса от JRebel.
• Java 8 всё ещё сильно доминирует со своими 58%. Но 28% уже использует Java 11 и выше, что не может не радовать.
• Доля Eclipse совсем упала: 24% против 82% у Идеи.
• Gradle и Maven примерно наравне (47% и 44%).
А давайте кстати сверим результаты с JRebel'овскими. Мы ведь тоже можем тут голосовать. Какие языки используете?
Final Results
7%
Java 7 или более старые
70%
Java 8
2%
Java 9/10
32%
Java 11
13%
Java 12 или выше
10%
Groovy
7%
Scala
21%
Kotlin
Build tools
Final Results
41%
Gradle
70%
Maven
8%
Ant
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");

for (String str : list) {
if (str.equals("2")) {
list.remove(str);
}
}

System.out.println(list);
Что произойдёт, если запустить код выше?
Final Results
66%
ConcurrentModificationException
34%
Будет выведено [1, 3]
Многие проголосовали за первый вариант, справедливо полагая, что удаление из ArrayList во время итерирования должно выбрасывать исключение. Но в данном случае ConcurrentModificationException не выбрасывается из-за бага. Такой баг проявляется, только если удалять предпоследний элемент. Кстати, баг чинить не будут.
Ух ты, --illegal-access=deny будет по умолчанию в Java 16. Так сказал Марк Рейнолд на конференции JFokus. Это значит, что любителям setAccessible(true) придётся включать ключик, чтобы их программа продолжала работать.
Ребята, Helpful NullPointerExceptions в Java 14 – пушка! Включаются ключом -XX:+ShowCodeDetailsInExceptionMessages
Появился новый черновик JEP для instanceof. Разница со старым – добавили deconstruction patterns:

record Point(int x, int y) {}

if (obj instanceof Point(var a, var b)) {
System.out.println(a+b);
}


Но пока, похоже, это будет работать только для записей. В любом случае, хорошо, что всё по-маленьку движется в сторону полноценного паттерн-матчинга.
Не знаю как вам, а мне идея нравится! Добавить в язык стандартную аннотацию @Language, чтобы можно было указывать тип языка в блоках текста. Представляете, писать какой-нибудь SQL прямо внутри литерала, а там будет автокомплит, подсветка, валидация...
Тут меня справедливо поправили, что всё это в IntelliJ IDEA уже давно есть. И даже есть аннотация @Language. Правда она нестандартная. Но ещё можно использовать комментарий //language=<language_ID>, если не хочется тащить библиотеку ради аннотации.
Тут люди обсуждают, как бы упростить синтаксис if (!(x instanceof String y)), а Тагир просто взял и реализовал это в IDEA безо всяких изменений языка. Удивительно, что до такой простейшей вещи не додумались раньше.
Может, немного поздновато, но на всякий случай информирую, что на YouTube появились видео докладов с Joker 2019.
#joker