Есть интересная тема здесь об UMLGraph vs apiviz (которые упоминаются в этом вопросе также и на SO), и я понимаю следующее:
- UMLGraph старше, но действительно хорош (dixit Fowler, который имеет больший вес, чем я).
- apiviz - это переписанный UMLGraph, но не совсем понятно, зачем его переписали.
- «Большим» преимуществом apiviz является то, что сборка не завершится с ошибкой , если Graphviz не установлен (хотя, на мой взгляд, это не оправдывает полное переписывание).
- apiviz не генерирует графики автоматически, вам нужно добавлять теги, а UMLGraph делает это автоматически по умолчанию (что может быть удобно), а полностью автоматические результаты удобны и просты для всех ( UMLGraph также может моделировать композиционные отношения с помощью пользовательских тегов javadocs ).
- UMLGraph, кажется, делает больше вещей (« похоже, что apiviz не делает ничего, кроме как предоставляет представление об обобщениях и использовании интерфейса » или « использование классов, показанное UMLGraph, фактически помогает понять, как класс работает"), но я не проверял себя, и это может быть уже не так или устарело.
Итак, если ваш проект публичный, то тот факт, что apiviz изящно работает без Graphviz, это хорошо. Если у вас много классов, необходимость добавлять теги в javadoc везде - большая боль. Если вы ищете специальные функции, UMLGraph может предложить больше. На самом деле, я думаю, вам следует поэкспериментировать, так как вы, очевидно, лучше знаете свои потребности и ограничения для окончательного выбора.