microJUG – Telegram
microJUG
979 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
К сожалению, паттерны деконструкции для записей не появятся в Java 15. Об этом было написано в рассылке, а соответствующая секция была убрана из JEP'а.
Как сказал Gavin Bierman, там есть некоторые сложности с дженериками и varargs, и нужно ещё время, чтобы подумать над дизайном.
Это значит, что в Java 15 изменений в паттерн-матчинге не будет.
Решил составить список русскоязычных Telegram-каналов про Java. Добавил туда те каналы, про которые знаю сам. Но наверняка есть ещё. Если вы знаете, то напишите в комментариях, чтобы я добавил.

P.S. Про чаты писать не нужно, только каналы.
Скинули мне тут пару Telegram-каналов для добавления в список. Спасибо за это. Но я посмотрел на один из них и ужаснулся. Вот такой тест там. Я, будучи абсолютно уверенным, что правильный вариант четвёртый, проголосовал за него. Но правильным ответом по мнению автора должен быть второй. А теперь открываем javadoc к HashMap и читаем:
This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.
Порядок элементов в HashMap не гарантирован. Точка.
Да, де факто там выделяется массив такой длины, что числа 10, 20 и 30 выстроятся по порядку. Но это деталь реализации. Сегодня она такая, завтра другая. И эта деталь скрыта от нас, чтобы всегда была возможность оптимизировать, не ломая обратную совместимость. А если кто завяжется на порядок, то он рискует, что у него это сломается в какой-нибудь Java 18 или Java 88.
А ведь это Телеграм-канал с 3k подписчиков! Они прочитают это, и кто-то начнёт вызывать new HashMap с initialCapacity, чтобы гарантировать порядок вставки! А те кто поумнее, даже не смогут возразить, потому что это канал и он работает в одну сторону. Как телевизор. Напоминает Первый Канал, который в прайм-тайме на полном серьёзе рассказывает про то, что Билл Гейтс создал коронавирус, чтобы заработать на вакцине.
Кстати, это касается и моего канала. Если вы видите, что я написал откровенный бред, то обязательно напишите мне и укажите на ошибку! Написать мне можно в Твиттере.
Хорошая новость! Sealed Classes & Interfaces попадут в Java 15! Ещё не 100%, но в JEP'е стоит Proposed to Target, а это означает, что почти наверняка.
#sealed
Рон Пресслер (лидер проекта Loom) выложил документ State of Loom. Есть что почитать на выходных.
#loom
К Java 16 OpenJDK полностью переедет на Git и на GitHub (кроме 8u)
#java16 #skara
Тут появилась новость о планах на C# 9.0. В нём появятся записи! Выглядеть будет примерно так:
public data class Person(string FirstName, string LastName);

И ещё много интересного. Например, target types:
Point p = new (3, 5);

Top-level programs:
using System;

Console.WriteLine("Hello World!");

Covariant returns:
abstract class Animal
{
public abstract Food GetFood();
}
class Tiger : Animal
{
public override Meat GetFood() => ...;
}
Удивительно, что эту фичу добавляют так поздно. В Java она присутствует с 1.5!

Конечно прикольно, что нововведений много. Но не кажется ли вам, что в C# с каждым релизом становится всё больше и больше избыточного синтаксического сахара? У меня от C# примерно такие же ощущения, как от Котлина. В обоих языках просто перебор сахара. Как будто сожрал целую банку мёда.
Ушёл писать Notepad драйвер для slf4j... https://twitter.com/nikitonsky/status/1265268383777460224
#юмор
В 12:00 по МСК сегодня будет беседа в прямом эфире с Тагиром Валеевым. Он кстати недавно стал Java-чемпионом. Тагир расскажет про свой доклад для JPoint 2020 и обсудит киллер-фичи в IntelliJ IDEA и в новых версиях Java.
Недавно вышло неплохое интервью с Сергеем Куксенко. Рекомендую послушать. Мне, например, понравилось его объяснение того, почему убирают biased locking. Я знаю, что многие были в недоумении, когда узнали, что его отключают по умолчанию в Java 15. Но под этим есть вполне чёткие основания. И это не просто потому, что biased locking значительно усложняет код и его поддержку. Но и потому, что у некоторых очень популярных инструментов он вообще давным-давно отключен, потому что без него производительность становится выше! Например, в Кассандре.
Внезапно узнал, что Rhino (движок для JavaScript) не только не умер, но и активно развивается. Можно использовать в качестве замены Nashorn, который исчезнет в Java 15.
#javanoscript #rhino
Нашёл очень полезный сайт, в котором удобно и компактно собрана информация о всех релизах Java начиная с 1.0. Со всеми ссылками на документацию, спецификации, Release Notes. Также можно посмотреть различия в API между версиями.
А ещё есть песочницы для запуска сниппетов на различных версиях Java, чтобы можно было потестить те или иные языковые фичи.
Если бы Яндекс был Java-поисковиком
#юмор
Новые API в Java 16!
#юмор
uH4Yu.png
137.2 KB
Как скачать Java?
2017: Просто заходим на сайт Oracle и качаем Java
2020: См. инструкцию
Довольно жаркая дискуссия в данный момент происходит в рассылке OpenJDK. В январе Роман Кеннке, лидер проекта Shenandoah, работающий в RedHat, предложил бэкпортировать Shenandoah GC в JDK 11, чтобы пользователи могли продолжать пользоваться LTS-релизом, но при этом иметь возможность использовать Shenandoah. Несколько дней назад он выкатил патч с готовностью применить его к JDK 11.
Несколько человек (из Microsoft, Alibaba, Amazon) уже поддержали изменение, однако Джил Тен из Azul высказался с критикой такого серьёзного изменения (там 42к строк!). Он сказал, что стабильность превыше всего, и зрелость JDK 11 не должна нарушаться добавлением новых фич, какими классными бы они не были. Если кому-то сильно надо, то можно использовать STS-релизы, в которых есть Shenandoah (14, 15), или подождать следующего LTS-релиза Java, который выйдет всего через 18 месяцев. Роман же заверяет, что всё будет на мази, Shenandoah очень стабилен и готов к production, протестирован большим количеством пользователей и т.д. Джил же продолжает стоять на своём.
Такие вот дела.
#shenandoah
Удивительные, конечно, вещи творятся в мире OpenJDK. Microsoft (!) вот предложил прототип аллокации объектов на стеке для JVM. Говорят, что это поможет сократить количество выделяемых объектов в куче на 15%.
Java будет выдавать предупреждения при попытке засинхронизоваться на классах, которые являются кандидатами в inline-типы. Это Integer, Double, Long, Version, Optional, LocalDate, LocalTime, ProcessHandle и другие. Предупреждение будет как во время компиляции, так и во время исполнения. Кроме того, конструкторы обёрток примитивных типов станут deprecated for removal. Всё это, скорее всего, произойдёт в Java 16.
#java16 #valhalla