667481 members! Sign up to stay informed.

Sponsored Links


Resources

Enterprise Java
Research Library

Get Java white papers, product information, case studies and webcasts

News News News Messages: 18 Messages: 18 Messages: 18 Printer friendly Printer friendly Printer friendly Post reply Post reply Post reply XML XML XML

MaintainJ Version 1.0 is out

Posted by: Kothapalli Choudary on March 01, 2007 DIGG
MaintainJ, an Eclipse plug-in, generates sequence and class diagrams for a use case, helping the users to quickly understand a complex Java or J2EE application.

MaintainJ logs runtime method execution sequence to a file and uses that trace file to render sequence and class diagrams. MaintainJ Instrumentation Wizard instruments a Java/J2EE application and MaintainJ UML Editor renders sequence and class diagram from the trace file.

The following features make MaintainJ a unique and useful tool for Java developers.

Source Untouched: The application code is not changed in anyway; application is rebuilt using AspectJ compiler to capture the method execution sequence at runtime.
Collapsible Calls: Method calls in sequence diagram are collapsible. Developers can easily explore a complex sequence diagram by collapsing and expanding calls as necessary.
Focused Diagrams: Only application classes are shown in the diagrams. The classes in the diagram can further be narrowed by instrumenting only the packages of interest.
Runtime Diagrams: All classes shown in the diagrams are concrete runtime classes.
No Loop Calls: All repeat calls occurring in a loop except the first call are removed. Recursive calls also are removed.
Eclipse Integration: Double clicking a method call or class opens matching method or class in Eclipse.
Outline Views: Outline views in both diagrams make navigating a complex diagram simpler.
Print or Export: Diagrams can be printed or exported as JPEG images.

Threaded replies

·  MaintainJ Version 1.0 is out by Kothapalli Choudary on Thu Mar 01 09:38:29 EST 2007
  ·  Re: MaintainJ Version 1.0 is out by James Donelan on Thu Mar 01 19:26:24 EST 2007
    ·  Re: Seems like lot of overhead by Kothapalli Choudary on Thu Mar 01 20:46:12 EST 2007
    ·  Re: MaintainJ Version 1.0 is out by Alexandre Poitras on Fri Mar 02 03:45:18 EST 2007
      ·  Re: MaintainJ Version 1.0 is out by William Louth on Fri Mar 02 04:01:10 EST 2007
        ·  Re: Data and state is much more revealing by Kothapalli Choudary on Fri Mar 02 10:31:39 EST 2007
          ·  Re: Data and state is much more revealing by William Louth on Fri Mar 02 11:57:11 EST 2007
            ·  Re: Data and state is much more revealing by Kothapalli Choudary on Fri Mar 02 15:31:13 EST 2007
  ·  MaintainJ Version 1.0 is out by J Dev on Thu Mar 01 22:12:42 EST 2007
  ·  I like the idea by Vitaly Shevchuc on Fri Mar 02 06:57:14 EST 2007
  ·  Spring by Ridvan Gyundogan on Fri Mar 02 09:47:22 EST 2007
    ·  Spring by Kothapalli Choudary on Fri Mar 02 10:24:16 EST 2007
  ·  Re: MaintainJ Version 1.0 is out by Julian Harris on Fri Mar 02 10:11:08 EST 2007
    ·  It'd be interesting to see how it does this cleanly by Kothapalli Choudary on Fri Mar 02 10:20:19 EST 2007
  ·  How to run outside of Eclipse? by Yogesh Bhardwaj on Fri Mar 02 14:30:14 EST 2007
    ·  Re: How to run outside of Eclipse? by Kothapalli Choudary on Fri Mar 02 15:06:16 EST 2007
  ·  Considered TPTP? by Mike Wilson on Wed Mar 07 14:00:33 EST 2007
    ·  Considered TPTP? by Kothapalli Choudary on Thu Mar 08 06:56:59 EST 2007
      ·  Re: Considered TPTP? by Mike Wilson on Thu Mar 08 07:52:56 EST 2007
  Message #228423 Post reply Post reply Post reply Go to top Go to top Go to top

Re: MaintainJ Version 1.0 is out

Posted by: James Donelan on March 01, 2007 in response to Message #228370
Maybe I'm missing something but this seems like a lot of overhead (i.e. requiring you to deploy the app and physically execute various use cases) just to get sequence diagrams and other UML diagrams.

