Все потоки
Поиск
Написать публикацию
Обновить
203.02

Java *

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

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

Компилируем компилятор или ускоряем javac вдвое

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.8K

Ну блин короче :-)

Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе.

Мы ускорили javac вдвое и теперь можно экономить на сборке.

Читать далее

Java Digest #23

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

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

В этом выпуске будет много релизов, один из них — новый майлстоун Spring 7.0.0, а еще — новые версии Quarkus и Kora. Снова узнаем, как сделать Spring быстрее, вспомним старые хорошие доклады в новом формате и посмотрим на фичи Java 24 на примере крестиков-ноликов.

Читать далее

Как бросить исключение без throws в Java: технический разбор с примерами

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

В Java существует старое, но всё ещё актуальное ограничение: если метод бросает checked-исключение (например, IOException), он обязан явно объявить это с помощью throws. Это требование — не от JVM, а от компилятора. Компилятор жёстко следит за декларациями, но вот JVM — нет. Что создаёт любопытную лазейку: обойти компилятор, оставаясь при этом в рамках спецификации JVM.

Сегодня разберёмся, как это сделать с помощью Unsafe.throwException(), почему это вообще работает, где это может пригодиться, и на что стоит обратить внимание при использовании Java 17, 21 и 24.

Читать далее

Hibernate, JPA, N+1 и лишние запросы в БД

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

Введение

В начале статьи, хотел бы отметить, что если вы только начинаете изучать проблему N+1, возможно вам стоит отложить чтение данной статьи или учитывать, что она рассматривает эту проблему не как изолированный факт, а как часть процессов приводящих к замедлению производительности приложения. Последующие тезисы и аргументы, могут сместить фокус с общих аспектов проблемы N+1, на частные и нехарактерные, такие которые затруднят общее понимание проблемы. Также в этой статье только косвенно затрагиваются способы решения этой проблемы. В основном, эта статья оценивает и выявляет причины, которые приводят к лишним запросам в БД.

Читать далее

Не сказ, а быль: Java-дев среди сисадминов

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

Долго ли, коротко ли, служил я java-разработчиком, да судьба-злодейка, крутанула меня в Platform Engineer’ы. Овладел я ремеслом devops’ским да сисадминским, но по ночам снится мне low-level Java, но быль моя совсем чуть-чуть об этом будет - поглаголю о JVM опциях, дабы приложение в k8s без дури запускать. Расскажу, как доблестно (а может, и безрассудно) SeaweedFS S3 storage выбирал, как кластер k8s поднимал, не щадя живота своего. Читай сии записки, запивая иван-чаем или медовухой: авось, умная мысль глянет меж строк. Не глянет — так хоть посмеёшься над моим devops экспириенсом.

Развернуть сказы

Обратная сторона фреймворков

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

Что станет с вашим замечательным проектом в перспективе, если построить его на чужих технологиях? Многие подозревают, некоторые догадываются а я рассказываю. Из первых рук и на личном опыте.

Читать далее

Настройка односторонней аутентификации (One-Way SSL) для kafka

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

Часто при разработке небходимо иметь на локальной машине сервер kafka с ssl аутентификацией.
Надеюсь эта статья поможет быстро поднять его и приступить к разработке.

Читать далее

OpenIDE ищет партнера в сфере ИИ

Время на прочтение5 мин
Количество просмотров2.4K

ИИ-ассистенты прочно вошли в арсенал разработчиков, особенно в составе современных IDE. Они обещают ускорить написание кода и упростить решение задач. Мы в OpenIDE считаем это стратегическим направлением и обсуждаем партнерство с ведущими компаниями в области ИИ для внедрения более эффективных подходов к разработке. Напомним: OpenIDE это открытая российская среда разработки, создаваемая Haulmont совместно с Группой Астра и Axiom JDK.

Но действительно ли ИИ-ассистенты выполняют эти обещания? Похоже, не всегда. В статье разберемся, почему ожидания от ИИ-ассистентов часто не оправдываются — и что может сделать их действительно полезными.

Читать далее

Не только React: сравнительный анализ React и Jmix для написания UI бизнес-приложений

Время на прочтение31 мин
Количество просмотров2.9K

