Java Simon - Simple Monitoring API
Java Simon is a simple monitoring API that allows you to follow and better understand your application. Monitors (familiarly called Simons) are placed directly into your code and you can choose whether you want to count something or measure time/duration.
News
June 19th, 2009 - Version 2 out!
After few more fixes, some simplifications (ever used StatProcessor? it's gone!), more Javadocs and some Wiki updates (with some more ahead) we have finally released version 2 of Java Simon library. You can choose the big package with precompiled JARs, Javadocs (here online) and working Ant build - or if you're Maven user, you can go for smaller sources-only ZIP with Maven build (Maven 2.1 is required). Check the right side of the page for both downloads.
Enjoy - and tell us what you think!
May 20th, 2009 - Version 2, Beta 2
Yup, we're slower than we anticipated - especially because we really wanted to wrap it up faster for our own sake as well. This time the whole source structure is Maven 2 compliant and you should be able to compile the project and install all Java Simon artifacts into your repository. We still have to finish deployment to online repository and besides that there are some documentation tasks pending as well.
May 6th, 2009 - Fighting with Maven 2 ;-)
We are finishing second beta (check trunk if you're adventurous) with Maven 2 build. As the core developers are not familiar with Maven we have a problem to build the project properly with all dependencies (especially half of the JARs need JDK 5, the other JDK 6 ;-)). If you don't need Maven, simply download the first beta - final version is going to be very similar except for the project structure. API, JARs, features... we will not change this unless some vis major occasion.
Older news: All news can be found here. News on this page (Google code) might be rephrased or shortened. ;-)
Documentation
Check out the list of our Wiki pages where you may also find:
- Introduction - where Java Simon API is positioned and the motivation for it
- GettingStarted - how to start with Java Simon along with some examples
- Callbacks - new important feature of v2 to extend Java Simon functions with your own code
- MavenSupport - for Maven 2 users
Other resources:
- Javadocs for v2
- About Java Simon - on javasimon.org
Visit and join our mailing list on Google Groups: http://groups.google.com/group/javasimon
Some part of the documentation relates to v1 which is not officially supported anymore (sounds strange but there are reasons for that).
Motivation
We wanted to use something like JAMon for our products originally, but we lacked two important features:
- better way (or any way for that matter) to organize all those monitors;
- nanosecond resolution.
Monitor hierarchy
Simon API gives you a better control over all those monitors in your big - possibly Java EE - application. Simons are organized in a hierarchy similar to what you can see in java.util.logging API.
Simons can be disabled which minimizes their overhead influencing your application. These operations can be performed on the whole subtrees of Simons which makes partial application monitoring easier. See SimonHierarchy for more.
The time for nanos is here
Simon measures times in nanos - and believe it or not it can make the difference on current very fast machines. Although not all platforms provide timers precise enough this design decision is future proof. Of course this decision comes with a price - you can use Java Simon only with JDK 1.5 or higher (platform Java SE 5). See SystemTimersGranularity page for more.
Future plans
Our future goals include (the later goals are in a more distant future):
- Sampling, collecting, agregating with persistence backend (file/DB).
- VisualVM plugin.
- Dynamic profiling integration.
Currently the project is rather on hold - but this depends on other free-time activities of the authors and also on public demand and feedback. We're not preparing v3 right now, we're ready to tweak version 2 though.
Do you have something to tell us?
So tell us! Visit our Google Group (preferably) or file an issue, whatever. We can't promise to fulfill all your dreams but we want to produce the library YOU like (and so do we - of course ;-)). So if you know how to make Simon better, without making it something it is not, let us know! We want to know.