Sonntag, 11. April 2010

jSonde – Generate a UML Sequence Diagram

The eclipse TPTP profiler has a very cool feature, create a UML sequence diagram from a profiling session. But the problem the TPTP profiling agent doesn’t run on my MacBook. So I looked for other free tools and I found jSonde an open source Java profiler (GPL).

jSonde can be used to generate a UML sequence diagram from a java application by profiling the app e.g. this can be used to document the actual implementation of a use case. How a this can be done, I will show step by step here in this post:

Step 1.) Get jSonde from

Step 2.) Create a JUnit test case for the use case / function which you want to document, or when you do TDD look for an existing test...

Here the example code of my test:

 public void testPurchase() {

  Seller sellerOne = kasse.getSeller(100);
  Seller sellerTwo = kasse.getSeller(101);

  Position hose = new Position();

  Position kleid = new Position();

  Sale sale = new Sale();


Step 3.) Run the test e.g. in eclipse (or in other IDE) with the follow VM parameter: “-javaagent${JSONE_PATH}/lib/jsonde.agent-1.0.0.beta7.jar=60001”

Step 4.) Start jSonde and click File -> New Project

Step 5.) Enter a project name and the namespace of the application then click Connect

Step 6.) After the test is pass, click sequence diagram and select the test method in the tree view

Here the full UML sequence diagram for the "Purchase" test implementation:



  1. See for a dynamic reverse engineering application which generates UML Sequence diagram and view of Participating Class diagram from any Java Application at runtime
    All you have to do is just run your application and sit back. Reverse Java runs in background tracing all the activities happening inside your application and creates UML diagram for you.

    You also have options for, excluding packages,editing the Sequence diagram and exporting the diagrams as PDF or Image.

    And its not expensive !

  2. How do you include two different packages, for example


    Have tried playing around with custom filters but no joy.

    Also when setting -Xmx and -Xms to 1024mb the GUI does not show that the memory has been assigned, any ideas?


  3. Can java object oriented methods be used for javascripts? I know java and javascripts have nothing in common. While java being a pure object oriented language, javascript is a client side scripting language. But since programming language concepts are the same it is possible?