Обновить
256K+

Java *

Объектно-ориентированный язык программирования

288,29
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели14K

В этой статье разбираем архитектуру Pipes and Filters, Content‑Based Router и Idempotent Receiver — те самые кирпичики, на которых держатся надёжные системы. Схемы, best practices для проектирования устойчивых интеграций для Enterprise‑разработки.

Читать далее

Разработка нового статического анализатора: PVS-Studio JavaScript

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели12K

Вот уже 18 лет статический анализатор кода PVS-Studio находится на рынке. За это время он обзавёлся поддержкой языков C, C++, C# и Java. Разумеется, останавливаться на этих языках мы не планируем, и в этой статье расскажем про разработку нового JavaScript/TypeScript анализатора, который выйдет уже совсем скоро.

Читать далее

Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.6K

Когда я впервые внедрял LLM в production-сервис, схема безопасности выглядела примерно так: написать хороший system prompt, поставить галочку «мы всё предусмотрели» и жить дальше. Жизнь не дала долго наслаждаться этим спокойствием — первый же тест показал, что пользователи довольно быстро находят способы заставить модель «забыть» всё, что мы написали в системном промпте.

Проблема фундаментальная: system prompt — это инструкция, которую LLM старается выполнить, но не обязан. Модель может её переинтерпретировать, «забыть» при длинном контексте или просто обойти через специальные конструкции. Guardrails — это другой уровень: они работают на уровне кода, до и после вызова LLM, и модель физически не может их обойти.

Читать далее

Мой 14-летний путь отказа от ORM: череда инсайтов, приведшая к созданию SQL-First кодогенератора для PostgreSQL

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели15K

История о том, как я выпустил популярный ORM в 2012 году… потом похоронил его… потом осознал, что база данных должна быть единственным источником правды. И к чему это привело.

Читать далее

Требования в Agile: полный гайд с работающими практиками

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели11K

Почему «собрать требования» невозможно, а итеративный подход — единственный рабочий вариант и чем Agile-требования на самом деле отличаются от классических.

А также:
▫️ Почему фраза «создайте мне систему» — это красный флаг.
▫️ Как постепенное уточнение спасает от «аналитического паралича» и переписывания кода.
▫️ User Story vs Use Case: в чём настоящая разница и что выбрать.
▫️ Схемы итеративного процесса и ролей в Agile-проекте.

Читать далее

Claude Mythos, Java 26 и пещерный человек с 16 000 звёзд на GitHub

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели10K

Девятый выпуск еженедельных IT-новостей от OpenIDE.

Милла Йовович выложила свой проект в open-source, Claude Code нашел баг в Linux, которому 23 года, Anthropic показали Claude Mythos и сразу закрыли доступ.

А Skill Caveman внезапно оказался самым простым и самым эффективным инструментом недели.

Читать далее

Как работает Stream api и в чем разница с Flux

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.2K

Когда я выбираю тему для исследования, я думаю о пользе для специалиста, особенно для тех, кто недавно в профессии.

Однако, если ты опытный специалист и постоянно используешь стримы в своей работе, возможно даже для тебя будет изюминка, ради которой тебе стоит прочитать статью. Я подпишу блок для тебя как ИЗЮМИНКА 

Захотелось рассмотреть важную тему Stream API, но чтобы сделать статью интереснее, я решил сравнить его с инструментами реактивного программирования — Flux и Mono из Project Reactor.

Начнём с того, что такое Stream и в чём его схожесть с Flux.

Читать далее

БАЗЫ ДАННЫХ db. SQL, REDIS, СУБД

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.1K

Если серьезно, то сегодня мы поговорим про БАЗЫ данных. Как-то один мой друг разработчик сказал, что программирование можно понимать как

Читать далее

Database-клиент для GigaIDE

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.8K

Продолжая тему инструментов, интегрированных в среду разработки, сегодня мы рассмотрим клиент для работы с базами данных, доступный пользователям GigaIDE. Для пользователей Community-версии доступен open source-плагин DB Navigator, который хорошо описан, например, здесь. Пользователям PRO-версии доступна пара расширений:

