Desde o JDK 1.4.2 até o Java SE 6, têm evoluído cada vez mais os recursos e as ferramentas para gerenciamento e instrumentação de máquinas virtuais Java (JVMs) e de aplicações executando nelas, local ou remotamente.
Estes potencialidades, em maior parte, são possíveis graças à tecnologia Java Management Extensions (JMX), que se tornou parte padrão da plataforma Java SE no J2SE 5.0. Através de JXM, pode-se construir mecanismos padronizados para desde coletar informações e estatísticas até atuar dinamicamente em parâmetros e recursos de componentes Java. A própria máquina virtual Java HotSpot da Sun usa extensivamente JMX para oferecer amplos recursos de instrumentação para os mais diversos aspectos da JVM, como alocação de memória, uso de CPU, threads e opções de execução. Servidores de aplicação Java livres (Tomcat, JBoss, Glassfish…) e comerciais também utilizam JMX para oferecer recursos de monitoramento e gerenciamento em tempo real.
A iniciativa mais recente é a ferramenta gráfica VisualVM, projeto de software livre (licença GPLv2+CE) sendo desenvolvido no portal java.net. A VisualVM visa integrar diversas ferramentas de gerenciamento de software existentes no JDK e recursos para profiling de memória e CPU, mas creio que principalmente o JConsole.
VisualVM ainda está no Milestone 3 (lançado em 19 de fevereiro), mas já mostra bem suas possibilidades de aplicação no monitoramento, instrumentação e profiling.
Para saber mais, artigos e guias das ferramentas de gerenciamento Java (em inglês):
- Visual VM: Free and Open Source Java Troubleshooter, por Geertjan Wielenga, 2008-02-21, Javalobby.
- Getting Started Extending VisualVM – Parte 1 (2008-02-26), Parte 2 (2008-02-27), Parte 3 (2008-02-28), Parte 4 (2008-02-29), Parte 5 (2008-01-03); por Geertjan Wielenga, em seu blog, Sun Microsystems, Praga, República Tcheca.
- Getting Started with Java Management Extensions (JMX): Developing Management and Monitoring Solutions, por Qusay H. Mahmoud, 2004-01-06, SDN.
- JSR 255: Java Management Extensions (JMX) Specification, version 2.0. Especificação que atualiza as APIs JMX e JMX Remote para Java SE 6.0.
- Monitoring and Management for the Java Platform, parte da documentação de Java SE 6.0. Em especial, veja o guia Overview of Java SE Monitoring and Management e a documentação das ferramentas JConsole, jps, jstat, jstatd. Esta documentação também existe para o JDK 5.0.
- Using JConsole to Monitor Applications, por Mandy Chung, dezembro 2004.
- Monitoring Local and Remote Applications Using JMX 1.2 and JConsole, por Russell Miles, 2004-09-29, O’Reilly ONJava.com.
- jvmstat 3.0, SDN Code sample.