MaintainJ unravels convoluted web applications in a day or two versus a week or two

As an independent software engineer and IT consultant I frequently must unravel the logic of existing codebases. There was a time where code started from UML diagrams which often stubbed out the code, thus inherently providing the useful class and sequence diagrams. However, I rarely if ever encounter that these days, and when I do they are usually out-of-date.

Recently I was presented with a particularly convoluted web application calling various web services, involving multiple frameworks and application servers. I knew the often brute force method I take in reverse engineering other developers' logic was not going to work!

With excellent customer support (even with the trial version) I was able to install MaintainJ and achieve the analysis required. I can honestly say that it saved me days of trying to explore and understand the code base. Unlike most reverse engineering tools MaintainJ allows you to trace and examine the logic particular to a given user experience. This is invaluable when trying to understand a new application to which you have no prior exposure.

Now that I am familiar with the setup and have purchased my own license, I think MaintainJ will allow me to achieve that initial analysis in a day or two versus a week or two for any new clients I take on.

Mark Coble, Ph.D.

Incredibly Useful Tool

As an IntelliJ user, I thought of sharing my experiences with MaintainJ. First let me say, this is the fifth tool I evaluated and it will be the last. Why, because this one works! The other tools cost several thousand dollars and only create sequence diagrams from static source code, which is completely useless for complex code. If you want to learn what is really happening in your code, this is the product to use. Not only does the MaintainJ work very well, but all of my questions were answered by technical experts. I am very happy to recommend such a useful product. Great Job to all those at MaintainJ. Keep up the good work.

Don Steger
Next Wave Mobile, LLC

A very useful tool for a challenging problem!

MaintainJ has proved to be a very useful tool for a challenging problem. Our team was assigned the glamorous task of identifying business rules from Java code, developed and evolved over a period of 10 years. The initial attempt at doing this by just viewing the code did not yield the optimal results plus the task quickly lost its appeal. :-).

The MaintainJ trace capability enabled the team to identify specific paths within the code base, and use the sequence diagrams to navigate the code to identify and document rules. Version 3.0 provided the additional context data, that added further value to what we were doing.

MaintainJ support was very responsive and helped us with issues we faced getting the tool to work with a non compliant J2EE app and any other questions we had. Overall, this is a very useful tool that can provide great value at a nominal price.

Ajay Chaudhari

The tool works very well for me

The tool works very well for me :

  • to discover the actual call trace in a graphical manner.
  • to generate real documentation that I can pass around (especially for black box testing).

I have advised my outsourcers to use it and will start getting more licenses for my team members.

Jean Safar
Chief Technology Officer
Quartet Financial Systems


I am part of a Java/J2EE maintenance project spanning 6000+ classes from past 3 years. Having 6+ years of experience in Java it was always difficult and more challenging because the code had very less documentation, complex business rules, strict deadlines, growing expectation from customers. There are still certain areas which still baffles us as a team.

This tool came as a blessing !! It gives immense pleasure to see the sequence diagram generated for a use case at click of a button.

Initially when trying this tool, the time it was taking to instrument a package of 600 classes was not so encouraging, but thanks to you Choudary for coming up with new version which instruments the classes involved at runtime, yes at RUNTIME !!

Now there is a big leap in terms of performance and also the diagrams are so user friendly. This tool made my life much easier, especially for the new guys in the team, they can just play around the application and figure out the flow just like that !!

Many thanks to you Choudary. Keep up the good work.

Satish S Rao
Delivery Manager

With 32 years of this stuff behind me maybe MaintainJ will allow me a few more

Some tools work well enough to use. Some tools work more or less as they are represented. This tool is better than some which I have paid huge amounts of money for because it just works. In attempting to understand massive systems which are written in event driven languages and are almost always "self documenting" (I always loved that one) it is nice to have a tool which cuts through the trash and provides real sequence diagrams. THANK YOU, REALLY THANK YOU

Marshall Dewitt
Application/Systems Engineer, Principle

Amazing Tool!

I work for a .com company that releases a new version of our software every 2 weeks. The software has different styles of architecture and is a large and complex application. When we are implementing new features, most of the time, we have to follow the design decisions that was made for that particular module. All the documentation become obsolete quickly. Thanks for MaintainJ that generates the artifacts dynamically! When I reading a diagram I can be sure that is reflecting the actual code. Your tool is AMAZING!!!

Joao Bentes
Planet Discover

A boon for developers

A boon for developers working on top of an existing java application with very little documentation w.r.t. code (as in most of the cases). Also for people, who want to document the existing code with very little effort, which generally stops them from doing it.

I got to this great tool thru TSS when i was looking for a UML plug-in for Eclipse. I was excited by looking at the capabilities. As i evaluated it, there was no disappointment whatsoever, and the tool worked as great as it claims to be. There was nothing that I wanted to be improved. (of course I do have some enhancement requests now Smiley).

Why I think the tool is cool? Here are the answers:

