Skip to content

Releases: smarkwal/jarhc

v2.2.0

15 Apr 17:13
7a1471a
Compare
Choose a tag to compare
  • Feature: Add command line option --sort-rows to sort JAR files in reports by name.
  • Feature: Add a cache directory tag file 'CACHEDIR.TAG' to the data directory.
  • Change: Dependencies: Upgrade to ASM 9.7, JSON In Java 20240303, SLF4J 2.0.13, Guava 33.1.0-jre, Plexus Common Utilities 3.5.1, and Commons Codec 1.16.1.
  • Change: Test dependencies: Upgrade to 5.10.2, Testcontainers 1.19.7, Mockito 5.11.0, AssertJ 3.25.3, Commons Lang 3.14.0, Commons IO 2.16.1, Commons Compress 1.26.1, and JMH 1.37.
  • Change: Build: Use Gradle 8.7 and Java 17.
  • Change: Tests: Run release tests on Java 11, 17, and 21.

v2.1.0

18 Dec 12:24
Compare
Choose a tag to compare
  • Feature: The command line option "--options " can be used to load additional options from a file.
  • Change: The main artifact jarhc-2.1.0.jar has an automatic module name org.jarhc.
  • Change: Dependencies: Upgrade to ASM 9.4, SLF4J 2.0.6, JSON In Java 20220924, Commons Codec 1.15, and Plexus Common Utilities 3.5.0.
  • Change: Dependencies: Remove slf4j-simple as direct dependency and simplelogger.properties as resource. Both are still included in jarhc-with-deps-2.1.0.jar.
  • Change: Test dependencies: Upgrade to JUnit 5.9.1, Testcontainers 1.17.6, Mockito 4.10.0, and JMH 1.36.

v.2.0.0

30 Jun 11:08
Compare
Choose a tag to compare

JarHC 2.0.0 requires at least Java 11. It does not run on Java 8 anymore.

However, Java 8 projects can still be analyzed with the following options:

--release 8 --runtime <JAVA_HOME>/jre/lib

where <JAVA_HOME> is the path to a Java 8 installation.

  • Change: JarHC 2.0.0 requires at least Java 11.
  • Feature: Binary Compatibility: Check if referenced class is in package which is exported to module of source class.
  • Feature: The command line option "--output" can be used multiple times to generate multiple reports.
  • Change: The command line option "--format" is no longer supported.
  • Change: Performance improvements for better memory usage and faster analysis.
  • Bugfix: Increase upper limit for number of files in a JAR archive from 10000 to 25000.
  • Change: Dependencies: Upgrade to ASM 9.3, SLF4J 1.7.36, and JSON In Java 20220320.
  • Change: Test dependencies: Upgrade to Mockito 4.6.1, AssertJ 3.23.1, Testcontainers 1.17.3, and JMH 1.35.

v1.7

17 Jan 12:14
Compare
Choose a tag to compare
  • Feature: Support analysis of JMOD files.
  • Feature: Duplicate Classes: Calculate API similarity.
  • Feature: Duplicate Classes: New command line option '--ignore-exact-copy' to not report duplicate classes or resources which are exact copies.
  • Bugfix: Binary Compatibility: Fix access control for members in outer and inner classes.
  • Bugfix: Binary Compatibility: Support for MethodHandle and VarHandle implemented.
  • Change: Dependencies: Upgrade to SLF4J 1.7.33.

v1.6

11 Jan 20:24
Compare
Choose a tag to compare
  • Feature: Binary Compatibility: New command line option "--ignore-missing-annotations" can be used to suppress issues when no class definition is found for an annotation.
  • Feature: Support for multi-release JAR files with new command line option "--release".
  • Feature: Binary Compatibility: Report inconsistency between class file version and multi-release bundling. Example: "Compiled for Java 17, but bundled for Java 11."
  • Feature: New section "Modules" added with information about JPMS modules.
  • Feature: Support JAR manifest attribute "Automatic-Module-Name".
  • Change: Reports: Remove column "Module" from section "JAR Files".
  • Change: Reports: Move column "Multi-release" from section "JAR Files" to section "Class Versions".
  • Feature: New command line option "--trace" to enable trace log output.
  • Feature: The special value "--data TEMP" can be used to create a temporary data directory.
  • Feature: Support environment variable JARHC_DATA to set path to local data directory.
  • Bugfix: Build: Add manifest attribute to mark jarhc-with-deps.jar as multi-release JAR.
  • Change: Build: Migrate from Maven to Gradle/Kotlin.
  • Change: Dependencies: Upgrade to ASM 9.2, JSON In Java 20211205, Aether 1.1.0, and SLF4J 1.7.32.
  • Change: Test dependencies: Upgrade to JUnit 5.8.2, Mockito 4.1.0, and JMH 1.34.

v1.5

05 Aug 19:48
Compare
Choose a tag to compare
  • Change: Dependencies analyzer: Use Maven/Aether libraries to resolve dependencies.
  • Change: The default value of command line option "--data" has been changed from "./.jarhc" to "~/.jarhc".
  • Change: The command line option "--nodata" is no longer supported.

v1.4

03 Oct 21:05
Compare
Choose a tag to compare
  • Feature: Dependencies analyzer: Report direct dependencies as declared in POM files, and analyze their availability on the class path.
  • Feature: Support Apache Buildr artifact coordinates.
  • Feature: New command line option "--strategy ParentFirst|ParentLast" to control the class loader strategy.
  • Feature: New command line option "--debug" to enable debug log output.
  • Dependencies: Add SLF4J 1.7.28.
  • Bugfix: Binary Compatibility analyzer: Do not perform access check on return type of method call.
  • Bugfix: Command line: Accept Maven coordinates without packaging information.
  • Bugfix: ClassDefBuilder: Do not add reference to return type of method for method calls.
  • Bugfix: Binary Compatibility analyzer: Do not report error "Interface is an annotation" if a class is implementing an annotation interface.

v1.3

31 Aug 13:26
Compare
Choose a tag to compare
  • Feature: Binary Compatibility analyzer: Report unimplemented abstract methods.
  • Feature: Duplicate Classes analyzer: Check if duplicate resources are exact copies or have different content.
  • Bugfix: Classpath: When collecting JAR files from a directory, always sort files and directories by name (case-insensitive). This guarantees a stable order across different platforms (Windows, Linux, macOS, ...). Add first all JAR files in the current directory, and then search for JAR files in subdirectories.
  • Bugfix: Classpath: When looking for a class by name, search through JAR files in the order they appear on the classpath.
  • Performance: Binary Compatibility analyzer: Analyze class definitions with multiple threads in parallel.
  • Dependencies: JSON in Java 20190722, JUnit 5.5.1, and Mockito 3.0.0.
  • Build: Run automated tests with Travis CI on OpenJDK 8 - 12.

v1.2

22 Apr 14:31
Compare
Choose a tag to compare
  • Feature: New report format "list" implemented. It is a plain text format but uses a list-like approach instead of ASCII art tables. It is expected to be more useful when comparing reports with tools like diff.
  • Feature: Blacklist analyzer: Report executable files bundled as resources: .exe, .dll, .so, .bat, .sh.
  • Feature: New command line option "--skip-empty" to exclude empty sections from the report.
  • Feature: New command line options "--data " and "--nodata" added.
  • Dependencies: Upgrade to ASM 7.1, JUnit 5.4.2, and Mockito 2.27.0.