I'm pretty sure I've used other tools in the past (e.g. TogetherJ) which could do the same thing by either simply introspecting the source code or even the compiled jar file(s) .

  Message #228424 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Seems like lot of overhead

Posted by: Kothapalli Choudary on March 01, 2007 in response to Message #228423
James,

Thanks for your comments. I agree that it has some overhead.

But when someone is trying to quickly understand a complex application with lot of runtime binding, it can be very frustrating. I don't think any static time code introspecting tool can produce quality sequence diagrams that can really help a developer to debug a complex application.

Developers, including those working on the same system for years, spend lot of time to understand existing code. MaintainJ helps this situation by its ability to quickly generate focused sequence and class diagrams for a given use case. Using MaintainJ Instrumentation Wizard, one can quickly instrument the application, generate the diagrams and revert the workspace to the uninstrumented code. All this is done without leaving Eclipse and without having to write any code.

Regards,
Choudary Kothapalli.
MaintainJ Inc.

  Message #228426 Post reply Post reply Post reply Go to top Go to top Go to top

MaintainJ Version 1.0 is out

Posted by: J Dev on March 01, 2007 in response to Message #228370
Before some days i was looking for the same tool.
i will try it out.

IS there any other OpenSource UML tool ?

Sudhir Nimavat

  Message #228440 Post reply Post reply Post reply Go to top Go to top Go to top

Re: MaintainJ Version 1.0 is out

Posted by: Alexandre Poitras on March 02, 2007 in response to Message #228423
Maybe I'm missing something but this seems like a lot of overhead (i.e. requiring you to deploy the app and physically execute various use cases) just to get sequence diagrams and other UML diagrams.

I'm pretty sure I've used other tools in the past (e.g. TogetherJ) which could do the same thing by either simply introspecting the source code or even the compiled jar file(s) .


Well it's only true for class diagram not object diagrams. Without running the application it's impossible to only see a specific scenario. You always see the whole picture and it's can be harder IMO to understand the code this way.

  Message #228441 Post reply Post reply Post reply Go to top Go to top Go to top

Re: MaintainJ Version 1.0 is out

Posted by: William Louth on March 02, 2007 in response to Message #228440
I have personally found it much easier to understand flows based on context than just the code - the data and state is much more revealing to the reason for the flow direction than the flow pattern itself. It is for this reason I designed and built probably the first scalable contextual distributed profiling solution for CORBA & Java EE component architectures. Lately I am spending more of my time trying to design visualizations that can merge these 3 aspects (code flow, data, and component state) together into a consolidated view. I do agree that one gains a greater understanding of an application by looking at its execution patterns per use case - what is completely missing here is the fact that outside of the IDE usage scenario the execution flow of a thread is not independent of the execution of other concurrent threads.

regards,

William

  Message #228449 Post reply Post reply Post reply Go to top Go to top Go to top

I like the idea

Posted by: Vitaly Shevchuc on March 02, 2007 in response to Message #228370
I like the idea. Certainly worth trying.

  Message #228465 Post reply Post reply Post reply Go to top Go to top Go to top

Spring

Posted by: Ridvan Gyundogan on March 02, 2007 in response to Message #228370
Sounds great, I have been looking for such kind of application from a long time.
Would it run for a Spring?

  Message #228467 Post reply Post reply Post reply Go to top Go to top Go to top

Re: MaintainJ Version 1.0 is out

Posted by: Julian Harris on March 02, 2007 in response to Message #228370
It'd be interesting to see how it does this cleanly; TogetherJ has had a feature like this for many years but it's only done static code analysis. The runtime code analysis would have the benefit of capturing dynamic bindings, which is increasingly common these days...

J.

  Message #228468 Post reply Post reply Post reply Go to top Go to top Go to top

It'd be interesting to see how it does this cleanly

Posted by: Kothapalli Choudary on March 02, 2007 in response to Message #228467
Julian,

MaintainJ generates sequence diagrams with the runtime classes and the diagrams are clean. Install it and check the samples to see it yourself.

Regards,
Choudary Kothapalli
MaintainJ Inc.

  Message #228469 Post reply Post reply Post reply Go to top Go to top Go to top

Spring

Posted by: Kothapalli Choudary on March 02, 2007 in response to Message #228465
Ridvan,

I haven't tried it with a Spring sample, but it should work as MaintainJ is designed for any Java/J2EE application.

Regards,
Choudary Kothapalli.
MaintainJ Inc.

  Message #228471 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Data and state is much more revealing

Posted by: Kothapalli Choudary on March 02, 2007 in response to Message #228441
William,

