Архив метки: java

Итоги 2020 года

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

Итоги 2020 года таковы:

Читать далее

Как посмотреть, что и как компилирует JIT-компилятор?

В данной статье я кратко описываю диагностические флаги JVM HotSpot, с помощью которых можно посмотреть на результаты работы JIT-компиляторов JVM. Эта информация поможет в оптимизации приложения для low-latency и в поиске узких мест.

Читать далее

habr.com: Управление Java Flight Recorder

Не так давно в мире Java случилось грандиозное событие. Во всех актуальных версиях OpenJDK стал доступен Java Flight Recorder (или просто JFR).

Раньше этот механизм был доступен только в коммерческих версиях Java от корпорации Oracle версии 8 и более ранних. В какой-то момент его реимплементировали с нуля в OpenJDK 12, затем бекпортировали в OpenJDK 11, которая является LTS-версией. Однако вот OpenJDK 8 оставалась за бортом этого праздника жизни. Вплоть до выхода апдейта 8u272, в который наконец-то тоже бекпортировали JFR. Теперь все (за редким исключением) пользователи OpenJDK могут начинать использовать эту функциональность.

Статья на Хабре о том, как управлять JFR и как извлекать полезную информацию.

Новый JIT-компилятор Graal

Как уже говорилось в предыдущих статьях, в JVM HotSpot имеется два JIT-компилятора: C1 и C2. Первый компилятор — клиентский (client), который быстренько компилирует код при старте и первых минутах работы JVM, потом некоторое время собирает статистику по работе приложения, после чего в дело вступает компилятор C2 — серверный (server) — который делает более глубокие оптимизации и создает более быстрый машинный код.

Читать далее

habr.com: Финансовое latency critical приложение на Java и Akka

Всем привет! В своей статье я поделюсь опытом разработки одного из финансовых приложений на Java в ТехЦентре Дойче Банка, расскажу про стек технологий, который мы используем, и каких результатов достигаем.

Как jcmd помогает настроить JVM для low-latency

Утилиту jcmd добавили в Java 7 и с тех пор она считается главной утилитой, с помощью которой вы отныне будете заглядывать внутрь JVM и замерять все параметры ее работы. Все остальные утилиты типа jps, jstack, jinfo и проч. считаются теперь устаревшими и скоро в каком-то из будущих релизов JDK будут удалены. Предполагается, что jcmd заменит их всех. Давайте посмотрим, как работает утилита, и что полезного с ее помощью можно узнать о работающем приложении и как эта информация может нам пригодиться для настройки JVM и самого приложения с целью достижения low-latency.

Читать далее

infoq.com: Интервью с создателями Shenandoah

Информационный сайт infoq.com встретился с работниками компании Red Hat Шипилевым и Кеннке и провел с ними интервью о сборщике мусора Shenandoah, который разрабатывается в Red Hat и предназначен для быстрой сборки мусора на больших объемах памяти.

Путеводитель по теме low-latency и Java

Количество статей в блоге превысило 100. Чтобы вам легче было ориентироваться в темах low-latency и Java, я решил создать данную статью-путеводитель, которая даст список статей по этим темам в том порядке, в котором их лучше всего прочитать.

Читать далее

Паттерны интеграции

Задача интеграции часто встречается особенно в приложениях уровня предприятия. Это связано с тем, что именно в большой организации есть множество разнородных систем, которые надо научить говорить друг с другом. Часто это системы устаревшие или несовместимые друг с другом. Системы могут работать на разных платформах, быть написаны на разных языках, разными командами, и использовать разные подходы получения, обработки, хранения и вывода данных. Между системами могут быть непреодолимые границы в виде файрволов, не позволяющие, например, офису в Каргополе подключиться напрямую к базе данных головного офиса в Шепетовке. Из-за этого при передаче данных приходится прибегать к ручному труду, многократному переконвертированию данных из одного формата в другой, передаче этих данных и повторному их вводу в другую систему тоже иногда вручную. Ручной труд усложняется с усложнением бизнес процесса. Данные уже не просто надо переложить из одного приложения в другое, а еще и обработать.

Все эти процессы сложные и разнообразные по форме по сути являются процессами интеграции, т.е. процессами обмена данными между системами каким-то определенными способом.

Читать далее

Заглядываем за кулисы Java-приложения с помощью pidstat и jstack

В данной статье мы посмотрим лишь на две утилиты pidtstat и jstack. Их всего две, но они многое могут рассказать о работе многопоточного Java-приложения. Например, найти, какой поток оказался в состоянии deadlock, или какой поток загружает CPU на 100%.

Читать далее