Раньше, когда трава была зеленей, а доллар стоил 30, в мире enterprise-разработки преимущественно использовались десктопные приложения. Если вспомнить, как выглядели пользовательские интерфейсы в то время, то перед глазами возникает грустная и серая картина из кучи таблиц, кнопок, форм и бесконечно открывающихся экранов поверх других экранов. Также не забудем про тот факт, что бизнес довольно сдержанно относится к любым изменениям, особенно если они требуют дополнительных трат. Из всего этого можно сделать вывод, что красивого UI бизнес-приложений не могло существовать в то время. Однако современные фреймворки, такие как React, позволяют довольно быстро построить красивый и функциональный интерфейс. Но React'ом ли единым? Есть ли другие инструменты для эффективного написания бизнес-приложений?

VK Cloud — облачная платформа, объединяющая современные технологии для разработчиков и бизнеса, нацеленных на эффективное внедрение инновационных решений. В сотрудничестве с партнерами, такими как JMIX, мы стремимся делиться практическим опытом, который помогает компаниям ускорять процесс разработки и оптимизировать затраты на сопровождение приложений. В этой статье мы представляем материал, подготовленный экспертами JMIX и посвященный подходам и лучшим практикам разработки приложений.

Читать далее

Статический анализ кода для Spring: выполните анализ, исправьте критические ошибки и отправляйтесь на пляж

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

Почему статический анализ кода для Spring так важен? 72% наших пользователей JVM используют Spring в своих приложениях, особенно в таких отраслях, как производство и финансы. Почему? Spring делает программирование на Java и Kotlin более быстрым, простым и безопасным для всех, но при этом возникают уникальные проблемы.

Читать далее

Оптимистичная блокировка в Hibernate если у вас DDD (и не только)

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

Привет, хабр!

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

Проблема:

Думаю, многим известно что, в целом, реализация оптимистичной блокировки в Hibernate проще некуда - всё что нужно сделать это добавить поле version с аннотацией @Version в вашу энтити. Bот так:

Читать далее

Как я добился гибкости в приложении и при чем тут ссылки на методы?

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

Всем привет! Меня зовут Макс, и уже 14 лет как я вошел в ИТ и пока не планирую отсюда выходить. Последние 7 лет я не только сам пишу код, но и занимаюсь «выпасом котов». К написанию статьи меня побудила моя любовь к ссылкам на методы и желание поделится «кастомными» способами их использовать вне базовых классов java. Если вы задумывались об усилении гибкости приложения и преимуществах AOP, но вас отпугивают его недостатки, в статье предлагаю рассмотреть вариант получения тех же (ну или почти тех же преимуществ), но без раздражающих (по крайней мере меня) недостатков. Для использования идей из статьи не требуется каких‑то особых магических знаний, достаточно знать, что такое функциональный интерфейс.

Читать далее

От Kotlin до кассовых чеков: как выглядит Java-разработка в SM Lab

Время на прочтение6 мин
Количество просмотров2.5K

Когда видишь компанию со стороны, одни вещи понимаешь, а другие остаются секретом. О том, что SM Lab отвечает за IT-решения в группе компаний «Спортмастер», можно догадаться уже по названию и логотипу. Но, например, сколько разработчиков заняты этими решениями? Какие именно у них проекты? Это куда менее очевидно.

Мы проводим конференции по разным IT-направлениям, на них неоднократно выступали спикеры из SM Lab, и некоторые вещи можно понять по их докладам. Например, на Mobius рассказывали про «Генерацию этикеток для термопринтеров на основе языка разметки ZPL», а на Heisenbug помогали другим с «Первыми шагами в нагрузке».

А на этой неделе SM Lab примет участие в нашей Java-конференции JPoint, и я решил, что сейчас самое время задать вопросы о Java-разработке сотрудникам самой компании. Публикую результат, в котором соединены вместе ответы нескольких разных людей.

Читать далее

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

Лучшие практики создания отказоустойчивых систем

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

Разработка отказоустойчивых систем представляет собой важнейшую компетенцию для инженеров, занятых созданием распределённых и масштабируемых приложений. Под отказоустойчивостью понимается способность системы сохранять работоспособность в условиях сбоев отдельных компонентов или недоступности внешних сервисов. В данной статье рассматриваются практики обеспечения устойчивости на уровне программного кода, в частности в контексте серверных приложений, реализованных на языках Python и Java.

