If you are using Sequence Diagram or Activity Diagram beta, GraphViz is not used at all : the implementation is 100% Java.
For other diagrams (class, component, usecase, legacy activity, state, deployment), GraphViz is used.
Even in your example (embedded PlantUML into a Java application), if you generate a PNG image, GraphViz is launch behind the scene to
compute the position of elements and edges (Java allows to launch native processes - this is completely transparent).
We understand that for a 100% Java application, this dependency to a native process is a real drawback.
Graphviz is doing a great job, and we did not find any equivalent in Java and Open Source.
However, we are working to translate GraphViz to Java (see http://plantuml.com/smetana01.html
) to remove this
dependency on GraphViz and to have a 100% PlantUML implementation.
Very recently, we had some first success on this side (we will publish a news about this).
But a lot of works remain to be done, so do not expect any change on the short term.
Hope that it more clear for you.