Gentle reflection of types, names and resources
Group: io.earcam.instrumental - All Dependencies
Annotation to demarcate fluent API methods
Create/read archives in-memory/on-disk, supports Multi-Release JARs
Not just the usual fudge of ClassLoader.defineClass() - loads in-memory JARs returning valid resource URLs
Compile from memory/filesystem to memory/filesystem, easily
Smoother API than java.lang.reflect and various InvocationHandlers
Abstraction of java.util.jar.Manifest, extended variously
JPMS module tooling; read/write bytecode/sourcecode
Bytecode parsing sufficient to enable auto-importing for programmatic modules
Archive extension for JPMS modules
OSGi module tooling; read/write bundle manifests
Glues instrumental.compile to instrumental.archive, compile to JAR entirely in-memory
Archive extension for digital signing
Use Java Agents in JUnit tests (${version.junit4} and ${version.junit5}) without any external configuration
Dynamically load a Java Agent or acquire java.lang.instrument.Instrumentation via SPI
Proxy classes using standard java.lang.reflect.InvocationHandler
Create and run dynamic JPMS module layers from an in-memory classloader
Annotation processor of fluently annotated methods, generating APIs with fluency
Archive extension for OSGi bundles
Install/Resolve archives to/from Maven repositories
Glues instrumental.archive to to instrumental.compile, enabling in-memory archives as dependencies
Java Agent to remove final modifiers from classes, methods and fields