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.util.concurrent являются общественным достоянием. Например, AtomicReference, ConcurrentHashMap, Semaphore, CountDownLatch, ReentrantLock, ForkJoinPool и т.д. Единственное исключение – CopyOnWriteArrayList 😀 (Наверное потому, что когда писался, многие куски были скопированы из ArrayList, а тот не является public domain).
Что значит общественное достояние? Значит, что Sun отказался от авторских прав на эти классы, это собственность всего общества. То есть исходный код классов можно копировать, изменять, распространять, продавать без разрешения.
#concurrency
Попросили порекламировать бесплатный Java-митап. Вроде норм ребята. Записываемся 👇

17 июня (то есть сегодня) пройдет бесплатный онлайн Java Meetup со спикерами из Red Hat и Levi9.

В программе:
— "По дороге c облаками, Quarkus, Java и Graal’ем", Алексей Лубянский, Principal Software Engineer в Red Hat
— "Производительность: нюансы против очевидностей", Сергей Цыпанов, Senior Java Developer в Levi9.

Модератор мероприятия: Дмитрий Панин, Levi9 Delivery Director.

Когда? 17 июня, 19:00 по Москве (GMT+3)
Где? Онлайн, бесплатно
Язык докладов: русский

👉 Регистрация
Вы уже перешли на Java 11+?
Final Results
59%
Уже да 😊
32%
Ещё нет 😔
9%
Посмотреть ответы
Вам надо отсортировать список List<Date> по возрастанию. Какой вариант вы выберете?
Final Results
4%
list.sort(null)
27%
list.sort(Comparator.naturalOrder())
31%
Collections.sort(list)
15%
Collections.sort(list, Comparator.naturalOrder())
23%
Затрудняюсь с ответом
Туплы или рекорды? Нахер всё, когда есть Map!
У шарпистов бомбит, что в Java паттерн-матчинг сделали лучше и гибче, чем в C#.
Например, возможность писать case String s && s.isBlank() — по-моему, это очень круто. Такой и должен быть паттерн-матчинг.
💉 Вы привились от COVID-19?
Final Results
34%
Да, обе дозы
13%
Первую дозу только
53%
Нет
Скомпилируется код или нет?
Final Results
72%
Скомпилируется
28%
Не скомпилируется
Какой способ предпочитаете?
#юмор
Мой топ фишек, ради которых хочется перейти на Java 16 (не язык, только JVM и API). То есть то, что появилось в Java 12-16:

Stream.toList()
Collectors.teeing()
String.formatted()
Аннотация java.io.Serial
Lookup.defineHiddenClass() (но не уверен, что смогу найти реальное применение)
JEP 341: Default CDS Archives (ну типа, всё быстрее будет стартовать)
JEP 346: Promptly Return Unused Committed Memory from G1 (приложение будет кушать меньше памяти)
JEP 358: Helpful NullPointerExceptions
Field layout computation overhaul (более компактные объекты). Ну и вообще подобного рода мелкие оптимизации, которые в целом делают JVM чуть-чуть быстрее.

А ради чего вы хотите перейти с Java 11 на более новую версию?
Тут в соседнем треде бурление по поводу логирования в Java. А какие библиотеки используются у вас для логирования?
Final Results
3%
java.util.logging
5%
Log4J (первая, древняя версия)
27%
Log4J 2
75%
SLF4J / Logback
1%
Apache Commons Logging
0%
tinylog
0%
System.Logger (JEP 264, Java 9+)
7%
Простой println
3%
Другое (напишу в комментариях)
В общем, что и требовалось доказать. Никита наехал на джавистов, что у нас чуть ли не каждый день создаётся по новой библиотеке логирования. А в реальности у нас по факту всего лишь две библиотеки, которыми пользуется подавляющее большинство: SLF4J и Log4J 2. Остальные библиотеки либо уже ископаемые и давно мертвы и забыты (Commons Logging, Log4J 1, JUL), либо слишком маргинальные (tinylog). Так что картина во все не настолько плохая, как это может показаться по началу.

Кстати, я уже далеко не первый раз слышу набросы по поводу логирования Java со стороны всяких людей. "Да зачем у вас так всё сложно", "Зачем вы переизобретаете каждый раз то же самое" — постоянно я вижу то в Твиттере, то где-то ещё. А ответ заключается в том, что у нас: а) несложно и б) немного. Библиотеки просто отделяют интерфейс от реализации. В чём здесь сложность? И никакой горы библиотек нет. В опросе я вспомнил лишь 6 библиотек. Это за всё время существования Джавы (26 лет!).
Всё-таки обратная совместимость в Java это сила! Вот так работаешь с проектом, а там зависимость, скомпилированная под Java 1.2. Джава Один Два, 1998 год! И ничего, всё работает, как часы.
Quiz Time! 👇
Такой код точно компилируется в Java 16, потому что стали разрешены статические декларации во внутренних классах. А скомпилируется ли в Java 15?
Final Results
29%
Не скомпилируется. Ошибка в обеих константах X и Y.
35%
Не скомпилируется. Ошибка только в константе Y. С X всё ОК.
36%
Скомпилируется.
Кто-нибудь может объяснить, почему в Идее отсутствуют кнопки разворачивания окон на весь экран? Неужели никого это не напрягает? 🤔
#IntelliJIDEA
Что объединяет все эти примеры кода?