Обновить
128K+

Java *

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

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

Шестнадцатеричная запись чисел с плавающей точкой в C++, Java, Go

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

Эта возможность есть в нескольких популярных языках программирования - но она настолько невостребованна, что и не все-то коллеги о ней знают - а в других не менее популярных языках её отказываются добавлять, несмотря на запросы энтузиастов. Этакий живой курьёз.

В этой коротенькой заметке-памятке - взглянем на формат записи (он может показаться не вполне логичным и не вполне шестнадцатеричным, вопреки названию) и поддержку стандарта разными языками. Основным же применением для этой "фичи" может быть, наверное - троллить друг друга на собеседованиях :)

Если вам случалось использовать такую запись на практике - поделитесь в комментариях. Или хотя бы если вы можете придумать случай когда она потенциально пригодится.

0xBEDA.BEDAp0

SAST прямо в IDE: как Veai ищет уязвимости в Java/Kotlin-проекте и помогает их исправлять

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

Почему классический разбор SAST-находок — это боль

Сценарий, знакомый многим разработчикам в крупных компаниях: перед релизом ИБ-отдел присылает выгрузку из корпоративного сканера. В этом PDF-файле на сотни страниц собраны тонны находок. Большая часть из них снабжена метками вроде Critical. И вот, вместо скроллинга ленты подготовки релиза разработчик сталкивается с трудоемким процессом анализа:

Открыть указанный в отчете файл

Обнаружить там какую-нибудь generic-функцию, которая принимает строку и склеивает SQL-запрос

Раскопать через цепочки вызовов, откуда вообще берутся данные. Приходят ли они напрямую от пользователя из REST-контроллера, контролируются ли они внутренней конфигурацией, или это вообще внутренний технический ID, который заведомо безопасен?

Разобраться, была ли где-то по дороге валидация или экранирование

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

Читать далее

Шёл за утечкой памяти, нашёл утечку диска: SXSSFWorkbook без dispose() в Apache POI

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

Меня зовут Игорь Симаков, работаю engineering manager’ом и руковожу командами разработки

На одном из наших сервисов, который работает с XLSX-файлами, прилетел production-алерт на высокое потребление памяти. Стандартный P3, обычно решается рестартом. Пошёл смотреть поды и нашёл проблему, к памяти отношения не имеющую, но представляющую больший риск, чем сам алерт. Об этом и расскажу ниже: чем «утечка диска» отличается от «утечки памяти», как мы наткнулись на грабли в Apache POI и как закрыли их на уровне архитектуры

Читать далее

Java — быстрая. Ваш код может таким не быть

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

Есть такие анти‑паттерны, которые выглядят нормально и даже проходят код‑ревью, но тихо убивают производительность в горячих местах: 

- Конкатенация строк в циклах

- String.format() в горячем коде

- Автобоксинг 

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

Если вы пишете на Java и у вас всё вроде работает, но под нагрузкой сервисы начинают задыхаться, в новом переводе от команды Spring АйО рассмотрим конкретные паттерны, на которые стоит посмотреть.

Читать далее

C# мне нравится больше Java. Но в банковском enterprise мне всё равно понадобилась Java

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

C# я до сих пор считаю одним из самых удобных языков для backend разработки. В нём много вещей к которым быстро привыкаешь: свойства, LINQ, async/await, generics без type erasure, хороший tooling и понятная модель разработки.

Но банковский enterprise редко выбирает стек только по удобству языка. На практике важны не только синтаксис и экосистема, но и инфраструктура, сопровождение, безопасность, регламенты, legacy, найм, CI/CD, требования к платформам и долгосрочная стратегия организации.

Так я оказался в ситуации где C# мне субъективно нравится больше, но Java объективно стала полезнее в конкретном банковском контуре.

Эта статья не про холивар C# vs Java. Это попытка спокойно разобрать почему backend разработчику в enterprise иногда приходится расширять стек, даже если текущий язык его полностью устраивает.

