Over a million developers have joined DZone.

Look Back On Your Application's Past With Chronon

DZone 's Guide to

Look Back On Your Application's Past With Chronon

· Java Zone ·
Free Resource

If you're running an open source project, and have trouble with bugs that are difficult to reproduce, then Chronon's latest announcement is what you've been waiting for. You might be familiar with their Time Travelling Debugger, which allows you to play back recordings of your Java program to find where things may have gone wrong. With the embedded recorder included in your application, your users will be able to send reports to the development team for investigation. No need for unreliable log files - let Chronon do the hard work for your project.

I spoke to Prashant Deva, founder of Chronon Systems, to find out more about the advantages of the product for open source projects.

DZone: What is the Open Source licence for Chronon all about?

Prashant Deva: We are offering Open Source licenses of Chronon to further our mission of 'No More Non Reproducible Bugs' for the entire Java community.
Specifically we are offering licenses of Chronon Time Travelling Debugger and Embedded Chronon so that users of these open source project can submit Chronon recordings of bugs to those projects easily and be ensured that the developers of these projects can open/debug them.

DZone: How do you integrate the embedded recorder?

Prashant Deva:  The embedded recorder basically ships the recorder.jar file with your application.
We offer a simple api, eg - Recorder.start(), Recorder.stop() so that developers can choose to create a 'record' button inside their application.
Thus enabling their users to easily report bugs as Chronon recordings.
DZone: Is there any performance loss?

Prashant Deva: We recently announced Chronon 3 which has a 10x performance improvement and is ready for heavy duty production environments.
If you are still concerned about performance, we allow using Embedded Chronon to dynamically start/stop recording only when needed. The Chronon recorder also has a bunch of settings like choosing exactly which classes to record, etc to fully control the performance impact.

DZone: What are the base requirements for including it?

Prashant Deva:  The program needs to run on JVM 6. You can still compile your code for java version < 6, but they just need to be run on jvm 6.
Dzone: Do users need to send the reports? Could you add something to access the logs remotely?

Prashant Deva: It depends on the open source projects and their users, how they facilitate the transfer of recordings. We just provide the tools to do so.
In the case of projects with a UI, using Embedded Chronon, they can probably show a dialog to automate transfer of recordings.

In the case where the project is a library, the users will probably be recording it in their own commercial applications using our commercially licensed copy of either Recording Server, Embedded Chronon or Chronon Eclipse Debugger. In this case, they would probably attach the recording to a bug report.

This is especially useful since most enterprise applications are dependent on a big environment like a database, messaging queue, etc to reproduce the bug. And currently they wouldn't be able to get the bug cured since they cant reproduce the environment on the library developer's side.
But now they can send the bug as a single Chronon Recording file to the developers.

This way the users of these open source libraries are a lot more confident about using the library since they know that if an issue occurs they can get it easily fixed by sending a Chronon Recording.

The developers of the open source projects will have a free Chronon Debugger license from us that they can use to debug the issue.
DZone: Could I use this in an Android application?

Prashant Deva: No. Android is not supported since it runs on the Dalvik vm and not the standard JVM.


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}