Обновить
212.71

Java *

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

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

Стандартизация без боли: как строгий синтаксис экономит время и нервы

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

Когда проект начинается, разработчику хочется только одного — свободы творчества. Писать код быстро и так же быстро получать результат. Но со временем появляются баги, регрессии, архитектура, миграции... И вот тогда свобода оборачивается болью: оказывается, что один и тот же результат в коде можно выразить десятком способов — и все они несовместимы друг с другом.

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

Читать далее

«Я слышу свой код»: как работает Java-программист, потерявший зрение

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

Константин Евтеев @beginner760собирает Java-код с помощью диктора NVDA, редактирует его в Блокноте и передает на Linux по SSH через самописные bash-скрипты. Он рассказал нам, почему после потери зрения не потерял интереса к жизни и желания быть полезным и как выстроил собственную инженерную экосистему: оглавления по строкам .txt-файлами, навигация по main и маленьким методам, отладка на слух.

Читать далее

jpeek – когда SonarQube мало

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

Сегодня в любой более-менее серьезной компании, где настроен CI/CD, используется SonarQube. Это уже стандарт де-факто — он умеет проверять определять code smells, измерять цикломатическую сложность, определять дублирование, уровень покрытия тестами, распознавать недостижимый код, подсчитывать размеры методов и классов и многое другое. Настроили, подключил к CI — и вроде бы все хорошо.

Но...

Читать далее

Как я учил жёлтый ИИ торговать и обманывать друг друга

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

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

Читать

Архитектурные принципы Spring Security. Часть вторая

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

Команда Spring АйО перевела и адаптировала доклад Даниэля Гарнье-Муару “Spring Security Architecture Principles”, в котором на наглядных примерах рассказывается, как пользоваться возможностями Spring Security, не запутываясь на каждом шагу и не зарабатывая себе головную боль. 

Доклад публикуется тремя частями. В первой части было рассказано об основных подходах к созданию цепочек фильтров, а также разработан простейший фильтр. Во второй части мы расскажем об Authentication объектах и продемонстрируем, как разработать специализированный фильтр для обеспечения доступа программы-робота к основному приложению.

Читать далее

10 техник оптимизации Java, которые выведут вас на новый уровень

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

Когда Java-приложение внезапно начинает «подвисать», причина почти всегда кроется в прозаичных деталях: неоптимизированных циклах, неудачном выборе коллекций, забытом кэше или агрессивном GC. В этой статье — 10 практических техник, которые помогут выжать максимум из JVM без преждевременной микрооптимизации и шаманства. Только доказавшие свою эффективность подходы, которые реально работают в проде — от финтеха до высоконагруженных API.

Читать далее

Почему java -jar игнорирует твой -cp и как это обойти

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

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

Когда java -jar цинично игнорирует ваш -cp, хочется грустить, но спокойствие, сегодня рассмотрим, почему так происходит и как это обойти.

Читать далее

Разработка Java-проекта с Jmix AI Assistant, часть 2

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

В первой части статьи с помощью инструмента Jmix AI Assistant начато создание системы для проведения онлайн курсов.

Были сгенерированы сценарии использования (use cases), разработана UML-диаграмма в формате PlantUML для этих use cases, разработана доменная модель для системы и ее реализация на JMIX. Далее все классы разбиты по пакетам.

Продолжим эксперименты по разработке кода с помощью Jmix AI Assistant, включая следующие:

- Генерация класса, заполняющего доменную модель тестовыми данными

- Генерация REST API для модели домена, включая создание контроллеров и REST сервисов

- Генерация пользовательского интерфейса

Читать далее

Spring Data Ahead of Time репозитории

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

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

Читать далее

Иногда приходится¹ копаться² в кишках³ Apache Spark

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

¹ …просто потому, что другого варианта добиться необходимого результата тупо не существует.
² и да, довольно-таки глубоко.
³ нет, серьёзно!



Давайте рассмотрим следующий бизнесовый кейс.


Дано: реально большие данные. Очень много датасетов по много терабайтов каждый, — в сумме объём тянет на петабайты. Лежат в облаке, но это не важно. Важно, что мы эти данные покупаем в «сыром» виде, каким-то образом «готовим», а потом перепродаём конечному потребителю.


Требуется: при подготовке каждого из датасетов разделить его согласно значениям одного или нескольких полей, составляющих его записи, на несколько. И это одна из особенно часто встречающихся в нашем процессе операций.


Довольно-таки сложный, продвинутый ETL у нас. Поясню на типичном примере.

Читать дальше →

Один assert на тест. А может быть, нет?

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

