Generate UML Class Diagram from Java Project

asked13 years ago
last updated6 years ago
viewed436.8k times
Up Vote218Down Vote

Is there a good tool that can help to reverse engineer Java classes to UML that will show an overview of how my classes are related to each other? It doesn't need to decompile from JAR file because I have the sources. I know there are quite a few out there but most of those can only generate individual class. I hope there is a tool that can generate class diagram that shows an overview of how all my current classes and packages work together, so that I can analyse my current architecture design. Of course, analysing is one thing. The other is for documentation purposes.

I know of a few so far. But they cannot do an overview class diagram. Here's a list of Java UML tool that I have tried and is capable of doing reverse engineer but cannot do an overview class diagram of my whole project:

Are there any other recommendations to add to this list? And hopefully, can generate an overview Java class diagram. I am using Eclipse, by the way.

12 Answers

Up Vote10Down Vote
Grade: A

Yes, there are tools available to help with UML reverse engineering in Java. One popular tool is "Classifier" for Java.

Classifier works as a class analyzer and class designer, which allows developers to extract information about classes from code repositories or directly from a source file, then generate an UML Class Diagram. Here are some steps to use Classifier for your project:

  1. Create a new Classifer instance with the following arguments: "-i " (where input file is your Java class source file) and "-o " (the generated output file).
  2. Once you run Classifier, it will display an UML Class Diagram based on your input class files in a web browser or an SVG format image. This diagram can be exported to PDF or any other format that suits your needs.
  3. You may also use Classifer's code generator feature to generate source files for specific classes from the UML diagrams, which makes it easy to maintain and update your project.
  4. Overall, using a tool like Classifier can help you easily manage complex Java projects by generating accurate class diagrams that showcase how classes relate to each other.

I hope this helps!

Imagine you are a Machine Learning Engineer working on a new AI assistant project. The assistant needs to understand the structure of your Java-based code and its UML representation in order to improve the learning process and eventually automate some tasks. For that, you have decided to use Classifier for Java, as suggested by the Assistant.

In order to create an intelligent AI assistant, you will need a clear understanding of your project structure - from which classes interact with each other and how they are used. The more information you get from Classifier's output diagram (UML class diagrams), the better your assistant's understanding and subsequent actions.

The Assistant has provided 4 main outputs for the UML class diagram generated by Classifier:

  1. Class name - It is the name of the class, which directly correlates with the function of a particular section of your code.
  2. Class relationship - Class relationship includes any superclass relationships or inheritance details such as subclasses, superclass, and methods.
  3. Method declaration - This includes all method declarations and their respective arguments.
  4. Use Case Scenario - This includes the use case for the class and the conditions under which it can be used.

You are given two UML class diagrams by Classifier for two separate Java projects - one project has only superclass-subclasses relationship while other one doesn’t have any subclass relationships, but it is clear that both the project and all their methods have similar functionality.

