Release Notes

This document summarizes changes made in all releases starting with 0.5.

Starting with version 1.4, the Kieker ticket system contains details on the changes.

Please refer to the Documentation for details on using Kieker.

2.0.0 (September 22, 2024)

This new major release was in preparation for three years. Many research paper already used the new infrastructure for the past year.

During our effort to release version 2 of Kieker, sadly our friend and colleague André past away. Thus, we dedicate this release to André van Hoorn one of the fathers of Kieker, long year contributor and mentor of this project.

  • Refactoring
    • Major API changes
    • Update Kieker to Java 11; Java 8 is no longer supported
    • Replaced all the different graph libraries with one graph library
    • Created comprehensive and stable package structure
    • Improved code quality: hardcoded time unit values
    • Removed obsolete code: DbWriter and deprecated classes
    • Update dependencies and provide more modular jars
    • Fixed inconsistent naming of reader and writer tests
    • Replaced old tools with new ones using TeeTime
    • Separated Moobench from Kieker
  • Features
    • Many improvements to the Kieker Architecture Model, including nested components, dataflow
    • Improve component and operation processing in Kieker
    • Support for user behavior modeling and clustering
    • Support for Java 21
    • Separate string registration from serialization in records
    • Switch to new TeeTime based pipe and filter framework
    • Inclusion of dynamic and static architecture analysis tools from the OceanDSL project
  • Improved Build System
    • Working local build with docker container
    • Rework Gradle build script
    • Improve Pipeline Speed
    • Jenkins optimization and issue fixing
    • Introduce timeouts for stages
    • Update to Gradle 8.8
  • Release
    • Migrated releases to GitHub
    • Created check for source and javadoc jars into check script
    • Moved Moobench and other Kieker repositories to github
  • Removed Feature
    • Deprecation of KaxRun and KaxViz
    • DbWrite
  • Documentation
    • Moved documentation to readthedocs
    • Improved documentation for use of IRL
    • Updated introduction
  • Library updates
    • Update Teetime to 3.1.0 release
    • Update AspectJ to 1.9.19 to support Java 19
    • Remove aopalliance dependency
    • Updated to new OSHI library to support systems monitoring
    • Updated many different library versions