Особое внимание уделяется методам повышения надёжности при временных сбоях, включая: повторные попытки выполнения операций с экспоненциальной задержкой (exponential backoff), использование шаблона circuit breaker, механизмы плавной деградации функциональности (graceful degradation), задание таймаутов, реализация идемпотентности, ограничение одновременных вызовов (bulkhead isolation), а также внедрение систем мониторинга и алертинга. Приводимые примеры охватывают типовые сценарии — обращение к внешним API, взаимодействие с базами данных и выполнение фоновых задач.

Читать далее

3 вопроса на собеседование о многопоточности в Java

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

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

Сегодня рассмотрим несколько вопросов на собеседовании, которые могут встретиться: чем synchronized отличается от ReentrantLock, что такое happens-before и как оно влияет на volatile и final и почему ConcurrentHashMap.computeIfAbsent() не всегда безопасен?

Читать далее

Хранение 1 ТБ в виртуальной памяти на компьютере с 64 ГБ памяти с использованием Chronicle Queue

Время на прочтение4 мин
Количество просмотров5K

Java разработчики часто сталкиваются с проблемой обработки очень больших наборов данных в рамках ограничений виртуальной машины Java (JVM). Когда размер кучи значительно увеличивается — часто более чем на 32 ГБ, — время паузы при сборке мусора (GC) может увеличиваться, что приводит к снижению производительности. В этой статье рассматривается, как Chronicle Queue обеспечивает хранение и эффективный доступ к набору данных размером 1 ТБ на компьютере с 64 ГБ оперативной памяти.

Читать далее

Ускорение Spring REST API на 200%

Время на прочтение7 мин
Количество просмотров11K

Spring Framework уже многие годы является базой, на которой разрабатывается подавляющее большинство серверных приложений на Java. Он предоставляет абстракции над множеством различных технологий, в том числе и абстракции для разработки REST API. Все эти абстракции имеют свою цену в плане производительности, и иногда эта цена является очень большой, если речь идёт о высоконагруженном приложении. В этой небольшой статье я покажу, как можно избавиться от ненужных накладных расходов и значительно увеличить производительность вашего API.

Читать далее

Библиотека для кэширования Caffeine: анализ кода

Время на прочтение18 мин
Количество просмотров5.2K

То и дело, прожигая время за чтением reddit, я натыкаюсь на очередной пост, в котором упоминается метод S3 FIFO и говорится, что он лучше LRU (вытеснение реже всего используемых значений) — потому, что даёт более низкий процент промахов кэша. Видные компании, в частности, RedPandas, Rising Wave и Cloudflare уже внедрили S3 FIFO у себя на различных мощностях, что только подогрело мой интерес к нему. Кэши — чертовски интересная тема, а по работе мне приходится сильно полагаться на работу с кэшами при обслуживании нескольких сервисов. Так что я был уверен, что рано или поздно мне потребуется протестировать S3 FIFO или, как минимум, удостовериться, что я понимаю ключевые идеи, заложенные в этой технологии.

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

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

Читать далее

Что такое lsFusion: взгляд со стороны

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

Эта статья – небольшой обзор продуктов компании lsFusion и того предалагает пользователям компания lsFusion. Взялся я за него после того, как в статьях «Почему я не люблю 1С» и «Стоит ли идти в 1С программисты в 2025 году» упомянул эту систему как одну из возможных альтернатив 1С. На тот момент я только читал о том, что есть такая система как lsFusion на Хабре, из любопытства заходил на их сайт и просматривал в поиске дополнительную информацию. Тогда я ее упомянул только как «одну из систем» в перечне альтернатив, так как сами они явно позиционируют себя как учетная система.

Далее уже в комментариях я увидел большой тред, где сравнивали 1С и lsFusion. Мне стал интересен автор комментариев, оказалось, что это работник lsFusion. Я с ним связался, чтобы самому лучше понять, что же это за программный продукт. Получил ответы на многие собственные вопросы, изучил ближе саму систему. И теперь хочу поделиться тем, что узнал, чтобы помочь людям, которые находятся в поиске альтернативы 1С.

Читать далее

Hibernate proxy and N+1

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

Это вторая статья, связанная с пониманием, поиском и устранением проблемы N+1. Первая статья была про стратегии извлечения данных. Эта статья будет про Hibernate proxy. Понимание концепций стратегии извлечения данных и Hibernate прокси, это ключи к пониманию причин, приводящих к N+1. Подробней про N+1, будет рассказано в следующих статьях.

Читать далее

Вклад авторов