HotswapAgent - Java unlimited redefinition of classes at runtime.

  •        47

The main purpose of this project is to avoid infamous _change -> restart&wait -> check development lifecycle. Save&Reload during development should be standard and many other languages (including C#) contain this feature.

DCEVM + HotswapAgent allow Add/remove/modify Class fields, Method, Method annotations, Static member of class, Anonymous class.



Related Projects

play-clj - A Clojure game library

  •    Clojure

A Clojure library that provides a wrapper for libGDX, allowing you to write 2D and 3D games that run on desktop OSes (Windows, OS X, and Linux) and Android with the same Clojure codebase.The best thing about making a game in Clojure is that you can modify it in a REPL while it's running. By simply reloading a namespace, your code will be injected into the game, uninhibited by the restrictions posed by tools like HotSwap. Additionally, a REPL lets you read and modify the state of your game at runtime, so you can quickly experiment and diagnose problems.


  •    C

ACPI kernel driver to support hot-swapping of common 'bay' type peripherals on laptops.

Aceso - A hotfix library for Android

  •    Java

Aceso is a Android HotFix by optimizing the AOSP's "InstantRun HotSwap" solution, it is used to fix online bugs without a new APK publish. Add below codes once you need aceso for Debug version.

spring-loaded - Java agent that enables class reloading in a running JVM

  •    Java

Spring Loaded is a JVM agent for reloading class file changes whilst a JVM is running. It transforms classes at loadtime to make them amenable to later reloading. Unlike 'hot code replace' which only allows simple changes once a JVM is running (e.g. changes to method bodies), Spring Loaded allows you to add/modify/delete methods/fields/constructors. The annotations on types/methods/fields/constructors can also be modified and it is possible to add/remove/change values in enum types.Spring Loaded is usable on any bytecode that may run on a JVM, and is actually the reloading system used in Grails 2.

jamm - Java Agent for Memory Measurements

  •    Java

Jamm provides MemoryMeter, a java agent to measure actual object memory use including JVM overhead.

heapster - production heap profiling for the JVM. compatible with google-perftools.

  •    C

Heapster provides an agent library to do heap profiling for JVM processes with output compatible with Google perftools. The goal of Heapster is to be able to do meaningful (sampled) heap profiling in a production setting.By default, Heapster samples every 512 kB, this can be changed with the environment variable HEAPSTER_SAMPLE_PERIOD (in bytes).

hawtio - A modular web console for managing your Java stuff

  •    Javascript

hawtio is a lightweight and modular HTML5 web console with lots of plugins for managing your Java stuff. It provides web console for Active MQ, Elastic search, Apache Camel, Apache CXF, Git, Fuse Fabric, Infinispan, Jetty, JMX, Quartz, Tomcat, Wiki, JVM, Junit and lot more. You can dynamically extend hawtio with your own plugins or automatically discover plugins inside the JVM.

QAT Distributed Test Harness

  •    Java

Distributed test harness for testing of non-homogenous architectures. Distribute your tests on any combination of agent architectures. Agents available in Java or native C++ if no JVM exists for your target platform (e.g. embedded architectures)

byte-buddy - Runtime code generation for the Java virtual machine.

  •    Java

Byte Buddy is a Java library for creating Java classes at run time. The parent artifact contains configuration information that concern all modules.

Stagemonitor - Application performance monitoring for java server applications

  •    Java

Stagemonitor is a Java monitoring agent that tightly integrates with time series databases like Elasticsearch, Graphite and InfluxDB to analyze graphed metrics and Kibana to analyze requests and call stacks. It includes preconfigured Grafana and Kibana dashboards that can be customized. It supports Real Time Metrics, Call tree of the current request including SQL statements to identify the bottlenecks of a request, Execution time and count of database interactions, Analyze the HTTP headers and lot more.

Pinpoint - Application Performance Management tool for large-scale distributed systems in Java

  •    Java

Pinpoint is an APM (Application Performance Management) tool for large-scale distributed systems written in Java. Modelled after Dapper, Pinpoint provides a solution to help analyze the overall structure of the system and how components within them are interconnected by tracing transactions across distributed applications.

riemann-jvm-profiler - Sends stacktrace-level performance data from a JVM process to Riemann.

  •    Clojure

Riemann-jvm-profiler requires no changes to your codebase. You'll need a Riemann server with the websocket/HTTP server (ws-server) accessible from each JVM process. The default Riemann websocket port is 5556.You can add riemann-jvm-profiler artifact to your Maven or Leiningen project via Clojars, and somewhere in your application startup code, invoke the profiler programmatically.

jvm.go - A toy JVM written in Go

  •    Go

A JVM written in Go.jvm.go is a toy JVM (which is far from complete) programmed in Go. The main purpose of this project is learning Go and the JVM. So the number one goal of the project is readability of code. The basic idea is to just implement the core JVM, and use rt.jar (from OpenJDK) as its class library. The garbage collector is implemented by directly using Go’s GC.

jvm-mon - Console-based JVM monitoring

  •    Kotlin

Console based JVM monitoring - when you just want to SSH into a server and see what's going on. jvm-top lets you monitor your JVM server applications from the terminal.

Eta - A powerful language for building scalable systems on the JVM

  •    Haskell

Eta is a pure, lazy, strongly typed functional programming language on the JVM. It is a dialect of Haskell on the JVM. It is pure by default which means that calling a function with the same arguments will yield the same results every time. It is lazy by default which means that data stays in unevaluated state until a function needs to peek inside.

JVM Monitor - Java profiler integrated with Eclipse

  •    Java

JVM Monitor is a Java profiler integrated with Eclipse to monitor CPU, threads and memory usage of Java applications. JVM Monitor would be useful to quickly inspect Java applications without preparing any launch configuration beforehand. JVM Monitor automatically finds the running JVMs on local host and you can easily start monitoring them. It is also supported to monitor Java applications on remote host by giving hostname and port number.

useragent - Useragent parser for Node.js, ported from

  •    Javascript

Useragent originated as port of's user agent parser project also known as ua-parser. Useragent allows you to parse user agent strings with high performance and accuracy by using hand tuned regular expressions for browser matching. This database is needed to ensure that every browser is correctly parsed as every browser vendor implements it's own user agent schema. This is why regular user agent parsers have major issues because they will most likely parse out the wrong browser name or confuse the render engine version with the actual version of the browser. This module relies on uap-core's regexes.yaml user agent database to parse user agent strings.

Capsule - Dead-Simple Packaging and Deployment for JVM Apps

  •    Java

Capsule is a packaging and deployment tool for JVM applications. A capsule is a single executable JAR that contains everything your application needs to run either in the form of embedded files or as declarative metadata. It can contain your JAR artifacts, your dependencies and resources, native libraries, the require JRE version, the JVM flags required to run the application well, Java or native agents and more. In short, a capsule is a self-contained JAR that knows everything there is to know about how to run your application the way it's meant to run.