Tuesday, November 9, 2010

Рисуем графы на Java

На днях потребовалось нарисовать достаточно простой граф. До сих пор думал что в Java сотни библиотек для рисования графов, на практике ситуация оказалась не такой уж радужной. Сегодня я опишу основные библиотеки попробованные мной и впечатления от них.

Graphviz



Безусловно лучшая из бесплатных библиотек для рисования графов. К сожалению, написана не на Java и единственный Java-порт Grappa практически заброшен. В любом случае, если ваша задача просто распечатать некоторое количество красивых графов, а не встраивать их в программу в интерактивном виде, то это решение является оптимальным.


JGraph



Пожалуй одна из самых известных Java-библиотек для рисования графов. Бесконечные возможности, реализаций на Java и Javascript. Штука безусловно хорошая, но, к сожалению, коммерческая и потому, даже не рассматривалась среди вариантов.


Jung




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

Prefuse



Это гораздо больше чем библиотека для визуализации графов. К сожалению разработка проекта заброшена, последняя версия на сайте beta от 2007-го года доступна только в виде исходников. Впрочем, исходники собрались без проблем. А вот с документацией, увы, проблема, на сайте всё ограничивается оглавлением, большинство страниц содержат печальное «Coming soon...». Было бы здорово если бы кто-нибудь взялся и продолжил развитие этого продукта.

Итого, мой выбор остановился на Jung. Среди всех перечисленных вариантов это единственный удовлетворял основным критериям: бесплатный и на Java. Жаль, что выбор библиотек такого рода столь ограничен.

4 comments:

  1. JUNG is dead as of Mar 2013

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Тем не менее jgraphx доступна под лицензией BSD.

    ReplyDelete