Обновить
128K+

Java *

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

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

Реализация TUN GSO в кастомном VPN-сервере на Java

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

Как одна фича сократила число системных вызовов на TUN-интерфейсе моего VPN почти вдвое — а на bulk-трафике до 44 раз.

В этой статье пойдет речь о том как работает TUN GSO, зачем нужен virtio_net_hdr, какие подводные камни встретились во время реализации и почему эта технология способна заметно снизить нагрузку на VPN-сервер. Статья будет полезна разработчикам VPN серверов и клиентов.

Читать далее

DOFAMINE JAVA BAR

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

Я уволился! Все задрало! Поздравляйте! :) Чуть позже расскажу, что да как.

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

Скатал в Турцию, залез на Эльбрус(весело, чуть позже расскажу,теперь хочу туда заехать на электровеле), достал жену до печёнок, зафигачил забор на даче и замостил всю дачу плиткой. Но экзистенциальная тоска, деградация и декаданс маячат на горизонте.

Кстати, кому интересно, как дела у моего человека-соседа — никак. Стаья про него тут https://habr.com/ru/articles/857774/. Дом так и не пригоден для жилья. Вчера он сказал, что мечтает в нём успеть пожить в этой жизни, но не факт.

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

И я решил найти себе хобби и увлечения. Чтобы прям глаза горели, нужно преодолевать и веселиться. И это — рассада помидоров!

Да шучу. Это будет прям альфа-тестостерон-самец-хобби с блестящими глазами и бессонными ночами. Представляете: вы знакомитесь с девушкой, и она спрашивает вас: «А какие у тебя хобби?» — и ты не говоришь там какие-то бег, сноуборд, оверпрайсовые велики или, боже упаси, падл. Ты говоришь: «На прошлой неделе нам с пацанами было скучно, и мы открыли свою пивнуху».

Да я уже открывал свою пивнуху и ностальгирую по этим моментам. Статья тут https://habr.com/ru/articles/739630/

Я снова хочу краудфандинговый IT-AI-пивбар. Краудфандинг ведь раньше было модно? Почему можно краудфандинг на всякую хипстерскую фигню типа коллекции наклеечек или модного стула, а на простой банальный пивбар или шаурмяной ларек нельзя?

Вступить в проект "Разгром"

Свой AI-прокси на Java: как я пытался подключиться к Gemini

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

Для разработки одного из моих проектов: документа BDoc (Book Document альтернатива устаревшим закрытым бинарным форматами такими как IDML, INDD или Scribus SLA) потребовалась нейросеть, которая может держать контекст очень долго. На данный момент для это цели идеально подходит Gemini, так как контекстное окно у Gemini в 1 миллион токенов. Но есть одна загвоздка, компания Google заблокировала некоторые регионы. То есть запросы от этих регионов не будут доходить до google. Рассмотрев все за и против, было принято решение написать небольшую программу на java - ai-proxy. То есть прокси для нейросетей.

Читать далее

ИИ и автотесты: как поймать ложную зелёную галочку?

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

ИИ уже умеет генерировать тесты пачками, но зелёный пайплайн по‑прежнему может врать. В статье разбираем на примере Java и JUnit, как отличить тест, который действительно ловит баги, от теста, который просто создаёт иллюзию проверки.

Читать далее

От стримов к вебсокетам: как я боролся с буферизацией и наконец победил

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

Привет. Меня зовут Николай Пискунов, я руководитель направления Big Data и эксперт курса Cloud DevSecOps по безопасной разработке от Академии вАЙТИ Beeline Cloud. Продолжаю цикл статей о клиенте для облачного сервиса Ollama. В первой части я рассказал о начале работы над клиентом и оставил пасхалку про сломанный стриминг. Во второй мы переехали с PostgreSQL на MongoDB, добавили анализ проектов с уважением к .gitignore и оптимизировали фронтенд.

Читать далее

Мне надоело писать один и тот же код. Поэтому я сделал Featuregen

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

Привет, Хабр. Я уже не тот беззаботный парнишка, что собирал 486-й компьютер. Время бежит, я скуф успел поработать с C++, C#, Java и Kotlin, последние 10 лет занимаюсь мобильной разработкой. Программирование я до сих пор люблю потому что больше ничего не умею. Но чем дольше работаешь, тем чаще ловишь себя на мысли, что от некоторых вещей начинает подгорать. Сегодня я расскажу, как я попытался избавиться хотя бы от части таких вещей.

Читать далее

Самокорректирующийся структурированный вывод в Spring AI 2.0

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