SQL — синтаксическая поддержка и форматирование SQL-кода;

Database — клиент баз данных с широким набором возможностей.

Читать далее

Как не выгорать и к чему я пришел

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.7K

Я работаю программистом 15 лет. За это время чего я только не делал и у меня скопилась статистика. Если на первом месте я работал 5 лет на втором 3 года, то на последующих год полтора и я выгорал и менял работу. Я не мог понять почему так происходило. Только в одной фирме мне действительно нравилось работать. Хотя когда я там работал мне тоже хотелось в определенный моменты уйти, но все же сейчас я вспоминаю коллег и проекты с теплотой.

Читать далее

Вайб-код для настоящих инженеров: старые практики в новых реалиях

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели13K

Итак, вопреки утверждениям скептиков (среди которых не так давно был и я) ИИ-разработка с двух ног влетела в настоящую промышленную эксплуатацию, и мем уже совсем не тот: не джун теперь роняет прод, а нейросеть убивает статистику доступности гитхаба, амазона, Cloudflare и даже самой мекки вайб-кодинга — сервисов Anthropic и OpenAI. 

Читать далее

JPA 4. Переосмысление Hibernate

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели10K

Данная статья является переводом анонса Гевина Кингa о релизе первого milestone JPA 4 спецификации и общего вектора развития JPA.

Полноценная 4-ая версия JPA спецификации должна выйти чуть-чуть позже в этом году. Тем не менее, то, что сейчас в Milestone это основа, которая, возможно, с небольшими доработками, но уже пойдёт в релиз в этом году.

От себя скажу, что данное обновление будет довольно крупное. Я оставил свои комментарии там, где посчитал уместным.

P.S: У нас в рамках Spring АйО Академии как раз есть программа посвящённая Hibernate. В ней мы тоже затронем новую версию спецификации, в частности и работу со StatelessSession и EntityAgent на практике. Я думаю, что из всего апдейта, именно стандартизация работы без Persistence Context будет самым важным для прикладных разработчиков. Остальное тоже важно, но не так как работа с EntityAgent.

Приятного чтения!

Читать далее

Kafka. WebClient. Feign. WebSocket. Или как общаются микросервисы

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.9K

Начнем с того, как микросервисы могут общаться? На самом деле все просто, сложные приложения могут состоять из нескольких разных микросервисов.

Каждый сервис будет иметь свою логику, свою ответственность. Сервисы одной системы могут быть написаны на разных языках программирования. Однако это не будет мешать им общаться. Так вот общение это буквально - обмен информацией. Обмен сообщениями определенного формата, который смогут понять все сервисы. Это похоже на общение между нами. Я говорю что-то собеседник слушает информацию, дальше обрабатывает ее неким образом своим мыслительным аппаратом и формирует ответное сообщение и проговаривает его вслух адресуя голос в направлении оппонента. Для отправки сообщения нам людям, нужно знать адресата или видеть его, для того, чтобы обратиться к нему.

Адресату, нужно слышать и в идеале уметь понимать на каком языке говорит другой человек. Если вы знаете несколько языков, то вы сможете принять сообщение на одном языке обработать его и перевести в своей голове и выдать перевод другому человеку. Все эти модели общения похожим образом перекладывают на взаимодействие между сервисами.

Читать далее

Ближайшие события

Многопоточная среда в разработке JAVA

Время на прочтение10 мин
Охват и читатели7K

Если ты разработчик, то тебя это коснется. Спустя какое то время, кто-то раньше, кто-то позже, но каждый приходит к тому, что пора реально взять и разобраться в многопоточке. Я как то писал статью для себя, когда готовился к собесам и понял, что мне самому очень вкатывает такой формат обучения, когда ты пишешь статью на тему, которую исследуешь изучаешь. Так информация осваивается в разы лучше. Поэтому я собираюсь пропустить через себя огромный объем информации по многопоточности. Буду работать как супер компьютер обрабатывать сразу все возможные ветки в направлении освоения многопоточности. 