Given the following information:

  1. Project A - SuperClasses: MathOperations, DataProcessor; Subclasses: DataGenerator, GraphicalAnalyst
  2. Project B - Classes do not include subclass relationships, but share very similar methodologies and functions
  3. All projects use Java 8 APIs for most of their functionality
  4. Each project has roughly the same number of classes (let's say 10 classes)
  5. The main difference between these two is the presence or absence of direct inheritance
  6. Both of your AI assistant’s needs will be satisfied by either project
  7. For this AI, no two similar projects can be used interchangeably, meaning you have to make an optimal choice.

Question: Based on the information given above, which Project (A or B) would you choose for building and testing your intelligent AI assistant?

Using the property of transitivity in logic, if project A is more class-related and has subclass relationships, it implies that its UML diagram should have more method declarations and use cases as a direct consequence.

However, according to the information provided, both Project B and Project A are quite similar, except for one aspect - Class B lacks subclasses, but has similar function to Projects A. Hence, it is logical that their class diagrams will be more similar.

Answer: Considering this scenario, for your AI assistant's functionality needs, Project A would be the best choice due to its inclusion of subclass relationships which would allow greater flexibility and complexity in learning tasks by allowing AI to understand dependencies better. Even though both projects have similar use-cases, the difference in their UML class diagram complexity could provide an additional challenge and learning experience for the AI assistant.

Up Vote9Down Vote
Grade: A

Based on your requirements, I would recommend trying ArgoUML or StarUML. Both of these tools support reverse engineering of Java code to generate UML class diagrams and they can generate overview diagrams of your whole project.

To use ArgoUML:

  1. Install ArgoUML
  2. Open ArgoUML and select "Reverse Engineer" from the "File" menu
  3. Select the root directory of your Java project
  4. ArgoUML will generate the class diagram for you

To use StarUML:

  1. Install StarUML
  2. Open StarUML and create a new project
  3. Right-click on the project in the "Project Explorer" and select "Import" -> "Java Project"
  4. Browse to the root directory of your Java project and select "Finish"
  5. StarUML will generate the class diagram for you

Additionally, you can also consider using Enterprise Architect by Sparx Systems, which is a commercial tool that supports generating overview UML class diagrams from Java projects.

I hope this helps! Let me know if you have any other questions.

Up Vote9Down Vote
Grade: A

It seems like you need to generate an UML Class Diagram from Java sources. While there are some UML tools out there that can help you create a UML Class Diagram, most of these tools are capable of creating individual class diagrams, but cannot be used to create an overview of how your current classes and packages work together. To create a UML Class Diagram that shows an overview of how all your current classes and packages work together, you will need to use a combination of Java code and UML tools.

Up Vote8Down Vote
Grade: B

Java UML Tool Recommendation for Eclipse

The good news is that there are tools available to achieve your desired overview of your Java project in UML class diagrams within Eclipse. Here are a few recommendations:

1. QuickUML:

  • QuickUML is an open-source tool available in Eclipse Marketplace that offers a comprehensive set of features for UML class diagram creation.
  • It allows you to reverse engineer existing Java code and generate class diagrams, including relationships and inheritance.
  • While it doesn't offer a direct "overview" class diagram, it does provide a "package diagram" feature that allows you to visualize the structure of your project in a package-level UML diagram. This might be helpful for understanding the overall architecture.

2. Arbindi JUDE:

  • Arbindi JUDE is a commercial tool offering a powerful set of features for UML class diagram creation and reverse engineering.
  • It integrates seamlessly with Eclipse and allows you to reverse engineer Java code, generating class diagrams and other UML artifacts.
  • JUDE offers a "Project Diagram" feature that showcases the relationships between different packages and classes within your project, providing an overview of your architecture.

Additional Tools:

  • Visual Paradigm: Offers a free version with some limitations.
  • Enterprise Architect: Requires a paid license, but offers a comprehensive set of UML modeling features and reverse engineering capabilities.


  • Consider the features that are most important to you and compare the available tools against your needs.
  • Check for free versions of the tools to see if they meet your requirements.
  • Read reviews and user feedback to get an understanding of the strengths and limitations of each tool.

Overall, QuickUML and Arbindi JUDE are strong contenders for generating an overview Java class diagram in Eclipse. Both tools offer a wealth of features and can generate diagrams that provide a clear picture of your project's architecture.

Up Vote7Down Vote
Grade: B

I use eUML2 plugin from Soyatec, under Eclipse and it works fine for the generation of UML giving the source code. This tool is useful up to Eclipse 4.4.x

Up Vote7Down Vote
Grade: B

Here is the list of recommendations to help you generate UML class diagrams from your Java project:

  1. The software itself can be useful for generating UML class diagrams and reverse engineering source code in general. The Diagram tool comes with the software and allows users to design new or modify existing diagram classes, making it a popular choice among developers who frequently reverse engineer code to understand better their application logic.
  2. CodeGean - A great tool for automating code reviews, CodeGean's toolset also includes features like modeling, testing, and security scanning that make it easier to manage your source code. With these additional functionalities, you can generate UML class diagrams from Java classes easily.
  3. ArgoUML - A free open-source software for modeling OO systems, which means you have a lot of options if you need to generate UML class diagrams and reverse engineering from Java projects. You can get the same results as with the tools we mentioned earlier, including creating visual diagrams or textual representations of your code.
  4. PGOM - Another popular open-source software that allows users to design models for different programming paradigms using a simple but powerful interface. This means you can reverse engineer your Java code to generate UML class diagrams quickly and easily, making it one of the most recommended tools on this list.
  5. PlantUML - A tool specifically designed for developers who want to create plant diagrams from source code. This is another popular tool for creating visual models or generating code documentation using its textual notation language that resembles a type system and a scripting language. Plantuml allows you to reverse engineer Java code, generating UML class diagrams.
  6. StarUML - StarUML's primary advantage over other software for UML modeling is its ease of use. StarUML is available free with both the community and commercial editions, which include a user-friendly interface for generating UML class diagrams from Java projects. You can reverse engineer source code to generate models and understand how different classes interact with each other by using this tool.
  7. Sparx Systems' EA - EA is one of the top choices for reverse engineering and creating models, as it enables you to use a wide variety of programming languages, including Java. You can utilize various UML modeling tools when generating class diagrams from Java projects to better understand your application logic with EA's suite of features and capabilities.
  8. IBM Rational Rose - The modeling tool allows you to create models for different programming paradigms, making it a favorite among developers who frequently reverse engineer code to learn more about their application design. You can utilize multiple UML modeling tools to generate class diagrams from Java projects by using the features available in this tool.
  9. IBM Rational Rhapsody - Similar to other software listed on this list, Rhapsody provides a range of options for reverse engineering and generating models from code. With this tool, you can create visual models or textual representations of your source code, allowing you to generate UML class diagrams from Java projects and understand the logic of your application design more easily.
  10. Enterprise Architect - Enterprise Architect's UML modeling tools are considered among the best by developers because they include features like reverse engineering and automated diagram generation. You can utilize various UML modeling tools to generate class diagrams from Java projects and understand your application logic more clearly using this tool.
Up Vote5Down Vote
Grade: C

I wrote Class Visualizer, which does it. It's free tool which has all the mentioned functionality - I personally use it for the same purposes, as described in this post. For each browsed class it shows 2 instantly generated class diagrams: class relations and class UML view. Class relations diagram allows to traverse through the whole structure. It has full support for annotations and generics plus special support for JPA entities. Works very well with big projects (thousands of classes).

Up Vote3Down Vote
Grade: C
  • Visual Paradigm
  • StarUML
  • Modelio
  • PlantUML
Up Vote0Down Vote
Grade: F

It seems you have already tried out some Java UML tools but couldn't get what you wanted. Here are a few more to consider:

  1. Roxygen: This tool can generate UML diagrams from Java sources by leveraging the Eclipse plugin Graphical Model Editor (GMF). It generates class and interface diagrams based on Java code annotations, so it can be quite handy.

  2. ArgoUML: Though not exclusively a UML tool, this open-source modeling tool that supports Java also has a reverse engineering feature for generating UML models from Java codebase.

  3. JArchitect: It offers advanced visual modeling capabilities and includes an option to reverse engineer your system into class diagrams from the source code.

  4. PlantUML: Although it's not specifically designed for reverse-engineering, it can be a good alternative as well. You need to manually annotate each class in UML syntax but you may have better visualization of dependencies.

  5. VisualParadigm: A versatile tool that supports Java reverse engineering and has a feature to generate diagrams based on your project's source code. However, it isn’t free.

  6. UModel from Sparx Systems: This is another good choice but does need an Enterprise license. It offers class, sequence, object flow diagrams out of the box as well as reverse-engineering from existing projects and generating new ones.

  7. ArgoUML: A powerful tool that can be used for creating UML diagrams in conjunction with the Sparx Systems suite (formerly InspireSuite). It can also reverse engineer your Java code to create class, sequence and package diagrams.

These tools all have pros and cons, so it might depend on your specific requirements which you would need to investigate further for a better choice.

Up Vote0Down Vote
Grade: F

Tools Capable of Generating Overview Class Diagrams from Java Projects:

  • Enterprise Architect: A comprehensive modeling and analysis platform that supports UML class diagram generation from Java source code. It provides an overview of the entire project architecture and allows for interactive exploration of relationships between classes and packages.
  • Visual Paradigm: A visual modeling tool that offers UML class diagram creation from Java code. It enables the generation of high-level diagrams that provide an overview of the project's architecture and dependencies.
  • Dia: A free and open-source diagramming tool that can reverse engineer UML class diagrams from Java source code. It offers limited overview functionality but can provide a basic visual representation of the project structure.
  • Eclipse Modeling Framework (EMF): A framework within Eclipse that allows for the creation of UML models. By leveraging EMF, you can generate class diagrams that represent the overall architecture of your Java project.
  • PlantUML: A text-based language that can be used to create UML diagrams. By writing PlantUML code, you can generate an overview class diagram of your Java project and export it in various formats.

Additional Recommendations:

  • StarUML: A free and open-source UML modeling tool that can generate class diagrams from Java code.
  • Lucidchart: An online diagramming platform that supports UML class diagram creation. It provides templates and collaboration features for creating and sharing overview class diagrams.
  • OmniGraffle: A commercial diagramming tool that can be used to create UML class diagrams. It offers advanced features such as automatic layout and shape recognition.
Up Vote0Down Vote
Grade: F

Other tools that generate UML class diagrams from Java projects:

  • ClassyUML
  • Visual Paradigm for Enterprise Architect (VPA)
  • JBoss Tools
  • Modeler 4 J
  • Enterprise Architect

Additional recommendations for generating overview Java class diagrams in Eclipse:

  • Use the Java Class Diagram tool in the Java EE plugin.
  • Create a new class diagram file (.di) manually and then import the Java classes into it.
  • Use the UML tool's search functionality to find specific classes or packages.
  • Export the UML diagram as an image file (e.g., PNG, SVG) for documentation purposes.
Up Vote0Down Vote
Grade: F

I'd be happy to help you find a Java UML tool capable of generating an overview class diagram within Eclipse. Based on your requirement, I can suggest the following tools that provide this functionality:

  1. UMLet: This is not a full-fledged reverse engineering IDE, but it's a lightweight UML tool for drawing UML diagrams from source code files or from reverse engineered class information. You may need to manually organize the classes into packages and relationships before generating the diagrams.

  2. ArgoUML: ArgoUML is an open-source, extensible UML modeling tool. It has support for reverse engineering Java code with the help of plugins, such as "Java Reverse Engineering" (JResE) or "CodeReverse" plugin to import your Java source files and generate class diagrams from them. While it doesn't directly provide an overview class diagram, you can arrange and connect your classes manually for a complete diagram.

  3. Visual Paradigm: This commercial tool supports reverse engineering of Java projects and provides the capability to generate UML class diagrams with an overview of how all your classes are related. It also includes advanced features like code synchronization, auto-layouting, customizable styles, and more.

  4. StarUML: StarUML is another popular commercial tool that supports Java projects for reverse engineering and generates UML class diagrams. Like Visual Paradigm, it provides a comprehensive view of the project architecture with relationships between classes and packages.

  5. Papyrus: Papyrus is an open-source Eclipse-based platform for creating UML models using different profile. It may take some additional effort to configure your Java codebase to use it efficiently, but once you do that, it can generate UML class diagrams showing relationships between classes and packages in your project.

These tools offer varying levels of complexity and functionality; the one you choose depends on your specific requirements and preferences. I hope this information is helpful! Let me know if you need any additional assistance.