[Thermostat-announce] [ANNOUNCE] Thermostat 1.0.0 Released!

Jon VanAlten jvanalte at redhat.com
Tue Nov 26 08:31:36 UTC 2013

Hi all,

The sleigh-bells are ringing, our cheeks are ruddy, and we've got a
spare scarf, some buttons for eyes, and a carrot nose to put the
finishing touches on:

Thermostat 1.0.0: "The Snowman"[*]

You can download this stable release (and corresponding checksum) at:


This is the release in which we consider Thermostat to be out of beta
status; this is why we have finally bumped the major version number.

Rather than highlighting changes since the most recent pre-release, it
seems a good time to go over the big picture features of Thermostat,
especially those that we consider "complete" and stable for this

A process (well, a group of processes) running on the same host as the
Java processes that you wish to monitor, collecting and storing data.

A way to expose, interpret, and/or visualize the monitoring data.  Our
main client is a Swing gui application, but we also have implemented
a shell mode with several commands that provide a subset of the feature
set of the Swing gui, and we have some experimental work that will at
some point lead to a full-featured Eclipse plugin allowing Thermostat
monitoring of both local and remote processes from within the IDE.

Where the data is stored, but also an API layer that is used by both the
agent and the client to publish or access monitoring data.  The main
implementation of this API uses the document-based database MongoDB, and
we also have a web-servlet based implementation that can be deployed
in front of the MongoDB storage which provides an adequate level of
security for remote monitoring in an untrusted environment without
risking exposure of potentially sensitive data from your Java

Plugin API and OSGi:
Thermostat is customizable.  A typical plugin consists of some classes
on the agent side for collecting data and pushing it to storage, and
corresponding classes on the client side for retrieving and displaying
this data.  Thermostat makes use of the OSGi service model to provide
functionality to plugins and allow plugins to provide functionality to
Thermostat.  The API consists mainly of a set of interfaces that are
marked with either @Service or @ExtensionPoint annotations.  A Service
is generally something that plugin developers can expect has been
implemented in Thermostat's core, and an implementation can be gotten
by querying the OSGi environment.  An ExtensionPoint is generally
something that a plugin can implement and register to the OSGi
environment, and developers can expect that something in Thermostat's
core will retrieve it and do something useful with it.  There are
also a number of utility classes, abstract implementations of various
various extension points providing commonly needed functionality, and
various other goodies in our API.  We'll be publishing a set of
documentation for plugin developers shortly.  You can consider this
API stable for the entire 1.X.X release series; we may add to it, in
which we will bump the minor version number, but we won't make any
changes that will break code written to the 1.0.0 API standard.

Thermostat ships with a number of existing plugins, exposing CPU and
memory usage at the host level and the JVM level, garbage collector
activity monitoring, detailed thread monitoring, heap dumping and
analysis, and more.

This is not an exhaustive list of Thermostat features.  Please refer to
(and/or contribute to) our project page and especially our wiki for more

For this 1.0.0 release, we would like to thank the entire group of
developers who have contributed to Thermostat since its inception as an
idea and very basic prototype more than two years ago.  For me personally
it's been a great experience, and I've learned things from all of you.

Giovanni Astarita
Elliott Baron
Severin Gehwolf
Roman Kennke
Omair Majid
Andriy Petrus
Mario Torre
Elliott Baron
Jon VanAlten

There are numerous people who have contributed to this project in ways
other than code.  Bug reporters, testers, all you great people who have
participated in our demos and provided us with feedback and direction,
managers who have supported us in our work; the list goes on.  I'd like
to name and praise all of you, but I'm afraid of missing someone.  These
types of contributions are much harder to track than code; unfortunately
there is no mercurial command that can list all of you reliably.  So, a
warm and hearty collective THANK YOU to all of those who have helped us
along the way.  I hope it is not too cliché to say we truly could not have
done it without you.

Please see below for project information.  If you have tried out Thermostat
and have constructive feedback for us, if you are a Java developer and have
specific use cases not handled yet by Thermostat, or if you would like to
contribute to the core of Thermostat or by trying out our plugin API, we
would especially like to hear from you via mailing list or IRC.

URL:           http://icedtea.classpath.org/thermostat
Mailing list:  http://icedtea.classpath.org/mailman/listinfo/thermostat
Repository:    http://icedtea.classpath.org/hg/thermostat
IRC:           #thermostat on irc.freenode.com

Get it before it melts :D

[*] Yes, once again we have a literary reference.  This time we refer to
    the title figure in the novel by Jo Nesbø.  Our Snowman is looking in
    through the window at your Java program's private business, and will
    expose your most embarrassing details!  Also, some of our developers
    (ahem, *this* developer!) are already knee-deep in snow for the winter.
    Finally, with this release, our plugin API is *frozen*.  Get it?
    Frozen!  Like a snowman!

More information about the Thermostat-announce mailing list