I do agree that context helps to get a much better understanding than just the flow pattern. That will be my next major enhancement. MaintainJ could be used outside IDE though it would slow down the application a little, just like any other instrumented code. I didn't see much difference for a single user scenario, though. I wouldn't recommend it for deployment time at this moment anyway.

I observe that developers spend lot more time in understanding the code(in an IDE or otherwise) than in profiling a deployed application. Once an application is deployed and running well, developers typically don't spend that much time to fix performance issues. On the other hand, for every small enhancement, the application needs to be understood and this effort gets multiplied with each new developer added to the team. For some strange reason, managers and developers take this effort, which can be as much as 30-50% of the maintenance effort, for granted. MaintainJ aims to reduce this effort.

Regards,
Choudary Kothapalli.
MaintainJ Inc.

  Message #228479 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Data and state is much more revealing

Posted by: William Louth on March 02, 2007 in response to Message #228471
"I didn't see much difference for a single user scenario, though."

Are you talking about overhead or the relevance of multi-threaded execution analysis?

Nothing runs in isolation - at least today. State changes on shared components, classes and resources can be the cause for a particular execution pattern occurring. When I look at the component execution pattern and transactional histories of a J2EE application having problems (performance, scalability, and reliability) I look to see how much the request data or system/component state has an impact on the execution flows. In general I do not have a problem reading JEE code and determining the major interaction points. The problem for me is combining this mental model with contextual data (requests), state and state transitions. I have a particular interest in transaction integrity of business transactions mapped to resource transactions which is impossible to see in any code specific visualizations. Granted I am trying to solve a much larger and more difficult problem that is not everyones "cup of tea".

regards,

William Louth - JXInsight Product Architect
http://www.jinspired.com

  Message #228486 Post reply Post reply Post reply Go to top Go to top Go to top

How to run outside of Eclipse?

Posted by: Yogesh Bhardwaj on March 02, 2007 in response to Message #228370
It's certainly a very useful tool. How can I gather all the runtime call trace using MaintainJ for an application running outside of Eclipse? Appreciate any feedback.

-yogesh

  Message #228487 Post reply Post reply Post reply Go to top Go to top Go to top

Re: How to run outside of Eclipse?

Posted by: Kothapalli Choudary on March 02, 2007 in response to Message #228486
Yogesh,

MaintainJ needs the application code to be instrumented using AspectJ. This can either be done in Eclipse using MaintainJ Instrumentation Wizard or outside Eclipse using Ant scripts. But if you have an already running application that you cannot build, MaintainJ wouldn't help.

Regards,
Choudary Kothapalli.

  Message #228490 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Data and state is much more revealing

Posted by: Kothapalli Choudary on March 02, 2007 in response to Message #228479
"I didn't see much difference for a single user scenario, though."

Are you talking about overhead or the relevance of multi-threaded execution analysis


I was talking about the overhead; not the relevance of multi-threaded execution analysis. I do agree that application flow without context data helps only to a certain extent.

Regards,
Choudary Kothapalli.
MaintainJ Inc.

  Message #228792 Post reply Post reply Post reply Go to top Go to top Go to top

Considered TPTP?

Posted by: Mike Wilson on March 07, 2007 in response to Message #228370
Interesting. Have you considered adding your UML views as enhanced Eclipse TPTP views? (extensions to existing UML2 Class/Object Views)

That would make it possible to use TPTP's existing call statistics collectors, which would in turn save the developer yet another setup stage.

Best regards
Mike Wilson

  Message #228841 Post reply Post reply Post reply Go to top Go to top Go to top

Considered TPTP?

Posted by: Kothapalli Choudary on March 08, 2007 in response to Message #228792
I have not looked at TPTP for a long time. I need to take a look at it. Thanks a lot for your suggestions.

Regards,
Choudary Kothapalli.

  Message #228842 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Considered TPTP?

