Алгоритмы компоновки графа Java

В моем Java-приложении мне нужен какой-то алгоритм компоновки. Первый подход заключается в следующем:

Пакет Graphviz должен быть установленСоздать точечный файлВызвать graphviz из Java-приложения и разобрать вывод (макет)Покажите график с макетом из графика (приписанная точка)

Но для этого решения требуется пакет graphviz, установленный на работающих машинах. Я хочу избавиться от этой зависимости, и я ищу адекватную замену.

Ввод: узлы с шириной и высотой / ребра от узла к узлу с толщиной линииВывод: окружающий размер ограничивающего прямоугольника, позиции для узлов и ребер

Можете ли вы порекомендовать какой-нибудь хороший и простой алгоритм компоновки Java? У вас есть опыт?

Спасибо