This is a living list of tools for program debloating and software specialization.

Java

  • JDBL automatically removes unnecessary code from Java applications through dynamic analysis (paper).

  • DepClean automatically detects and removes unused dependencies in Maven projects (paper).

  • JReduce is a tool for reducing Java class files and jar files. (paper).

  • jlink is a tool to assemble and optimize a set of Java modules and their dependencies into a custom runtime image.

  • Proguard is a shrinker, optimizer and obfuscator of Java bytecode.

  • Piranha is a tool for refactoring code related to feature flag APIs (paper).

  • JShrink is a Java shrinker (paper).

  • JShrink is a Java shrinker and obfuscator.

Docker

  • docker-slim a tool to minify and secure docker containers.

  • JavaSlicer is an open-source dynamic slicing tool developed at Saarland University.

C/C++

  • RAZOR is a framework for post-deployment software debloating (paper.

  • Slimium is a tool to debloat Chromium (paper.

  • Nibbler is a tatic analysis tool to automatically find functions in the program and its shared library functions that are not used by the program. (paper).

JavaScript

  • MoMIT is a JavaScript interpreter minimizer (paper).

  • UFFRemover is a slimming JavaScript tool for identifying and removing unused foreign functions (UFF) (paper).

  • R8 is the Google substitute of Proguard.

  • JShrink is a Javascript minifier built in PHP.

Related tools

  • bpftrace High-level tracing language for Linux eBPF.

  • STrace A diagnostic, debugging and instructional userspace utility for Linux.

  • JDCallgraph Dynamic call graph generation for Java.

  • constant-pool-scanner Simple utility to scan Java bytecode for class references in the constant pool.

  • java-callgraph Programs for producing static and dynamic (runtime) call graphs for Java programs.

  • jvm-callgraph Call graph generator for JVM bytecode.

  • jvm-tools Small set of tools for JVM troublshooting, monitoring and profiling.

  • bytecode-examples Java Bytecode Engineering Examples & Tutorials.

  • maven-lifecycle-logger Logger to record maven lifecycle events and timing.

  • dex-method-counts Command-line tool to count per-package methods in Android .dex files.

  • DTrace A comprehensive dynamic tracing framework