Posted by: Mike Wilson on March 08, 2007 in response to Message #228841
For a glimpse of the UML2 views you can have a look at "Quick tour of TPTP"
http://www.eclipse.org/tptp/home/documents/tutorials/viewlets/v4.1/EW-profile/EW-profile/EW-profile_viewlet_swf.html
frames 112-125 (link found on http://www.eclipse.org/tptp/home/documents/index.html)

Best regards
Mike Wilson

New content on TheServerSide.comNew content on TheServerSide.comNew content on TheServerSide.com

Dependency Injection in Java EE 6 - Part 1

Reza Rahman explores the features of the proposed JSR 299, Contexts and Dependency Injection for Java EE (CDI). When approved, it promises to be a key feature of Java EE 6. (November 2, Article)

SAML: It's Not just for Web services

SAML is an XML-based standard for exchanging authentication and authorization data between security domains. The single most important problem that SAML was created to solve is the Web browser Single Sign-On problem. Many organizations are debating whether to stay with version 1.1 or move to 2.0. This article makes observations about both options. (September 28, Article)

Programming is Also Teaching Your Team

Joe Ottinger takes a look at how people learn, and applies it to the practice of programming. He notes that understanding how people learn is an essential part of working in a programming team. (September 22, Article)

Can Java EE Deliver The Asynchronous Web?

Stephen Maryka gave us an article about the Asynchronous Web and posed a number of questions that get examined like an approach to delivering Asynchronous Web capabilities through extensions to existing Java EE technologies. (July 14, Article)

JSF Flex

JavaServer Faces Flex goal is to provide users capability in creating standard Flex components, part of flexSDK which is open sourced through MPL license, as normal JSF components. This article by Ji Hoon Kim will provide an overview of creating a simple multilingual JSF page consisting of JSF Flex tags. (June 29, Article)

The Rules of SOA - A Road to a Successful SOA Implementation

In this session Jeff explores the key characteristics of successful SOA projects. He covers some of the patterns, and anti-patterns, tool sets, and strategies that he himself learned the hard way. Last, he provides a strategy and blueprint for achieving a high likelihood of success in your SOA project. (June 23, Tech Talk)

Ari Zilka Talks About Terracotta 3.1

Ari Zilka, CTO of Terracotta, Inc., talks about the new features in Terracotta 3.1, announced during JavaOne and available now. (June 15, Tech Talk)

Enterprise Application Integration, and Spring

In this Tech Talk, Josh Long explores an integration challenge using Spring Integration and walks through the implementation, employing and expanding on the basic patterns of Enterprise Application Integration to tie together components into a function integration solution, and then demonstrates how Spring Integration helps address the integration requirements. (June 15, Tech Talk)

Google Web Toolkit: An Introduction

In this Tech Talk, David Geary teaches you: The basics of Google Web Toolkit; How to implement Ajax-enabled applications in Java; Internationalization; Hooking into the browser history mechanism; Remote procedure calls. (June 4, Tech Talk)

Just Enough Early Architecture to Guide Development

Jon Kern discusses the best architecture/technical solutions and ensure that they are repeated by all developers. By tackling the architecture up-front in a serial manner, subsequent parallel development will be much more manageable and predictable. (May 28, Tech Talk)

Productive Programmer: On the Lam from the Furniture Police

This keynote describes the frustrations of modern knowledge workers in their quest to actually get some work done, and solutions for how to guard yourself against all those distractions. Neal Ford talks about environments, coding, acceleration, automation, and avoiding repetition as ways to defeat the misguided attempts to sap your ability to produce good work. (May 26, Tech Talk)

Auto-Scaling Your Existing Web Application

Gil demonstrates how new, aggressive uses of already abundant compute capacity by common applications offer competitive value for application designers. (May 21, Tech Talk)

Automating Hibernate Mapping and Queries For Java Web Development

Chris Keene introduces WaveMaker as a new way to automate the ability to generate Hibernate classes in order to more quickly bring OR mapping into an application. (May 19, Article)

Auto-Scaling Your Existing Web Application

In this session Nati Shalom demonstrates how to take a standard Java EE web application and scale it out or down dynamically without changes to the application code. Seeing as most web applications are over-provisioned to meet infrequent peak loads, this is a dramatic change because it enables growing your application as needed, when needed, without paying for unutilized resources. (May 19, Tech Talk)

Free Book: Jakarta-Struts Live

Download the entire book of Jakarta-Struts Live and learn about Struts MVC, Tiles, the Validator, DynaActionForms, plug-ins, internationalization, and more.
(Book PDF Download)

Application Server Matrix

The Application Server Matrix is a detailed listing of J2EE vendors and their application server products, with information on latest version numbers, J2EE spec support and licensing, pricing, platform support, and links to product downloads and reviews.
(Application Server Comparison Matrix)

News | Blogs | Discussions | Tech talks | Patterns | Reviews | White Papers | Downloads | Articles | Media kit | About
Java Solutions
All Content Copyright ©2007 TheServerSide Privacy Policy
Site Map