Every week here and in our newsletter, we feature a new developer/blogger from the DZone community to catch up and find out what he or she is working on now and what's coming next. This week we're talking to Pierre-Hugues Charbonneau, Senior IT Consultant and System Architect at CGI Inc., and author of DZone's 200th Refcard: Java Performance Optimization. Some of his most recent DZone posts include:
- Java 8 is Now Released!
- ClassNotFoundException: Is It Slowing Down Your JVM?
- Java VM – Beware of the YoungGen space
1. What have you been working on lately?
I'm currently the SWAT team leader of a group of SME's at CGI Canada focusing on production system troubleshooting, performance tuning and root cause analysis. I also recently conducted a comparison study between the top APM products such as New Relic, AppDynamics, Compuware dynaTrace and Riverbed Technology.
2. You recently wrote our Java Performance Refcard. What do you think are the central issues when it comes to Java performance? If you could give only a few tips for optimization, what would they be?
Excessive frequency or elapsed time of stop-the-world garbage collections and application memory leaks remain on-going Java performance challenges. Java thread concurrency issues and inadequate application or middleware resource "budgeting" such as timeouts are next.
My main recommendations for Java optimization are essentially to focus on strong foundations first (proper network & infrastructure capacity, JVM memory sizing and minimal GC overhead). It is also essential for Java developers and production support teams to learn how to take advantage Java profiler and APM tools. Finally, combine JVM thread dump analysis and APM products together for faster root cause analysis and deep insight of your application, middleware and JVM performance hot spots.
3. Are there any particular developer tools or resources you couldn't live without?
Eclipse and NetBeans IDE's remain my favorite day to day developer tools. For production system troubleshooting, APM products, JVM thread dumps and GC/heap runtime data analysis through Java VisualVM and Memory Eclipse Analyzer are part of my main Arsenal and Survival Kit.
4. Do you have a favorite open source project (or projects) that you've contributed to recently?
WildFly, formerly known as JBoss AS, is my favorite open source project at the moment. Exploring the code base or simply load testing the runtime environment are great ways to increase your knowledge and get more insight into the Java EE implementation details. OpenJDK is my next favorite allowing Java developers to stay connected with the latest JDK implementations and obtain early access to new features and changes such as the recent Java 8 release.
5. Do you follow any blogs or Twitter feeds that you would recommend to developers?
I particularly enjoy these days the Java Specialists Newsletter created by Java Champion Dr Heinz Max Kabutz. It provides great resources and courses on challenging Java Concurrency problems which are extremely common for highly concurrent Java applications.
6. Did you have a coding first love -- a particular program, gadget, game, or language that set you on the path to life as a developer?
The C language initially brought me on the developer path followed by Java and its automated memory management principles. IBM VisualAge and its debugger (the initial code base of Eclipse originated from IBM VisualAge) is the IDE that exposed my great interest in Java application debugging and performance troubleshooting.
7. Is there anything else you'd like to mention?
There is one key principle I recommend to Java beginners and production support teams: accept the fact that problem solving is part of our day to day job, realize that each problem case is an opportunity to learn, therefore embrace the challenge, not fear.