1.15 (November 8, 2021)

  • New features (selection)
    • Migration of analysis stages to the TeeTime-based Kieker analysis.
    • Added new analysis stages from the iObserve research project
  • Improvements and refactorings
    • Improved AspectJ probes, e.g., by introducing before/after advices for cflow pointcuts, OpenJDK 11 support
    • Refactored the file system writer
  • Build scripts and infrastructure
    • Replaced additional local Jar dependencies by using the Maven dependencies
    • Converted Kieker tools to multi-project builds
    • Use of GitHub actions to test common platforms (Linux, Mac, Windows) and Java versions
  • Documentation
    • Migrated the deprecated LaTeX-based user guide to Read The Docs (https://kieker-monitoring.readthedocs.io/en/latest/)
  • Bug fixes and improvements to code, performance, tests, documentation,
    examples

1.14 (May 13, 2020)

  • New features (selection)
    • Integration of a novel pipes-and-filter framework and filters in
      Kieker.Analysis based on TeeTime (teetime-framework.github.io
      version 3.0). Additional documentation will be added. Currently, the
      TeeTime-based framework and filters exist in parallel to the
      existing infrastructure. The long-term plan is that the
      TeeTime-based infrastructure replaces the existing one.
    • New file system writer to replace the existing ones in the next
      Kieker release
    • Generic file writer supporting different compression types
    • Monitoring support for Spring-based REST communication with AspectJ
    • Support for enums in IRL
    • Support for additional compression algorithms in the file writers
      and readers
    • New TeeTime reader stages with common interface to use them in
      tools
    • Introduced new Kieker tool framework covering commandline and
      configurations file evaluation (see Writing Tools and Services)
    • Added monitoring of database calls (including the SQL statement)
    • Introduced new data bridge tool, called collector
    • Ensuring support for Java 7, 8, 9, and 10
  • Improvements and refactorings
    • Moved the Kafka readers and writers into a separate Gradle module.
      This is supposed to be a schematic example and other technology-specific
      modules are to follow. The goal is to improve the dependency management.
    • Many cleanups and improved test coverage
    • Restructuring of sub-projects tools have now separate projects and
      shared tool features can be found in kieker-tools
  • Infrastructure
    • Included Clover test coverage tool, migrated from FindBugs to
      SpotBugs
    • Replacing Jar file dependencies to Maven Central dependencies
      (ongoing)
    • Switched to Jenkins declarative pipeline
    • Updated the build system to provide separate bundles for all tools
  • Documentation
  • Bug fixes and improvements to code, performance, tests, documentation,
    examples

1.13 (October 4, 2017)

  • New features (selection)
    • Kafka writer and reader
    • Records provide API access to property names
    • SpringBoot REST interceptors
  • Improvements and refactorings
    • Performance improvements in the monitoring component (including
      API changes to the writers)
    • Refined architecture including minor (internal) API changes
      to records
    • Library updates
  • Dropped features
    • Database (SQL) writer and reader
    • Explicit support for HornetQ and OpenJMS
      (may be still be used via the JMS API)
  • Java 7 (or higher) required
  • Infrastructure
    • Migration to Atlassian Cloud (Confluence and Jira)
    • Jenkins-based continuous delivery pipeline integrated with GitHub
    • Docker containers for examples (JPetStore livedemo, RSS example),
      build containers
  • Bug fixes and improvements to code, performance, tests,
    documentation, examples

1.12 (October 1, 2015)

  • New features (selection)
    • Monitoring of system-level statistics based on the Sigar API:
      • New probes and corresponding records for network and disk usage; load average
      • New servlet filter to start the Sigar-based samplers (previously only a servlet for CPU, memory/swap)
      • Standalone tool for resource monitoring
    • New reader and writer for Advanced Message Queuing Protocol (AMQP)
    • Probes for collecting distributed traces in REST-based environments with Jersey.
    • Example for monitoring traces in distributed applications based on the RESTful Netflix OSS RSS Reader Recipe, provided via container-based virtualization (Docker).
  • Bug fixes and improvements to code, performance, tests,
    documentation, examples

1.11 (April 1, 2015)

  • New features (selection)
    • HTTP PUT/REST API for data bridge
    • Trace analysis: automatic repair of broken traces
    • Improved OPAD examples
  • Migrated to Gradle for build automation
  • Bug fixes and improvements to code, performance, tests,
    documentation, examples

1.10 (October 15, 2014)

  • New features (selection)
    • Instrumentation record language
    • Various samplers to collect data from the JVM
    • Major refinements and extensions to TSLib and OPAD
      (e.g., various forecasters based on R)
    • Filter for session reconstruction
    • Updateable filters
    • Additional examples
  • Support for Java 1.8 (via AspectJ)
  • Bug fixes and improvements to code, performance, tests, build scripts,
    documentation, examples

1.9 (April 16, 2014)

  • New features (selection)
    • Binary monitoring writers using Java NIO
    • Support for DiSL probes
    • Writer for exporting records to the ExplorViz tool for online trace visualization
    • Trace Analysis GUI (beta)
    • TSLib: time series analysis library (beta)
    • OPAD: online performance anomaly detection filters (beta)
    • Live demo part of the Java EE example
    • TraceAnalysis: coloring of components and operations based on response times
  • API change:
    • Kieker’s AspectJ weaver Jar now uses a default aop.xml when no other aop.xml found. Should be disabled in multi-classloader environments (Java EE, OSGi, etc.) by using a new configuration parameter; alternatively, AspectJ’s weaver agent can be used.
  • Bug fixes and improvements to code, performance, tests, build scripts, documentation, examples
  • Improvements to the WebGUI (see separate `HISTORY` file)

1.8 (October 16, 2013)

  • New features (selection)
    • Data Bridge: Facility to connect Kieker’s Java core with other platforms
    • New reader plugin that provides the current system time in regular intervals
    • New TCP writer and reader
    • Acceleration/slow-down factor for real-time replayer
  • Minor changes to the record API
    • Additional method for binary (de)serialization
    • `TYPES` field now public
    • Many record types no longer `final` (eases custom extensions)
  • Bug fixes and improvements to code, performance, tests, build scripts, documentation, examples
  • Various improvements to the WebGUI (see separate `HISTORY` file)

1.7 (April 17, 2013)

  • Major changes
    • Adaptive monitoring: extended set of (de)activation patterns to support adaptive monitoring for custom probes. Before: limited to (de)activate monitoring for operation signature patterns.
    • New file system writers supporting (ZIP) compression
    • Minor modifications to the Kieker.Analysis API:
      1. Removed the `register` methods. Registration now implicit by passing context information to the plugin constructors. A legacy mode for the previous API is included in this version
      2. Analysis projects can now have properties available to the plugins.
    • Bug fixes and improvements to code, tests, documentation, examples
    • Various improvements to the WebGUI (see separate `HISTORY` file)
  • Infrastructure:
    • Kieker releases now also published via Maven Central Repository (http://search.maven.org/)
    • Completely redesigned web site: https://kieker-monitoring.net
    • Live demo at http://demo.kieker-monitoring.net

1.6 (October 17, 2012)

  • Major changes
    • Web-based UI for editing and running analysis projects (beta version)
    • Adaptive monitoring: (De)activate monitoring on method signature level at runtime based on signature patterns
    • Restructured and extended graph/visualization filters (trace coloring, tooltips etc.)
    • Log rotation for file system writer
    • Logging API: SLF4J support and logger selection via JVM argument
    • Many new AspectJ-based probes for detailed event-based tracing
    • Refactored realtime replayer based on new re-usable filters (realtime delay, record logger, etc.)
    • Java EE example: Now included in core binary release archive and based on MyBatis JPetStore deployed to Jetty server
    • Definition of configuration properties and default values for analysis plugins and repositories now annotation-based
    • Removed legacy control servlet (JMX interface should be used instead)
  • Quality
    • Bug fixes
    • Added a number of (JUnit) tests

1.5 (April 13, 2012)

  • Major new features
    • Completely reworked pipe-and-filter framework in Kieker.Analysis
      • Use of Java annotations to specify plugins, repositories, input/output ports etc.
      • Support for multiple readers
      • Load and save configurations from/to .kax files (based on a new meta-model specified using Ecore)
      • Basic tools to execute/visualize .kax files
    • New database writer/reader supporting arbitrary record types
    • Support for immutable record types
    • New binary filesystem writer/reader
    • New print stream writer
    • New re-usable filters (tee, counting, timestamp etc.)
    • Complete method signatures used in probes/records for control-flow tracing
    • New record types/probes for event-based tracing (method call, entry, exit etc.)
    • Re-enabled Java 5 support
    • Removed dependency to commons.logging
    • Additional Kieker Jar usable as javaagent for AspectJ-based instrumentation
  • Quality
    • Bug fixes
    • Added a number of (JUnit) tests

1.4 (October 14, 2011)

  • Features:
    • JMX monitoring reader and writer
    • JMS support for ActiveMQ and HornetQ (in addition to OpenJMS)
    • Enable/disable flushing of FS Writers
    • Configurable shutdown delay for asynchronous writers
    • Configurable Servlet parameters for periodic samplers
    • Direct support for asynchronous analysis
    • Java 5 no longer supported
    • Refined Microbenchmark (+ SPEC macro-benchmark configuration)
  • Bug fixes/Improvements to sources and documentation
    • Code quality
      • Code cleanup
      • Coding conventions
      • Javadoc cleanup
      • Integrated static analysis tools Findbugs, Checkstyle, and PMD
      • Integrated test coverage tool
      • Resolved Java warnings
    • Licensing
      • Added license headers to source files
      • Added licenses for third-party libs
    • Documentation
      • Extended Java EE Servlet container example to Windows
      • Fixes in user guide (examples)
      • Extended JMS example to ActiveMQ and HornetQ (including Windows)
    • Release archives
    • Eclipse project files (Kieker project can be imported without copying the default files)

1.3 (May 19, 2011)

  • Added support for periodic samplers
  • Added support for monitoring system-level statistics based on the Sigar API
  • MonitoringController no longer restricted to singleton instance
  • Added support for custom time sources
  • Improved configuration managementAdded named pipe reader/writer (for passing monitoring records directly within same JVM)
  • MonitoringController accessible as JMX MBean
  • API changes
    • The format of the kieker.monitoring.properties changed!
    • Custom writers will need to be adjusted to a changed interface
    • Minor changes in the MonitoringController interface

1.2 (Sep 8, 2010)

  • Minor bug-fixes and refactorings(e.g., renaming Kieker.Tpmon/Tpan->Kieker.Monitoring/Analysis )
  • Further enancements to trace analysis tool (e.g., analysis and visualization features providing software assembly- and deployment-level views)
  • Improved documentation, e.g., brand-new user guide with examples!
  • Improved Windows support (e.g., wrapper scripts)

1.1 (March 04, 2010)

  • Improved implementation of trace analysis tool
    • internal meta-model, on-the-fly trace reconstruction, …
    • Analysis features: Output of reconstructed system model, computation of trace equivalence classes, …
    • Enhaced visualization features, e.g.,
      • hierarchical dependency graphs (operation-, component-, container-level),
      • call graphs

1.0 (Nov 18, 2009)

  • Minor changes to Kieker’s architecture
  • Bug fixes

0.95a (Jul 09, 2009)

  • Considerable improvements to Kieker’s architecture, e.g.
    • Generalized/extensible monitoring record model (more than executions)
    • Generalized/extensible writer model (more than database and filesystem)
    • Integration of monitoring and analysis data model
  • Major refactorings
  • First release containing core parts of the analysis component Tpan

0.91 (Apr 27, 2009)

  • Aspects are in @Aspect style
  • Adapted to operate with Java 6
  • Maven build support
  • Monitoring support for the spring framework with soap, XFC WebService stuff
  • More efficient internal data structures and processing
  • Distributed monitoring

0.6 (Jul 30, 2008)

  • Added a new test for load-time weaving without Java annotation using full
    instrumentation

0.5 (May 08, 2008)

  • first sourceforge release