Ease of use
- Amazingly easy to instrument your application, to apply the filters and get going (thanks to the nice demos)
- Know AspectJ? You are ready to use this tool at once..
- If you understand how it works, you don't even need eclipse to instrument your application. You can instrument it thru' your ant build script. Later use Eclipse to view the generated diagrams.

Neat UI
- Neat and simple UI for sequence diagrams
- Easy to remove redundancy in diagrams
- Easy to filter out unnecessary

- Decent performance for an instrumented application (who cares anyways - this is not in production)
- I used it with a quite big standalone application. Even big sequence diagrams are not cluttered and thanks to the simplicity, there are no perf issues in loading/rendering big diagrams

I have used TogetherJ to create static sequence diagrams from code - and was disappointed because of the cluttered UI (even after lots of filtering, even with just static analysis) and some fancy stuff.
Though I do not want to compare TogetherJ and MaintainJ as they are functionally different (TogetherJ has lot more features than you can imagine), from a developer's point of view (in a practical scenario) MaintainJ takes the prize, thanks to
- runtime generation of sequence diagrams
- neat UI (come on, since when did developers need fancy UI??)

Congrats to Choudary for a really good job. I look forward to recommend MaintainJ to my colleagues and friends.

Krishna Rajappa

A must tool to have

I really like the idea behind MaintainJ. MaintainJ is using Aspect-oriented programming, what it does mean is that there are no need for code changes, MaintainJ will do the work for you.

MaintainJ is easy to use, just add the AspectJ & MaintainJ plug-ins to your eclipse, and create a MaintainJ project, then you are ready to go.

MaintainJ creates sequence diagrams and class diagrams for all JAVA and J2EE applications at the runtime, it is really easy to see the use case, it also makes debugging easy.

Nasser Alizadeh
Ericsson Inc.

Nice and useful tool

This is a very good tool, easy to setup and quickly get going. In a few minutes I was able to get a sequence diagram to unravel a standalone app.

Javed Sujala

A useful tool

I found MaintainJ by mistake and I hope I'll continue to make this kind of mistakes. MaintainJ is a powerful tool that helps me in my work. It easy to generate sequence diagram to understand a working application. It's not always easy to modify an existing application without breaking something; with MaintainJ you can accelerate the development if used correctly.

Good work!

Sebastien Dionne
Financiere Banque Nationale

A very neat tool

I joined a new company recently. The code base is large but documentation is sparse. I use the MaintainJ plug-in along with custom changes to the ant build file (to weave the aspects using AspectJ ant task into the code) and lo behold .... I had the sequence diagram for the particular workflow. Its nice to follow the workflow from the ser file than stepping through via debugging.

This is a splendid tool and keep up the good work.

Harjit Singh

A good find

I looked to MaintainJ for use in an academic project, and found it very useful for explaining the "magic happens" parts of a multi-threaded multi-hosted application, to relatively inexperienced developers. I'd tried a few other products that claimed to produce sequence diagrams, but this was the only one that Just Works. It really made my day to find it.

Richard Barrington

Very Useful Tool

I have used this tool recently on a J2EE project and found it to be very useful, in particular the Sequence Diagrams. I look forward to downloading and trying out the new version.

Nasser Alhawash

The whole idea is really marvellous...

My manager has thrown me an assignment to customize a standalone Java application which was developed in dirty and messy way. To make the things worst, there is no documentation at all! I was having difficulties to understand the code... and luckily, I found MaintainJ and it really help me a lot in tracing and debugging the application. Many thanks to MaintainJ and Choudary!

Among all the issues we discussed in MaintainJ forum, I'm very interested to see if I'm able to export the diagrams to image files one day (which I'm still encounter the OutOfMemoryException).

I'm very interested to see MaintainJ evolves and becomes a stable product and I hope to try out the next release very soon!


Good work!

The whole idea is really marvelous, capturing runtime trace by AspectJ without touching the source code. I especially like the idea of expanding and collapsing the sequence, which can avoid messy diagrams.

I have tried it under Eclipse 3.2 with AspectJ 1.5.2. I worked perfectly for both standard Java application and Web Application.

However, it cannot work under IBM's RAD (Rational Application Developer 6.0), where eclipse is 3.0. That's not end of the world. Here is a word around. I installed 1.2.2 AspectJ plug-in in RAD to be able to capture the runtime trace, review and study the generate sequence diagrams and class diagrams under eclipse 3.2. Of course you gotta put AspectJ runtime and MaintainJAspect.jar in your web project. It sounds inconvenience, but it really helps me in my work, maintaining a quite complicated project.

Good work, Choudary

Charlie Liu
on The Server Side

A good plugin

Recently, I found this plug-in and learnt to use it in my work. It is ease to use and the runtime sequence diagram is very useful to me. I use it with JADclipse. It helps me to read the source code quickly. I think it is a great tool. I will spend time to try it in my another work. I look forward to downloading and trying out the new version.

Chen Bin