|
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
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.
|
|
Message #228423
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Re: MaintainJ Version 1.0 is out
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
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
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
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
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 #228465
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Spring
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
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
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
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
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
"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?
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?
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
"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?
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?
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.
|
|
 |
New content on TheServerSide.comNew content on TheServerSide.comNew content on TheServerSide.com |
 |
 |
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 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)
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)
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)
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)
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, CTO of Terracotta, Inc., talks about the new features in Terracotta 3.1, announced during JavaOne and available now.
(June 15, Tech Talk)
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)
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)
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)
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)
Gil demonstrates how new, aggressive uses of already abundant compute capacity by common applications offer competitive value for application designers.
(May 21, Tech Talk)
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)
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)
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)
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)
|
|