Skip to content
SPECIFICTION
Get listed

CFR vs Refinery

CFR

benf.org

Refinery

github.com

Side by side

FigureCFRRefinery
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
WindowsYesYes
macOSYesYes
LinuxYesYes
APIYes—
Self-hostedYesYes
Plans published11
Spec score · Reverse Engineering Tools8.2 (#10)7.6 (#32)
LicenseThe maker’s FAQ directs users to the project README for its license; the project repository identifies the license as MIT.The project is licensed under the MIT License.
PurposeCFR is a Java decompiler that converts Java class files back into Java source.Refinery is a SQL migration toolkit for Rust that runs migrations on a provided database connection.

Plans

CFR

  • FreeFree

CFR pricing →

Refinery

  • RefineryFree

Refinery pricing →

In their own words

CFR

CFR is a free Java decompiler that reconstructs Java source from Java class files. It can process individual named classes, classes found on a classpath, or a whole JAR, and the command-line tool can place output in a chosen directory with the --outputdir option. Decompilation behavior can be adjusted through command-line options or an options file. The maker says CFR handles many features from Java 9, 12, and 14, and it can attempt class files from other JVM languages; those are rendered as Java rather than their original language. CFR is written in Java 6 and is said to run wherever Java 6 does. It is available as a downloadable JAR, through Maven, and from GitHub. The FAQ notes an API from version 0.135, and the project repository identifies the license as MIT. CFR handles bytecode rather than native code. Its maker also notes that some inputs fall into edge cases where output may be poor. There are no paid plans or usage limits stated.

Visit benf.org

Refinery

Refinery is a free, MIT-licensed SQL migration toolkit for Rust applications. It runs migrations against a database connection supplied by the application, either from embedded Rust code or through the refinery_cli command-line tool. Migrations can be SQL files or Rust modules whose migration function returns a String. Refinery records applied versions and metadata, then checks for missing or divergent migrations before running unapplied work. By default, each migration runs in its own transaction; grouped mode can place all migrations in one transaction. Migrations can also be built into a binary, so separate files are not needed at deployment. Listed drivers include postgres, tokio-postgres, mysql, mysql_async, rusqlite, and tiberius; SQLx can be used with a Config implementing Migrate. Driver selection is handled through features. Maintainers describe limited capacity to maintain additional drivers and point to external repositories, naming Klickhouse as an example. Refinery aims to support stable Rust, the previous Rust version, and nightly. To reverse a migration, users must create another migration with the reversing changes.

Visit github.com