AFAIK dot is written in c or c++. So you have to call dot via Runtime.getRuntime() (
Dot.java which isn't really a good idea e.g. because of continuous process creation.
Dot deals well with nodes, edges and attributes (e.g. color, text, form) for nodes and edges in its syntax. So it is maybe better for graphs and trees/graphs with many edges. The syntax from funzel is more useful for trees with a small amount of attributes. Beyond that I don't know another syntax for representing graphs in texts.
I think the approach from funzel to create the graphs with graphics 2d in java is simpler and better. Another possibility would be to use one of the available open-source graph frameworks - like GEF, openjgraph, jgraph (maybe freemind has a output facility too) - for rendering the graph.