Почему в банке выбирают стек не только по

Кейс. Zero Bug Policy: как мы снизили бэклог багов в 4 раза за месяц

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

Баги — неизбежная часть разработки. 

В этой статье расскажу наш опыт: как мы внедрили Zero Bug Policy в нашем стартапе (B2B fintech) и за месяц сократили backlog с 77 до 18 багов. А главное — как это изменило культуру и отношения с клиентами.

Прочитать про кейс

Как настроить observability в Spring Boot 3

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

Микросервис работает, но иногда тормозит — и вы не знаете, где копать. Логи чистые, метрики в норме, а пользователи жалуются. Знакомо?

В статье разбираем, как настроить полноценную observability в Spring Boot 3 за 7 шагов: метрики (Prometheus), трейсинг (Zipkin), логи (Loki) и единый дашборд в Grafana. Без магии, с кодом и проверками.

Читать далее

Книга: «Современный Java Concurrency. Глубокое погружение в Virtual Threads, Structured Concurrency и Scoped Values»

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

Привет, Хаброжители! Добро пожаловать в будущее Java! Изучите главное новшество Java 21 — виртуальные потоки. Помните, как приходилось бороться с высокой стоимостью создания потоков, сталкиваться с ограничениями масштабируемости и трудностями при попытке достичь высокой пропускной способности? Те дни прошли! Это практическое руководство проведет вас от Java 1.0 до прорывных достижений Project Loom.

Читать далее

Java 21 в стиле «клятый энтерпрайз» на одноплатном компьютере возрастом 13 лет

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

Можно ли успешно эксплуатировать Java-приложение на Raspberry Pi Model B? А если Java — 21‑я, а Spring Boot, на котором основано приложение — версии 4.0.5? Когда сборка «автомагически» оформляет .jar-файл размером под 40 мегабайт, а у «Малинки» тех мегабайт всего 512, и не забываем про операционную систему и рантайм Java. И как «до такого» [соотношения имеющихся и используемых ресурсов] можно «докатиться»?

TL;DR;-версия: можно. Если допустимо время старта около 5-и минут и расход примерно 40% доступной оперативной памяти, то приложение может работать в режиме 24/7 месяцами, обеспечивая вполне достойное (с учётом производительности «Малинки») время отклика. А «докатиться» оказалось легко, однажды «поскользнувшись» на DIY-рецептах из Интернета, и в качестве альтернативы опробовав методологию «клятого энтерпрайза» в домашнем pet-проекте.

«Энтерпрайзим Малинку» с контролем JMeter

Java и постквантовый TLS

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

В JDK 27 появится JEP 527: гибридный post-quantum key exchange для TLS 1.3. Разбираем, что меняется в JSSE, зачем нужен X25519MLKEM768 и какие проблемы могут всплыть при миграции.

А ты готов к квантовым атакам ?

Что сейчас с Project Loom? Примеры и код

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

Практика Project Loom: как включить preview Structured Concurrency в javac, Maven и Gradle, как использовать ScopedValue для request context и StructuredTaskScope для параллельных вызовов, joiner’ы, timeout и связка обеих фич в одном примере. Примеры под JDK 25+

Что же с Project Loom?

Соль и перец в безопасности паролей

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

Безопасность данных сегодня стала главным приоритетом для любого веб-ресурса. Базовым стандартом защиты учетных записей является хеширование паролей. Этот процесс превращает конфиденциальные символы в необратимый код. Без него утечка базы данных мгновенно скомпрометирует пользователей.

Однако обычного хеширования недостаточно из-за угрозы быстрых хакерских атак. Для защиты разработчики применяют «соль» (salt) — случайные данные, добавляемые к паролю. Минус соли в том, что она хранится рядом с хешем и не спасает от мощного перебора. Тогда на помощь приходит «перец» (pepper), скрытый в коде сервера. Его главная проблема — высокий риск потерять доступ ко всем аккаунтам при компрометации самого секретного ключа.

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