Софту всё чаще приходится интегрироваться с LLM. И тут быстро всплывает неприятная деталь: модели хорошо пишут текст, но не всегда стабильно возвращают данные в строгой структуре.

Даже если явно попросить ответ по JSON Schema, модель может добавить пояснение, пропустить поле или вернуть не тот тип. Нативный structured output у части провайдеров есть, но он работает не везде и не одинаково.

В новом переводе от команды Spring АйО разбираем, как в Spring AI 2.0 решается эта проблема.

Читать далее

Создание харнесса для код-агентов под enterprise-фреймворк на Java

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

Вайб-кодинг, или AI-assisted development, отлично работает на уровне прототипа: агент получает текстовое ТЗ и быстро собирает первый рабочий вариант. Но в корпоративной разработке этого мало.

Проблема начинается там, где нужно не просто написать код, а собрать полноценное корпоративное приложение. В Джеймикс между «экран открылся» и «система действительно работает как надо» лежит пропасть.

В какой-то момент мы задались вопросом: можно ли научить ИИ-агента проходить этот путь самостоятельно? Можно, если собрать вокруг него харнесс (англ. harness). Именно о нем статья.

В Джеймикс мы строим этот мост как инженерный харнесс: набор скиллов, инструментов и проверок, который помогает довести работающий прототип до реально работающей системы. Для его строительства мы используем агентную платформу KodaCode (далее — Koda) в собственной разработке на Джеймикс и регулярно гоняем ее на бенчмарках. Если оценивать по делу, Jmix-задачи агент решает уверенно. Разброс от сессии к сессии есть, мы видим его в собственных прогонах, и строгие pass/fail-бенчмарки его даже преувеличивают. Поэтому ставка не на идеального агента: обвязка и контроль не дают этому разбросу попасть в ваш продакшен. Это SKILLS.md под Джеймикс, преднастроенные инструменты и проверки на выходе. 

Ниже разберем шесть составляющих такого харнесса. Мы собрали их в KodaCode для Jmix-проектов: пакет навыков, преднастроенные инструменты и проверки на выходе. Это можно собрать самостоятельно, но на практике такой путь занимает месяцы проб и ошибок.

Читать далее

Как мы подружили динамические тесты JUnit 5 с Госуслугами

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


Привет, Хабр! На связи Максим Кацал, руководитель направления автоматизированного тестирования в РТЛабс.

Мы с командой на Госуслугах тестируем огромное количество услуг. В каждой из них — тысячи, миллионы сценариев. Писать автотесты руками — безумие, а поддерживать их очень больно.

В статье расскажу, как мы научились генерировать тесты прямо из JSON-схемы услуги. JUnit 5 + @TestFactory + рекурсивный обход графа маршрутов. Фреймворк, который сам прокладывает путь пользователя по приложению-конструктору, а потом проигрывает его в браузере.

Ниже раскрою архитектуру, код, подводные камни, опишу плюсы и минусы такого подхода.

Читать далее

Разбираемся с лицензией Redis. И что выбрать продуктовой команде

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

Redis долго был понятным выбором: BSD-лицензия, можно использовать почти где угодно. После смены лицензии в 2024 году всё стало сложнее: RSAL, SSPL, AGPLv3, Valkey, форки и вопросы к юристам.

В статье рассматриваю этот вопрос со стороны обычных продуктовых команд, а не облачных провайдеров. Если Redis у вас внутри как кеш, очередь или для сессий, что реально меняется, где начинаются риски и что сегодня разумнее выбрать - Redis 8, Valkey или другой Redis-compatible вариант.

Читать далее

Reflection замедляет ваш Java-код. Почему?

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

Сколько раз вы слышали тезис о том, что в Java Reflection тормозит, и лучше его избегать. Насколько это правда?

В новом переводе от команды Spring АйО рассмотрим, почему производительность reflection-а имела проблемы.

Читать далее

Когда может пригодиться экзотика в ООП: миксины/трейты/аспекты

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

Когда может пригодиться экзотика. Я много раз обращался к использованию множественного наследования в языках программирования и платформах. Но как правило это обращение было больше теоретическим. Я не видел в его применении значительных преимуществ, способных превзойти альтернативные подходы, с учётом рисков его применения. Но в это раз случай представился. И я покажу этот пример.

Читать далее

Spring Security: аутентификация через REST

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

В данной статье мы научились реализовывать аутентификацию при помощи Spring Security и протестировали её же.

Читать далее

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

Veai + TMS: как подключить Allure TestOps и Test IT к ИИ-агенту в IDE и чинить упавшие автотесты

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

