Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍11❤6
🧩 Разница между параллельными и распределёнными вычислениями
Ускорение работы приложения можно получить двумя способами: распараллелить работу между ядрами одного компьютера или разнести ее по нескольким машинам.
Параллельные вычисления живут внутри одного узла: части задачи выполняются одновременно на CPU-ядрах, нескольких процессорах или ускорителях GPU/TPU.
Параллелизм бывает по задачам и по данным (одна операция над разными блоками), а также на уровне инструкций (конвейеризация, суперскалярность) и битов. Обмен данными чаще происходит через общую память и локальный IPC, поэтому задержки ниже.
Распределенные вычисления делят в свою очередь работу между автономными узлами по сети. Данные передают сообщениями или через RPC, координация сложнее, зато масштабирование обычно проще: добавил узлы - выросли вычисления и хранилище. Часто закладывают отказоустойчивость: репликация, резервирование, обнаружение ошибок.
🔗 Подробности в нашей статье на Хабр: https://habr.com/ru/companies/spring_aio/articles/1008990/
Ускорение работы приложения можно получить двумя способами: распараллелить работу между ядрами одного компьютера или разнести ее по нескольким машинам.
Параллельные вычисления живут внутри одного узла: части задачи выполняются одновременно на CPU-ядрах, нескольких процессорах или ускорителях GPU/TPU.
Параллелизм бывает по задачам и по данным (одна операция над разными блоками), а также на уровне инструкций (конвейеризация, суперскалярность) и битов. Обмен данными чаще происходит через общую память и локальный IPC, поэтому задержки ниже.
Распределенные вычисления делят в свою очередь работу между автономными узлами по сети. Данные передают сообщениями или через RPC, координация сложнее, зато масштабирование обычно проще: добавил узлы - выросли вычисления и хранилище. Часто закладывают отказоустойчивость: репликация, резервирование, обнаружение ошибок.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤7👍5
Для JetBrains IDE вообще есть нормальный AI без проблем в РФ?
Периодически в @spring_aio_chat и на Хабре прилетают вопросы про то, какие сейчас есть варианты использования ИИ внутри IDE.
Один из вариантов – Kodacode.
Работает:
— в OpenIDE и JetBrains IDE
— в VS Code
— и даже в CLI
Что кажется наиболее полезным:
— агентный режим: без него от ИИ-помощника смысла не так много
— доступ к разным моделям: GLM, Gemini, DeepSeek, и другие
— работает без танцев с VPN и оплатами: у многих это сейчас главный стоп-фактор для AI-инструментов
— есть бесплатная модель: хватает для повседневных задач
📚 Подробнее про Koda для JetBrains IDE читайте на Хабр: https://habr.com/ru/companies/koda/articles/986976/
Периодически в @spring_aio_chat и на Хабре прилетают вопросы про то, какие сейчас есть варианты использования ИИ внутри IDE.
Один из вариантов – Kodacode.
Работает:
— в OpenIDE и JetBrains IDE
— в VS Code
— и даже в CLI
Что кажется наиболее полезным:
— агентный режим: без него от ИИ-помощника смысла не так много
— доступ к разным моделям: GLM, Gemini, DeepSeek, и другие
— работает без танцев с VPN и оплатами: у многих это сейчас главный стоп-фактор для AI-инструментов
— есть бесплатная модель: хватает для повседневных задач
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍15🔥7⚡1
Наконец-то работа с PEM в Java становится похожа на API, а не на набор ручного парсинга, Base64 и странных телодвижений.
Справка:
Раньше с PEM работали так:
String pem = "-----BEGIN PUBLIC KEY-----\n"
+ Base64.getMimeEncoder(64, "\n".getBytes())
.encodeToString(publicKey.getEncoded())
+ "\n-----END PUBLIC KEY-----";
А в обратную сторону, но уже с ручной нормализацией PEM, Base64-декодированием и
KeyFactory:
String normalized = pem
.replace("-----BEGIN PUBLIC KEY-----", "")
.replace("-----END PUBLIC KEY-----", "")
.replaceAll("\\s", "");
byte[] der = Base64.getDecoder().decode(normalized);
PublicKey key = KeyFactory.getInstance("EC")
.generatePublic(new X509EncodedKeySpec(der));
По факту PEM в Java долгое время был не отдельным API, а набором низкоуровневых шагов, которые разработчик собирал руками.
А теперь это выглядит так:
var encoder = PEMEncoder.of();
String pem = encoder.encodeToString(keyPair);
var decoder = PEMDecoder.of();
KeyPair decoded = decoder.decode(pem, KeyPair.class);
То есть ключевую пару можно закодировать в PEM и декодировать обратно буквально в несколько строк.
Во втором preview:
—
PEMRecord переименовали в PEM— добавили
decode()— расширили поддержку
KeyPair и PKCS8EncodedKeySpec— упростили шифрование через
EncryptedPrivateKeyInfoА так, как все это дело еще в preview, не забываем использовать
--enable-preview.Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🔥16❤8😁1
Forwarded from JPoint и Joker — канал конференций по Java
#видеозаписи
Открываем новую видеозапись доклада:
Михаил Поливаха — Spring AOT: кодогенерация на стероидах
😉 YouTube | 📺 VK Видео
Открываем новую видеозапись доклада:
Михаил Поливаха — Spring AOT: кодогенерация на стероидах
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Михаил Поливаха — Spring AOT: кодогенерация на стероидах
Подробнее о Java-конференциях:
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
Магия Spring Boot дается недешево: прокси в рантайме, рефлексия и динамическая генерация классов замедляют запуск и раздувают потребление памяти.…
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
Магия Spring Boot дается недешево: прокси в рантайме, рефлексия и динамическая генерация классов замедляют запуск и раздувают потребление памяти.…
👍17🔥9❤6
🗑️ Изменения в G1/Parallel/Serial GC в JDK 26
JDK 26 выходит уже совсем скоро. Тем временем в GC закрыли около 380 задач (почти в 2 раза больше, чем в прошлом релизе), но в этот раз акцент сместился с больших фич в пользу практичных доработок.
Главное для всех сборщиков: нормальный учет CPU GC. Теперь считают не только stop-the-world паузы, но и конкурентную работу и дедупликацию строк. Можно посмотреть через лог
JEP 516: Aot Cache стал независим от выбранного GC и опций VM. Включение через опцию
G1 получил самые заметные улучшения: JEP 522 уменьшает синхронизацию между GC и приложением (цель - увеличить throughput). Еще: целевое использование CPU G1 по умолчанию снижено с 8% до 4%, добавили важнейший флаг
Комментарий от Михаила Поливаха:
📎 Подробнее в статье: https://habr.com/ru/companies/spring_aio/articles/1010904/
JDK 26 выходит уже совсем скоро. Тем временем в GC закрыли около 380 задач (почти в 2 раза больше, чем в прошлом релизе), но в этот раз акцент сместился с больших фич в пользу практичных доработок.
Главное для всех сборщиков: нормальный учет CPU GC. Теперь считают не только stop-the-world паузы, но и конкурентную работу и дедупликацию строк. Можно посмотреть через лог
cpu=info при завершении VM, обновили Hsperf-счетчики, есть доступ из кода. Плюс новый JFR-ивент с деталями по string dedup.JEP 516: Aot Cache стал независим от выбранного GC и опций VM. Включение через опцию
-XX:+AOTStreamableObjects.G1 получил самые заметные улучшения: JEP 522 уменьшает синхронизацию между GC и приложением (цель - увеличить throughput). Еще: целевое использование CPU G1 по умолчанию снижено с 8% до 4%, добавили важнейший флаг
UseGCOverheadLimit.Комментарий от Михаила Поливаха:
Важно и то, что HotSpot GC команда в Oracle смотрит в сторону Automatic Heap Sizing. На эту темы было много шума на Redit и не зря. Поговорим об этом на подкасте.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍9❤4
Встречаем 26 версию нашего любимого языка программирования.
Что самое заметное:
HttpClient (JEP-517)Теперь
java.net.http.HttpClient умеет HTTP/3. Для client-side кода это хороший апгрейд: меньше магии, ближе к современному вебу из коробки.В Java 26 уменьшили синхронизацию между application threads и GC threads. Для тех, кто сидит на G1 по умолчанию, это может дать вполне практичный прирост без смены GC и без шаманства с флагами.
Уже шестой preview, но направление давно понятно: многопоточность в Java все сильнее движется к более внятной модели управления связанными задачами, отменой и ошибками. Для сервисного кода — очень правильный вектор.
instanceof, switch, patterns — теперь и для примитивных типов. Пока preview, но курс очевиден: язык становится ровнее и выразительнее.Уже 11-й incubator. Для high-performance сценариев, аналитики и местами AI/inference должно быть полезным.
AOT object caching теперь работает с любым GC, включая ZGC. То есть разговор про быстрый startup/warmup Java-приложений становится еще менее "на словах".
Добавляются предупреждения на deep reflection, который мутирует final-поля. Java продолжает двигаться к integrity by default. Если у вас есть старые хаки через reflection, то самое время проверить, не пора ли их вычищать.
Да, в 2026 это уже скорее символический жест. Но хороший, так платформа продолжает избавляться от давно мертвого наследия.
А ещё:
AutoCloseableUUIDv7 через UUID.ofEpochMillis(...)Thread.stop() удален окончательноИтог
Пожалуй, нас не порадовали
Please open Telegram to view this post
VIEW IN TELEGRAM
❤41👍30🔥20
Есть такой момент, что большой пул часто ухудшает отклик: БД упирается в ограниченные ресурсы (CPU, диск, сеть), начинается лишняя конкуренция и накладные расходы, latency растет.
Действительно, ребята из Oracle в своей демке обычным уменьшением пула снизили время ответа примерно со 100 мс до 2 мс.
Сама практика такая: пул держат небольшим. Потоки приложения запрашивают свободное соединение в пуле, либо ждут его появления там. Это нормальная очередь, которая защищает БД от перегруза.
Само собой, могут быть просадки по отклику из-за того, что отдельные операции надолго занимают соединения. В таком случае сначала это лечится на уровне приложения. Расширение же пула в таких случаях, как правило, дает негативный эффект.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤20👍18🔥8
Иногда одна незаметная фича может сжигать гигантский объём ресурсов. В Netflix именно так и вышло: скоринг серендипности в Ranker оказался дорогой горячей точкой, а попытка слегка его ускорить в итоге привела к большой инженерной перестройке — от батчинга до SIMD через JDK Vector API.
Получился отличный разбор того, как SIMD AVX инструкции на практике позволили снизить потребление CPU.
🤓 Я сам не знал, поэтому
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥11❤7
Forwarded from OpenIDE – мультиязычная среда разработки
⚡️ Бесплатные ИИ-агенты для кодинга: локально и в облаке | Kilo Code, Codex, OpenCode, Qwen Code
В новом видео — как запустить локальную LLM в IDE за 15 минут и четыре бесплатных облачных альтернативы.
Локальный вариант: LM Studio + Qwen3-Coder + Kilo Code. Работает офлайн, без подписки и лимитов на запросы.
Облачные варианты: Kilo Code со своими бесплатными моделями, Qwen Code с 1 000 запросов в день, OpenCode с ротируемыми open source free моделями и OpenAI Codex — пока бесплатный для Free-аккаунтов.
😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
В новом видео — как запустить локальную LLM в IDE за 15 минут и четыре бесплатных облачных альтернативы.
Локальный вариант: LM Studio + Qwen3-Coder + Kilo Code. Работает офлайн, без подписки и лимитов на запросы.
Облачные варианты: Kilo Code со своими бесплатными моделями, Qwen Code с 1 000 запросов в день, OpenCode с ротируемыми open source free моделями и OpenAI Codex — пока бесплатный для Free-аккаунтов.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍26🔥15⚡8❤5
Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍10❤7