Читать далее

Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.2K

Стандартные алгоритмы даунсемплинга хорошо работают с линейными графиками. На scatter они теряют до 60% визуально значимых данных. Показываем, как двумерное прореживание решает задачу, которую одномерные методы фундаментально не могут.

Читать далее

Большая распаковка Java 26. Что этот релиз значит для нас всех?

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели9.3K

Java 26 вышла 18 марта. В релизе 10 JEP-ов: Structured Concurrency получила шестое превью и API наконец стабилизировался, final-поля начинают путь к настоящей иммутабельности, G1 и ZGC получили улучшения производительности, примитивы заработали в паттернах, а HTTP/3 вошёл в стандартный HttpClient финальной фичей.

Разбираем каждое из изменений и смотрим, как перевести реальный проект на Java 26.

Читать далее

Моё путешествие в трёхмерное пространство: история о «программном» Франкенштейне и множестве открытий

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели8.2K

Честно говоря, я долго не мог решиться написать и опубликовать эту статью. Зачем, думал я, возиться с не самой популярной технологией и изобретать велосипед — реализовывать функции, которые уже где‑то есть? На этот вопрос у меня нет универсального ответа — каждому своё.

Сначала мне казалось, что рассказывать о таких «подвигах» не слишком интересно. Все любят истории об успешном успехе. Потом я вспомнил: главное — не итог, а путь, опыт и знания, которые ты получаешь по дороге. Как только я начал смотреть на материал как на обучающий, делиться им стало намного проще.

Бывает так: с какой то технологией уже разобрался, а вот перейти к новой боязно. Учить новые движки непросто, да и текущий инструмент уже не справляется с задумкой… Сомнения часто мешают двигаться вперёд, но народная мудрость «глаза боятся, а руки делают» никогда не подводит.

В итоге я решился и попробовал FXGL для 3D‑рендеринга. Но не для того, чтобы сделать полноценную игру(хотя она и получилась), а чтобы соединить расчёты по системному моделированию с элементами геймификации. Уточню: я не призываю использовать FXGL во всех случаях. Для серьёзных 3D‑проектов есть отличные инструменты — Unigine, jMonkeyEngine, Godot, Unreal Engine. Я попытался собрать и упорядочить знания, которые получил в ходе своего небольшого эксперимента.

 

Читать далее

HttpClient в Spring 7: замена FeignClient или нет?

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.5K

Последние годы FeignClient и RestTemplate были де-факто стандартом для вызова внешних API в Spring. Но теперь появился нативный Http Interface Client — и я решил проверить, можно ли им заменить Feign без потери удобства.

Переходим на Spring 7 увереннее!

Разработка реализации системы для Join таблиц в реальном времени на Apache Flink ( Часть 3 )

Уровень сложностиСложный
Время на прочтение3 мин
Охват и читатели8.3K

Скорее всего читатели знают, но контекста ради.
Flink имеет децентрализованный дизайн с распределенной архитектурой, где набор контейнеров ( Task Manager ) несут ответственность за свою локальную зону или не несут?
Эта зона в случае разбиения через keyBy размазывается исходя из хэша заданного ключа, посредством чего, Flink гарантирует попадание всех событий с этим ключом на тот же контейнер и также гарантирует сохранение того порядка событий, в котором они доехали до оператора, и, как следствие этот контейнер является мастером-владельцем ключа - отсюда понятие локальной зоны становится оправданным, ведь все хэш пространство размазывается на контейнеры равномерно. Однако, если не использовать keyBy и просто попробовать вызвать что угодно, то будет round-robin распределение и тогда снимается понятие локальной зоны ответственности.

Читать далее

Kafka для начинающих: Apache Avro и Schema Registry (практика)

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели11K

Переводим нашу платформу с JSON на Apache Avro и Schema Registry. Заменяем сериализаторы и десериализаторы, генерируем классы из схем и разбираем разницу между GenericRecord и SpecificRecord.

Практика на реальном проекте.

Читать далее