Прагматичное функциональное программирование в Java
Прагматичное функциональное программирование в Java при помощи монады XResult<T>
, которая сочетает в себе свойства Optional<T>
, Result<T>
и Either<L,R>
Объектно-ориентированный язык программирования
Прагматичное функциональное программирование в Java при помощи монады XResult<T>
, которая сочетает в себе свойства Optional<T>
, Result<T>
и Either<L,R>
В этом проекте я хотел ответить на вопрос: возможно ли написать игру на Java для Sega Mega Drive/Genesis. Не хочу раскрывать спойлеры, но ответом будет «да».
Несколько лет назад я повстречал проект Java Grinder, который позволяет писать код для различных ретро процессоров на Java, в том числе для Sega Mega Drive. По сути, он интерпретирует байт-код из файлов .class, полученных после компиляции, в код на Ассемблере 68K. Если файлу класса нужны другие файлы классов, то они тоже считываются и обрабатываются. Все вызовы методов API записываются в выходном коде, либо как встроенный ассемблерный код, либо как вызовы предварительно написанных функций, выполняющих свою задачу.
Понимание размера объектов в Java — важный шаг для оптимизации памяти в высоконагруженных системах.
В новом переводе от команды Spring АйО вы узнаете про использование HotSpot JVM таких механизмов, как сжатые указатели (Compressed Oops) и компактные заголовки объектов (Compact Object Headers), необходимых для минимизации объема занимаемой памяти.
За окном январь 2025 года, а это значит, пора подвести итоги за 2024 год! В этой статье вы узнаете, чем занималась команда PVS-Studio в прошлом году: новые плагины, интеграции, фичи и многое другое!
Бернд Рюкер рассказывает о о преимуществах использования паттерна external task по сравнению с JavaDelegate и уверяет, что это совсем не больно. А если вы хотите использовать standalone-движок, то в общем-то у вас нет выбора, только external task.
Привет, Хабр!
Сегодня поговорим про JSpinner — инструмент, который может показаться чем‑то простым и заурядным. Но это только на первый взгляд. На деле он может стать мастхев инструментом в разработке удобного и надёжного интерфейса.
JSpinner — это компонент для выбора значений из заранее заданной последовательности. Цифры, строки, даты — всё, что душе угодно. И его главная фича — минимизация ошибок: пользователь выбирает значения, а не вводит их вручную.
Мы инженерная компания, которая занимается производством инструментов и платформ для корпоративной разработки. Недавно перевыпущенный для Jmix BPM-плагин активно набирает популярность в России и в мире. Мы получаем обратную связь от разработчиков и руководителей проектов. Многие сетуют на ограниченность BPMS. Он мёртв, окончательно и бесповоротно.
Ну просто потому, что для сколь-либо понятных и устоявшихся на рынке деловых или отраслевых процессов уже представлены специализированные платформы, а настроить что-то прорывное и кастомное на единой унифицированной BPMS платформе всё равно невозможно. Вендоры в погоне за расширением рынка превратили свои платформы в неповоротливых монстров по мере перетаскивания в коробки удачных фичей с клиентских проектов. Особенно веселят модули процессной аналитики, которые почти никто не использует. Нет области применения для этого класса систем, она сузилась до того предела, за которым содержать отдельную большую платформу в контуре предприятия становится экономически нецелесообразно. На смену идет процессная разработка на open-source стеке и с более высокой инженерной культурой внутри организации, необходимой для скорейшего восприятия и адаптации под нужды предприятия новых технологических возможностей (облака, роботы, ИИ и т. п.).
Цифровая и бизнес трансформация
Бизнес трансформация и цифровая трансформация гораздо шире, чем оптимизация организационной структуры или цепочек взаимодействия внутри предприятий. Современная передовая практика в области процессного управления предлагает начинать с цепочек создания ценности, проходя через этапы переобучения, изменений культурного кода и принципов взаимодействия внутри корпоративной среды. Чтобы выживать и процветать во все более конкурентном цифровом мире, предприятиям необходимо культивировать у себя способность к постоянной адаптации. Но адаптации не в варианте постоянных метаний “из стороны в сторону”, а с учетом стратегических целей компании и с упором на максимальную эффективность.
Команда Spring АйО рада поделиться с новостью от JetBrains: стала доступна вторая версия EAP IntelliJ IDEA 2025.1.
Среди нововведений — поддержка Containerfile и обновления для Dockerfile.
Введенный в 2015 году, паттерн внешней задачи (external task pattern) становится всё более популярным. Вместо того чтобы движок процессов активно вызывал какой-либо код (push), паттерн внешней задачи добавляет работу в некую очередь и позволяет воркерам (workers) извлекать их по мере необходимости. Этот метод также известен как публикация/подписка (publish/subscribe). Движок процессов публикует задачи, а воркеры подписываются на их выполнение.
Сегодня любой Java разработчик сходу сможет правильно ответить на вопрос "Как смапить дату и время из колонки таблицы БД на поле в Java классе?". Или нет?
На самом деле, нюансов по ходу решения этой задачи может возникнуть немало.
В новом переводе от команды Spring АйО рассказывается про подробности работы с современным API java.time
, правильный маппинг данных с учётом часовых поясов, устаревших типов java.util.Date
, Calendar
и многое другое.
Это первая статья из четырех, в которых я попробую подробно описать и найти решение проблеме N+1. Первые две статьи, должны раскрыть причины, которые могут приводить к проблеме N+1. В третьей статье я предложу варианты поиска этой проблемы. В четвертой статье предложу рабочие варианты решения.
N+1 уже набила всем, N+одну оскомину, но до сих пор не теряет актуальность. Со своей стороны, могу сказать, что исключение из кода дополнительных запросов в базу, может значительно ускорить работу вашего приложения.
Преимущества асинхронного взаимодействия ясны многим, однако работа с библиотекой WebFlux часто вызывает затруднения у Java-разработчиков
В этой статье разложены основы работы с webclient и реактивными стримами, взаимодействия Издателя и Подписчика, а также обработки ответов и ошибок, возникающих в процессе выполнения программы
Привет, Хабр! На связи Егор, бэкенд-разработчик из команды Портфолио в Т-Банке. Мы занимаемся актуализацией данных компаний и периодически внедряем новые подходы в наши процессы разработки.
В последнее время мы часто выпускаем новую функциональность, используя метод канареечных релизов. Хочу рассказать о том, как мы это делаем. У себя на проекте мы используем Camunda, поэтому в статье разберем, как более безопасно выпускать новые версии bpmn-схемы на прод, минимизируя влияние багов на пользователей.
Статья написана с учетом того, что читатель уже знаком с Camunda и имеет опыт разработки приложений на этом движке.
Упаковка и развёртывание фронта внутри бэка.
Иллюстрация возможности развернуть фронт на основе встроенного в spring web-сервера.
Последние 10 лет я занимаюсь java разработкой и на протяжении всего этого времени Intellij Idea является неотъемлемой частью моей(да и многих других джавистов) работы. К сожалению некоторых вещей, которые были бы удобны лично мне, в ней нет, но к счастью есть возможность расширять IDE с помощью плагинов. На моём ноутбуке установлен linux и нет какой-то удобной нотификации событий из корпоративного календаря, а IDE практически всегда открыта на главном мониторе. По этой причине(а ещё из-за внезапно появившегося окна свободного времени и простого интереса) я решил, почему бы не интегрировать календарь прямо в IDE, чтобы получать нотификации и точно не пропустить ничего важного?
Об этом и пойдёт речь в статье.
Поговорили с Денисом Хахалкиным, QA Lead — Wallarm, ex. Ozon — о том, как подготовить резюме для прохождения первичного отбора ресёрчерами и HR‑специалистами на российском рынке труда. Обсудили, как правильно выбрать опыт для включения в резюме, чтобы он был актуален для желаемой должности, почему не стоит врать в резюме и как и когда стоит упоминать о пройденных курсах и полученных сертификатах, чтобы не отпугнуть потенциальных работодателей.
Всем привет! Я работаю на собственном проекте Максилекта. Это высоконагруженная AdTech платформа, включающая Ad Exchange сервер и сопутствующие компоненты. Но в этой статье речь пойдет не совсем о проекте. Я бы хотел поговорить об асинхронщине в задачах подобного масштаба. Просто на примеры из проекта мне будет удобно ссылаться.
Я не буду подробно останавливаться на том, что такое асинхронность. Подход старый, в интернете есть чудовищное количество информации. Но расскажу о некоторых наблюдениях - будет пища для ума в контексте того, стоит ли тащить ее в свои проекты.
Интеграция различных ИТ-систем — задача, с которой сталкиваются многие компании, особенно когда необходимо объединить все существующие решения в единую экосистему. Думаю, что все хорошо знакомы с тем самым спагетти-стайлом, страшилкой про то как не надо делать это объединение. Для наглядности картинка ниже.
Эта статья будет полезна новичкам в разработке или тем, кому нужно освежить знания перед собеседованиями. Как ни странно, но вопросы о том, как устроен HashMap, всё ещё встречаются среди интервьюеров.
По моему мнению, лучший способ разобраться в теме — это заглянуть в документацию с примерами и изучить исходный код. Но если вы сами пока не готовы копаться в коде, я проведу вас по основным моментам.
Предыдущая часть: RabbitMQ + Java Spring
P. S.: Гит разбит на ветки по частям (part-1, part-2...)
Я продолжаю серию, посвящённую использованию RabbitMQ в связке с Spring.В предыдущей части был реализован простой обмен двух микросервисов посредством очереди в MQ.В этот раз рассмотрим крутые фичи, которые предоставляет RabbitMQ