JEETuningExpert: A software assistant for improving Java Enterprise Edition application performance

Designing a JEE (Java Enterprise Edition)-based enterprise application capable of achieving its performance objectives is rather hard. Predicting the performance of this type of systems at the design level is difficult and sometimes not viable, because this requires having precise knowledge of the expected load conditions and the underlying software infrastructure. Besides, the requirement for rapid time-to-market leads to postpone performance tuning until systems are developed, packaged and running. In this paper we present a novel approach for automatically detecting performance problems in JEE-based applications and, in turn, suggesting courses of actions to correct them. The idea is to allow developers to smoothly identify and eradicate performance anti-patterns by automatically analyzing execution traces. The approach has been implemented as a tool called JEETuningExpert, and validated using three well-known JEE reference applications. Specifically, we evaluated the effectiveness of JEETuningExpert for detecting performance problems, measured the overhead imposed by online monitoring each application and the improvements were achieved after following the suggested corrective actions. These results empirically showed that the refactored applications are 40.08%, 76.94% and 61.13% faster, on average.

[1]  Steve Vinoski A Time for Reflection , 2005, IEEE Internet Comput..

[2]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[3]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[4]  A. Mos COMPAS: adaptive performance monitoring of component-based systems , 2004, ICSE 2004.

[5]  Cláudia Maria Lima Werner,et al.  Continuous and automated evolution of architecture-to-implementation traceability links , 2008, Automated Software Engineering.

[6]  Connie U. Smith,et al.  Software performance antipatterns , 2000, WOSP '00.

[7]  Ian Gorton,et al.  Performance prediction of component-based applications , 2005, J. Syst. Softw..

[8]  Eric Altendorf,et al.  Using J2EE on a Large, Web-Based Project , 2002, IEEE Softw..

[9]  Floyd Marinescu,et al.  EJB Design Patterns: Advanced Patterns, Processes, and Idioms , 2002 .

[10]  Rod Johnson,et al.  J2EE Development Frameworks , 2005, Computer.

[11]  Charles L Forgy,et al.  Rete: a fast match algorithm , 1987 .

[12]  Willy Zwaenepoel,et al.  Performance and scalability of EJB applications , 2002, OOPSLA '02.

[13]  Nicholas Lesiecki Applyinq AspectJ to J2EE application development , 2006, IEEE Software.

[14]  Henry Muccini,et al.  Using software architecture for code testing , 2004, IEEE Transactions on Software Engineering.

[15]  Connie U. Smith,et al.  More New Software Antipatterns: Even More Ways to Shoot Yourself in the Foot , 2003, Int. CMG Conference.

[16]  Davide Rossi,et al.  Analyzing the Impact of Components Replication in High Available J2EE Clusters , 2005, Joint International Conference on Autonomic and Autonomous Systems and International Conference on Networking and Services - (icas-isns'05).

[17]  Alan Fekete,et al.  Predicting the performance of middleware-based applications at the design level , 2004, WOSP '04.

[18]  John Murphy,et al.  Detecting Performance Antipatterns in Component Based Enterprise Systems , 2008, J. Object Technol..

[19]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[20]  Ian M. Steiner,et al.  Characterizing a Complex J2EE Workload: A Comprehensive Analysis and Opportunities for Optimizations , 2007, 2007 IEEE International Symposium on Performance Analysis of Systems & Software.

[21]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[22]  Welf Löwe,et al.  Generating design pattern detectors from pattern specifications , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[23]  John Crupi,et al.  Core J2EE Patterns: Best Practices and Design Strategies , 2001 .

[24]  Robert Orfali,et al.  3-tier client/server at work , 1997 .

[25]  Eric Wohlstadter,et al.  Proceedings of the 2008 AOSD workshop on Aspects, components, and patterns for infrastructure software , 2007 .

[26]  Jiang Guo,et al.  A performance validation tool for J2EE applications , 2006, 13th Annual IEEE International Symposium and Workshop on Engineering of Computer-Based Systems (ECBS'06).

[27]  Ying Zou,et al.  Adapting the User Interface of Integrated Development Environments (IDEs) for Novice Users , 2008, J. Object Technol..

[28]  Connie U. Smith,et al.  Performance Engineering of Software Systems , 1990, SIGMETRICS Perform. Evaluation Rev..

[29]  Alan Fekete,et al.  Design-level performance prediction of component-based applications , 2005, IEEE Transactions on Software Engineering.

[30]  Herbert Schildt,et al.  Struts : the complete reference , 2004 .

[31]  Christos Douligeris,et al.  An evaluation of the middleware's impact on the performance of object oriented distributed systems , 2007, J. Syst. Softw..

[32]  David Osborne,et al.  J2EE AntiPatterns , 2003 .

[33]  Herb Schwetman,et al.  Using Java Method Traces to Automatically Characterize and Model J2EE Server Applications , 2006, Proceedings of the 2006 Winter Simulation Conference.

[34]  Connie U. Smith,et al.  PASASM: a method for the performance assessment of software architectures , 2002, WOSP '02.

[35]  William C. Wake,et al.  Design Patterns in Java , 2006 .

[36]  André Postma A method for module architecture verification and its application on a large component-based system , 2003, Inf. Softw. Technol..

[37]  Darren Broemmer J2ee Best Practices: Java Design Patterns, Automation, and Performance , 2002 .

[38]  Samuel Kounev,et al.  Performance Modeling and Evaluation of Distributed Component-Based Systems Using Queueing Petri Nets , 2006, IEEE Transactions on Software Engineering.

[39]  Falko Bause,et al.  Queueing Petri Nets-A formalism for the combined qualitative and quantitative analysis of systems , 1993, Proceedings of 5th International Workshop on Petri Nets and Performance Models.

[40]  Steven Haines Pro Java EE 5 Performance Management and Optimization , 2006 .

[41]  Uwe Hohenstein,et al.  An aspect-oriented implementation of the EJB3.0 persistence concept , 2007, ACP4IS.

[42]  Paul D. Ezhilchelvan,et al.  A Comparative Evaluation of EJB Implementation Methods , 2007, 10th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC'07).

[43]  Robert L. Nord,et al.  Reconstructing software architecture for J2EE web applications , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..