Команда Spring АйО перевела статью эксперта Михаила Поливахи о том, почему правило о единственном assert'е на тест иногда можно и нужно нарушать.

Читать далее

Проектируем архитектуру Camunda Cloud: подключаем движок процессов к вашему миру

Время на прочтение8 мин
Охват и читатели719

Вы начали свой первый проект, используя автоматизацию бизнес-процессов как сервис с Camunda Cloud? Одной из первых задач будет набросать базовую архитектуру вашего решения. Этот блог-пост поможет вам ответить на важные начальные вопросы: как подключить движок выполнения процессов Zeebe к вашему приложению или к внешним системам? Что такое job worker, какую роль он играет и сколько их вообще нужно?

Читать далее

Как пропатчить Intellij Idea для FreeBSD

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

Здравствуйте, эта статья не про аниме, но мы точно знаем как пропатчить Intellij Idea для FreeBSD. И не боимся об этом рассказывать.

Читать далее

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

Как я открыл WebSocket для Сомников из Чёрного Зеркала, а они начали водить хороводы

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

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

Читать далее

Двоичная Java: CDS, CRaC и AOT для ускорения запуска и прогрева JVM

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

Это текстовая версия доклада с HighLoad++ 2024, с которым выступал один из наших бывших девелопер-адвокатов @RustamKuramshin Также есть отдельная запись доклада, сделанная силами участников программного комитета HighLoad++.

Читать далее

Java Highload и сборка мусора

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

Разработка HL-решения со строгим SLA по RPS и latency затрагивает множество аспектов. В частности OLTP, мультиплексирование запросов, неблокирующий I/O и прочее. В данной статье хотел бы поговорить про сборку мусора. Мы не будем погружаться в цитирование спецификации. Напротив, взглянем на сборку глазами инженера, перед которым стоит задача оптимизировать процесс с минимальными издержками.

Читать далее

Docker в песочнице: Запуск контейнеров без root-прав и привилегий

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

Приветствую всех! В своей прошлой и по совместительству первой статье я рассказывал про упаковку приложения в докер контейнеры. В комментариях мне сделали замечание, что я не упомянул про защиту приложения и запуск от non-root. Что ж, исправлюсь и сделаю это в отдельной статье. Напомню, что я написал простое приложение для голосование за лучший ресторан и попытался по простому объяснить как произвести его контейнеризацию. Также уточню, что упор я делаю именно упаковку приложения в докер контейнеры, а не на бизнес-логику и UI.

Читать далее

Опрос: тестовое покрытие — must-have или bullshit

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

Всем привет! Судя по ответам, которые мы получили от посетителей конференций Joker, Heisenbug и JPoint, примерно в половине компаний есть требования по набиванию тестового покрытия (обычно 60-70% кода должно быть покрыто тестами).

Однако, при личном общении с разработчиками и тестировщиками мы постоянно слышим, что никаких требований нет и покрытие никак не контролируется.

Кто отвечает за тестовое покрытие? Должны его набивать разработчики или эта задача ложится на плечи тестеров? Будем благодарны, если ответите на 1 (один) вопрос. Если хочется поговорить о наболевшем и рассказать, как у вас в проекте обстоят дела с тестовым покрытием, пишите в комментарии.

Всем хорошей пятницы и классных выходных!

Скачать последнюю версию Explyt Test плагина можно на сайте или напрямую с GitHub.

Для обратной связи и сообщений об ошибках: GitHub Issues

Для общения: t.me/explyttest

Опрос в один вопрос

Сегодня — Java 30 лет: ретроспектива выдающейся экосистемы разработки

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

Сегодня Java исполняется 30. Три десятилетия — это эпоха. За это время технологии успели смениться кардинально, а некоторые модные языки — появиться, поиграть мускулами и тихо исчезнуть. А Java по-прежнему тут. Она не просто "ещё жива" — она стабильно занимает лидирующие места в рейтингах, используется в крупнейших корпорациях и продолжает эволюционировать. Как так получилось?

В этой статье я расскажу, почему Java прожила 30 лет и всё ещё чувствует себя уверенно: как она развивалась, как решаются проблемы производительности JVM, и почему на неё до сих пор делают ставку разработчики, архитекторы и CTO.

Предаться воспоминаниям

Стратегическое партнёрство Kotlin и Spring

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

Команда Spring АйО перевела новость о стратегическом партнёрстве Kotlin и Spring. Полная null-безопасность, официальные обучающие материалы, мощная рефлексия и выразительный DSL — звучит многообещающе.

Читать далее

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