https://github.com/megyssstaa/jminima
Minimalistic declarative JVM instrumentation library on top of ASM
https://github.com/megyssstaa/jminima
api asm bytecode bytecode-instrumentation bytecode-manipulation declarative declarative-programming java java-asm jvm jvm-bytecode library
Last synced: 4 months ago
JSON representation
Minimalistic declarative JVM instrumentation library on top of ASM
- Host: GitHub
- URL: https://github.com/megyssstaa/jminima
- Owner: MeGysssTaa
- License: apache-2.0
- Created: 2021-06-02T17:11:50.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2021-07-03T13:01:44.000Z (almost 4 years ago)
- Last Synced: 2024-11-12T21:42:39.858Z (6 months ago)
- Topics: api, asm, bytecode, bytecode-instrumentation, bytecode-manipulation, declarative, declarative-programming, java, java-asm, jvm, jvm-bytecode, library
- Language: Java
- Homepage:
- Size: 109 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JMinima
**JMinima** is a lightweight Java (JVM) bytecode instrumentation (assembling/disassembling/manipulation/analysis) library written on top of [**ASM**](https://asm.ow2.io/). **JMinima** attempts to encourage *declarative* style of programming to make various bytecode instrumentation routines shorter, more concise, and easier to write and understand. That is, instead of writing *"create variable X with value Y, then check if Z, ..."* you're just doing *"I want a class with the following parameters to be assembled and injected: ..."*.
# Before installing
**JMinima** requires two other libraries to work: [**Apache Commons IO**](https://commons.apache.org/proper/commons-io/) and [**ASM**](https://asm.ow2.io/). However, **JMinima** is *not* shipped with these libraries inside. You have to add them in your project build script yourself.
That is, if you are writing another library based on **JMinima**, you should install both **JMinima** and the libraries above as *compile-time* dependencies. Otherwise, if you're building a complete runnable application based on **JMinima**, make sure to install all the libraries as *run-time* dependencies.
Note that you can use other versions of these libraries as well (not just the one specified in the installation instructions below). However, make sure that the version you are using is not *too* old — otherwise certain features might not be available. If something is not working as expected, please first try to use the exact versions of libraries that **JMinima** has been built against (you can find this information in installation instructions below).
# Installation (Gradle)
```groovy
repositories {
mavenCentral()maven {
name 'Public Reflex Repository'
url 'https://archiva.reflex.rip/repository/public/'
}
}def asmVersion = '9.1'
dependencies {
implementation group: 'commons-io', name: 'commons-io', version: '2.8.0'
implementation group: 'org.ow2.asm', name: 'asm', version: "${asmVersion}"
implementation group: 'org.ow2.asm', name: 'asm-util', version: "${asmVersion}"
implementation group: 'me.darksidecode.jminima', name: 'jminima', version: '1.4.0'
}
```# Installation (Maven)
```xml
reflex.public
Public Reflex Repository
https://archiva.reflex.rip/repository/public/
commons-io
commons-io
2.8.0
org.ow2.asm
asm
9.1
org.ow2.asm
asm-util
9.1
me.darksidecode.jminima
jminima
1.4.0
```
# License
[**Apache License 2.0**](https://github.com/MeGysssTaa/jminima/blob/main/LICENSE)