Читать далее

Python в enterprise: момент, когда пора открыть Java не только ради собеседований

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

Интернет любит вечные войны: Linux против Windows, Vim против IDE, tabs против spaces. И, конечно, Python против Java. Одни говорят: «Python уже готов для enterprise». Другие считают RPS и стоимость инфраструктуры.

Под катом — история реального выбора для аэропортовой системы AWOS: почему строгая типизация, бинарная переносимость и современный GC перевесили лаконичность — и что стоит попробовать Python-разработчику.

Читать далее

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

Что сейчас с Project Loom? Structured Concurrency: preview №7

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

Project Loom меняет привычную модель конкурентности в Java: virtual threads делают потоки дешевле, Scoped Values дают аккуратную передачу контекста, а Structured Concurrency помогает управлять жизненным циклом связанных задач. Разбираем актуальное состояние Loom в JDK 25-27 и что из этого уже можно использовать.

Читать далее

«Где новые фичи?» — Как AI-миграция легаси вернет IT-бюджет бизнесу

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

Наверное, каждый, кто занимался эксплуатацией и развитием корпоративных систем, знает эту бесконечную претензию от бизнеса: «Мы столько тратим на IT – а результата ноль. Новых продуктов нет. Или они появляются мучительно медленно». И бизнес по-своему прав. Если из каждого рубля, потраченного на IT, менее 20 копеек уходит на то, что видит клиент – скорость появления новых продуктов будет именно такой, какая она есть - неудовлетворительной.

Читать далее

Сможете ли вы спроектировать Maven‑монорепозиторий для 5 микросервисов?

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

В этой статье мы разберём реальную задачу на проектирование Maven Multi‑Module: от циклических зависимостей и неправильного использования spring‑boot‑maven‑plugin до смешения ролей агрегатора и родителя. Затем соберём эталонную структуру по лучшим практикам Spring Cloud и Netflix, добавим CI/CD‑диаграмму и научимся запускать сервис локально без Eureka и RabbitMQ.

Найти ошибки

История одного // todo, который год ждал своего часа

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

// todo: тут N+1 на invoice — надо переделать через entity graph.

Этот комментарий висел в коде полтора года. Все, кто заходил в файл, его видели. Никто не завёл тикет. В пятницу вечером он сработал — и забрал с собой три пода, 30% запросов на критичной ручке и моё спокойствие на выходные.

Читать далее

Spring AI: феноменология цифрового сознания, или Как я перестал бояться и полюбил облачные модели

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

Привет. Меня зовут Николай Пискунов, я руководитель направления Big Data и эксперт курса Cloud DevSecOps по безопасной разработке от Академии вАЙТИ Beeline Cloud. Ранее я уже писал обзорную статью про конкретную реализацию клиента для Ollama. Но чем глубже я погружался в код, тем отчетливее понимал: разговор о конкретном клиенте — это разговор о следствии. А мне хочется поговорить о причине. Об инструменте, который делает возможным любой клиент. О Spring AI.

Читать далее

Параметризация в JUnit 5 и Allure Report

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

Статья — перевод англоязычного руководства

При написании автотестов мы часто используем параметризацию — запуск одного и того же теста с разными данными. В этой статье мы разберём, какие задачи решает параметризация, как она реализована в JUnit, и как с ней работать в Allure Report.

Читать далее

Java Рок Стар Митап: про @Transactional в Spring и зачем нужны новые языки программирования

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

28 мая. Москва. Java Рок Стар Митап. Ничего лишнего.

В программе: превратности @Transactional в Spring, зачем нужно такое количество языков программирования и, конечно же, офлайн‑общение.

Регистрируйтесь на митап по ссылке.

P. S. А пока присоединяйтесь к нашему ТГ‑каналу и чату Java Rock Stars Meetup, чтобы быть в курсе новостей митапа.

Читать далее