Автотесты падают, а разбор занимает время: нужно открыть отчёт в системе управления тестами, понять причину падения, залезть в репозиторий, найти нужный тест и решить, где ошибка: в самом тесте или в приложении. Veai умеет забирать эту рутину на себя. Агент подключается к TMS (Test Management System), читает данные о падении по ссылке и предлагает правку прямо в открытом проекте.

В статье разберём, что такое TMS в контексте Veai, как подключить Allure TestOps и Test IT, и как агент разбирает причину падения автотеста: от инфраструктуры до флаков.

Читать далее

Java Digest #37: что нового в JDK 27, Spring Boot 4.1 и Hibernate 8.0

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

Всем привет! 👋👋👋👋👋Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске о том, что Java наконец-то делает шаг в будущее: value-классы впервые выходят в preview, а в JDK 27 по умолчанию включаются компактные заголовки объектов и G1. Наблюдаем сдвиг платформы в сторону производительности, безопасности и удобства.

Читать далее

Spring Security: начало работы и первые шаги на практике

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

В данной статье поигрались с базовыми возможностями Spring Secrity и узнали фундамент на котором строится вся остальная безопасность приложения

Читать далее

LSP vs весь стек JetBrains IDE: что получает AI-агент без доступа к платформе IDE

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

Привет, Хабр.

Сейчас почти каждый AI-кодинг-агент подключает LSP — Language Server Protocol. Это тот самый протокол, по которому редактор общается с языковым сервером: go-to-definition, find usages, hover с типом, диагностика. На этом обычно и пишут: «агент понимает код семантически».

Но мы в Veai делаем агента для JetBrains IDE, и нас периодически спрашивают: а зачем вообще нужен IDE, если LSP уже всё умеет? Хороший вопрос. LSP и правда решает много задач, но он проектировался для редактора, а не для агента. Подсветить ошибку, показать тип под курсором, найти ссылки — для этого LSP достаточно. А вот поменять Spring-бин в enterprise-проекте и не сломать сборку — тут нужно чуть больше.

Под катом разберём, что именно LSP даёт агенту, где этого перестаёт хватать и что поверх той же модели проекта предлагает JetBrains Platform. Спойлер: сравнивать LSP и PSI один в один бессмысленно — LSP это протокол, PSI это модель. Речь пойдёт о LSP vs весь стек IDE.

Читать далее

CLA или почему ваш PR в Open Source не может быть принят

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

Всем привет!

Вероятно, часть людей уже меня знает, но всё же представлюсь. Меня зовут Михаил Поливаха, я являюсь техническим лидером проекта Axelix.

Я уже какое-то время назад выпускал статью, которая поясняла, что такое Copyright, что такое лицензия в общем её смысле, какие типы лицензий бывают и т.д. Рассматривайте данную статью как некое продолжение этой прошлой статьи.

Сегодня я хочу осветить такой момент, как CLA и почему в том или ином виде он есть у любого крупного Open Source-а. Мы также рассмотрим, как AI влияет на CLA и на принятие контрибьюшенов со стороны. Есть ещё DCO. Его, например, уже давно использует Linux, и Spring Framework в своё время перешёл на него с CLA. Но DCO, я думаю, стоит обсудить отдельно. Если интересно будет - пишите, я потрачу время, расскажу.

В общем, без долгих прелюдий, начнём.

Читать далее

Возвращение аспектно-ориентированного программирования

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

Привет, Хаброжители! Сегодня мы подготовили для вас перевод статьи. Эта статья посвящена переосмыслению концепции аспектно-ориентированного программирования (АОП) в эпоху развития больших языковых моделей (LLM).

Как писать код, который одновременно корректен, эффективен и безопасен? Классическое АОП с его «точками соединения» оказалось слишком сложным. Новая парадигма предлагает описывать каждый аспект в отдельном документе, а LLM выступает в роли «плетельщика», генерируя чистый и удобный код.

Почему этот подход устойчивее и как он меняет разработку?

Читать далее

Асинхронность в WebAssembly (WASM)

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

Обзор асинхронности WASM с выходом WASI 0.3

WASM уже вышел за пределы браузеров и выглядит как перспективная технология для серверной разработки. Однако в вопросе серверного компьюта рано или поздно встает вопрос асинхронной обработки I/O-bound нагрузки. В данной статье попробуем разобраться, что как отвечает экосистема WASM на данный вызов. Статья особенно актуальна в свете того, что совсем недавно официально представлен WASI 0.3

Читать далее