microJUG – Telegram
microJUG
981 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
А давайте кстати сверим результаты с 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
Будет ли вам интересно, если я сюда буду кидать ссылки на интересные доклады? Вот, например, доклад Тагира Валеева про трансляцию switch в байт-код. Мне кажется, у него незаслуженно мало просмотров, хотя доклад очень познавательный и полезный.
Стоит ли постить ссылки на доклады?
Final Results
95%
Да
5%
Нет
Похоже, в скором будущем ZGC станет production ready. Появился новый черновик JEP.
Похоже, Nashorn (движок JS) скоро уберут из JDK. Он стал deprecated в Java 11, а теперь его хотят выбросить совсем. Причина очень банальная: никто не изъявил желание его поддерживать.
Таким образом, они хотят убрать единственный движок JS из JDK, и все приложения, использующие JS, перестанут работать. И знаете что? Я даже не удивлюсь, если они реально возьмут и сделают это. Вспомните, например, как просто выкосили Java EE в Java 11. А чем JS лучше?
А вы используете Nashorn или любой другой JavaScript движок в Java (Rhino, Graal.js...)?
Anonymous Poll
14%
Да
86%
Нет
Вчера на конференции SnowOne узнал об очень интересной библиотеке, которая позволяет использовать синтаксис Java 9-14 и компилировать его в Java 8. Библиотека называется Jabel и создана нашим соотечественником Сергеем Егоровым. Поддерживается всё кроме рекордов (их поддержка запланирована на ближайшее будущее). По сути Jabel это агент, который инструментирует пару классов в компиляторе javac и заставляет его "думать", что все фичи выше 9+ относятся к 8-й версии. И всё. Весь код плагина занимает всего около 150 строк! Плагин хорошо работает в Идее. Если ещё включить нужную инспекцию, то можно также обезопасить себя от использования API, которое появилось позже Java 8 (например, StackWalker).