Geertjan's Blog

  • June 18, 2014

Belgrade Brings UML Back to NetBeans IDE

Geertjan Wielenga
Product Manager

The Open Source Development Center in Belgrade, Serbia, recently presented the current state of their work on UML tooling for NetBeans IDE.

Below you see Milan Djoric showing a pretty complex looking UML graph which he generated from a Java application. Indeed, reverse engineering of UML graphs is supported, as well as tools for creating UML graphs from scratch.

Together with Ilija Ivanovic, who also presented during the session above, as well as Stefan Petrovic, the team is doing great work. They've narrowed the scope to class diagrams, specifically. The tools they're creating let you create a new UML project, via a new UML project type, after which you can draw class diagrams, via items that can be dragged from the palette and dropped, and arranged on a Visual Library scene in a TopComponent. From the diagram, you can generate Java source files into an existing project in the IDE and regenerate them when the diagram changes. And, from the Java source files, you can generate/regenerate the diagram.

If your curiosity is combined with a sense of adventure, you can download and build the sources of these new tools here:


They're under heavy development. "Buyer" beware. I put the sources together, generated NBMs, and installed them into NetBeans IDE 8.0. Not a problem at all and then reverse engineered the class diagram below from the Anagram Game sample. Click to enlarge the image below. (I scrunched up the widgets a bit to make the screenshot. It looks a lot better when enlarged below, though the image above gives an even better picture of the graph at full scale.)

The team mentioned that they're using a solution via Jung that Tim Boudreau created and blogged about here for the arrangement of the widgets in the scene. In his presentation, Milan Djoric said that he learned an unexpectedly massive amount of things about areas he never knew about before, including compiler APIs and reflection APIs.

I would suggest the following usability changes be done before the plugin is released: move the satellite view into the Navigator, move the Explorer Window into the Navigator, and add the "Reverse Engineer" action to the right-click popup of projects (i.e., not only to the Source menu, where it is now). Also, Undo/Redo needs to be added and the Delete key should delete widgets, in addition to the right-click popup menu that already does this.

Great work, guys. Really excellent. Looking forward to the official release.

Join the discussion

Comments ( 8 )
  • Zoran Sevarac Wednesday, June 18, 2014

    Thanks for nice review and good usability tips!

  • alex Thursday, June 19, 2014

    Neat. I still keep an installation of Netbeans 6.5.1 because that's the last version that had a working UML plugin. I guess I'll be able to uninstall that soon.

  • Matthias Friday, June 20, 2014

    I'm looking forward for the first release!

  • Donald Monday, June 23, 2014

    Why was the original project discontinued in the first place? It is hard to find a good UML tool like this.

  • Toni Rocha Monday, June 23, 2014

    I like that this module has become definitive and official in the IDE. The UML module is essential for the development of software today, and is lacking at Netbeans.

  • Ralph Benjamin Ruijs Monday, June 23, 2014

    Great to see there is a lot of progress being made on this project! Geertjan, do keep us posted :)

  • guest Monday, June 23, 2014

    Wonderful! Thank you so much! This will breed new life to UML, and this is all good!

  • Jiří Kovalský Tuesday, June 24, 2014

    UML development was discontinued many years ago due to resources issues. The IDE functionality simply couldn't grow without limits. So, we are very happy that NetBeans community (Zoran's team) took UML over and more importantly that their effort is bringing first fruits. :) I already look forward to publishing this plugin on the NetBeans Update Center!

Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.