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
Без комментариев
🤣21🤯2
Задачка от Heinz Kabutz.

Сколько массивов будет создано? Map<Integer, Integer> map = new HashMap<>(180); for (int i = 0; i < 180; i++) { map.put(i, i * i); }
Final Results
20%
180
25%
0
30%
1
25%
2
63😢3👍1
В следующей версии IntelliJ IDEA (2023.1) появится автодополнение опций JVM в Run/Debug Configurations.
В выпадающем списке будут показываться опции, которые применимы к конкретной версии JVM. То есть они не захардкожены в Идее, а вычисляются динамически для текущей JVM. То есть там будут не только стандартные опции, но и нестандартные (-X и -XX:)
#IntelliJIDEA
👍41
Похоже, что 32-битная версия Java всё: https://openjdk.org/jeps/8303167
👍13🫡11👎1😢1
Тагир написал книгу по Java!
👍22💩8🍾53🦄2🔥1
Ежегодный опрос. Какую версию(-и) Java или язык JVM вы используете на работе?
Final Results
20%
Java 8 или более старую
45%
Java 11
3%
Java 12-16
47%
Java 17
4%
Java 18+
4%
Groovy
3%
Scala
25%
Kotlin
1%
Clojure
👍71
Что-то в последнее время стало так много JEP'ов, что стало нереально держать их в голове одновременно (все эти пятые превью и 100500-е инкубаторы). Поэтому решил для себя составить таблицу, которая всегда была бы под рукой. А потом подумал: а почему бы её не сделать общедоступной?
Поэтому вот: https://minijug.ru/jeps.html
Таблица будет поддерживаться в актуальном состоянии.
Фидбек приветствуется.
🔥22👍121
Вышел тут пост про то, почему не надо использовать Alpine Linux. Рекомендую почитать и задуматься.
Если лень читать, то вкратце поинт такой: проблемы из-за небольших несовместимостей musl и glibc могут доставлять много хлопот, а выигрыш из-за маленького размера образа это никак не оправдывает.
#alpine
🤔8🌚1
Результаты опроса и выводы:
• Java 17 вырвалась вперёд и обогнала Java 11 🥳.
• Java 18 и 19 заметно выросли, но процент всё ещё ничтожен (никто не хочет юзать STS-релизы).
• Java 8 постепенно умирает.
• Kotlin показывает стабильный рост. Но мне кажется, что это из-за того что грэдлисты переходят с Groovy на Kotlin DSL. Но могу ошибаться. Напишите в комментах, для чего вы юзаете Kotlin (основной язык / Kotlin DSL / Android).
#java8 #java11 #java17 #java18 #java19 #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉6👍2🤔2
⚡️ Роман Кеннке написал в Твиттере, что Lilliput может попасть в JDK 21. Правда он будет выключен по умолчанию, а для его включения понадобится опция -XX:+UseCompactObjectHeaders.
#lilliput #java21
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4👨‍💻1
🥳 Виртуальные потоки выйдут из превью в JDK 21!

https://openjdk.org/jeps/8303683: This JEP proposes to finalize Virtual Threads in JDK 21

#loom #java21
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾37🎉6👍1
А по вашему мнению, какая библиотека ключ к успеху? Guava или Guice? 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
💅8😢5🤡4😁2🤔2💩2👻1
Помните, были такие сырые строковые литералы? Их хотели добавить в Java 12, но потом отказались от этой идеи.

Так вот, эту идею подхватил C# 11. Смысл очень похожий на Java 12: сырой строковый литерал может начинаться с любого количества кавычек (минимум 3), но должен и заканчиваться на то же самое количество. А между этими n-арными кавычками можно вставить любую чухню (главное, чтобы не было n кавычек подряд):

string raw = """"
Hello, "John"!
""""

Но это ещё не всё. В C# ведь ещё есть строковая интерполяция ($"Hello, {name}!"). Как будут выглядеть сырые строковые литералы с интерполяцией?
А правило такое: количество долларов контролирует количество фигурных скобок, обрамляющих интерполяцию внутри литерала!

Например:
string name = "John";
string raw = $$"""
Hello, {{name}}!
My {name} is {{{name}}}
"""

Эта строка превратится в:
Hello, John!
My {name} is {John}

Т.е. понимаете? Не только количество кавычек произвольное, но и количество долларов! Например, вот такой код является валидным кодом на C# 11:
$$$$$$$$$$$$""""""""""""""""
Hello
""""""""""""""""

Но это ещё не всё. Всё это безумие ещё добавляется к буквальным строковым литералам, которые начинаются с @". Т.е. в C# теперь есть 6 видов литералов: обычные, обычные с интерполяцией, буквальные, буквальные с интерполяцией, сырые и сырые с интерполяцией.

Теперь вы понимаете, почему в Java так тщательно продумывают новые фичи и неспешно их вводят?

Лучше уж мало фич, но без подобного синтаксического сумасшествия.

#csharp
🤯19😁7🔥4👍2
В Java 21 появился долгожданный метод reversed(), который возвращает view коллекции с обратным порядком:

jshell> List.of(1, 2, 3, 4, 5).reversed()
$1 ==> [5, 4, 3, 2, 1]

Этот метод есть у любой коллекции, реализующей интерфейс SequencedCollection (List, Deque, Stack и т.д). Кстати, всё это уже есть в последнем билде JDK 21-ea+20, так что можно затестить.

#java21
👍11🎉2👌1🤡1
Самые популярные вендоры OpenJDK в 2023 году:
1. Amazon (31%)
2. Oracle (28%)
3. Eclipse Adoptium (12%)
4. Red Hat (11%)
5. Azul (6%)
6. SAP (3%)
7. BellSoft (1.9%)
8. Debian (1.8%)

Oracle впервые не первый 🫡

Источник: What Is the State of the Java Ecosystem in 2023?
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡10🤔21
Какой, по вашему мнению, самый важный релиз в истории Java, который наибольшим образом продвинул язык и платформу?
(Считаем, как будто STS-релизов вообще не было и выходили только LTS-релизы, содержащие в себе все нововведения из предшествующих STS)
Anonymous Poll
14%
Java 5 (generics, annotations, enum, autoboxing, enhanced for-loop)
2%
Java 7 (try-with-resources, diamond, switch over strings, multicatch, nio2)
75%
Java 8 (lambdas, streams, default methods, java.time)
2%
Java 11 (modules, var, compact strings, launch single-file source programs)
2%
Java 17 (switch expr, text blocks, records, pm for instanceof, sealed, zgc, shenandoah)
5%
Java 21 (pm for switch/records, loom, sequenced collections, generational zgc)
Количество вопросов по разным версиям Java на StackOverflow.
Java 8 находится в сильном отрыве от всех остальных версий и имеет больше вопросов, чем в сумме все остальные версии Java.
#java8
🌚3🏆3🍾3😁2
Виктор Кланг предложил добавить новый метод gather() в стримы. Это что-то вроде collect(), но ещё более общая операция, через которую можно будет реализовать все остальные. Эдакие коллекторы 2.0. Это наконец-то сделает стримы расширяемыми.
#stream
🤔12🤮4👍3