Skip to content

Project Minerva is a set of libraries to analyze Java applications using AI and provide recommendations as a base for microservices. This binary instrumenter enables the instrumenting of a running Java application's classes and methods in order to collect data for AI refactoring consideration.

License

IBM/codenet-minerva-java-instrumenter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Minerva for Modernization - Java Binary Instrumenter

License

Project Minerva for Modernization is a set of libraries to analyze Java applications using AI and provide recommendations for refactoring them into partitions, which can be starting points for microservices. This binary instrumenter component enables the instrumenting of a running Java application's classes and methods in order to collect data for AI refactoring consideration.

Build (Maven Based)

mvn install

Build (Docker Based)

docker build -t minerva-agent .

docker run --rm -it -v [target dir]:/var/install minerva-agent

Usage

java -javaagent:[base dir]/minerva-agent-1.0-jar-with-dependencies.jar=[JSON-based configuration file or a directory containing instrumenter-config.json] ...

e.g. java -javaagent:/c/eclipse/minerva-agent/agent/target/minerva-agent-1.0-jar-with-dependencies.jar=/c/example/agent-config.json ...

e.g. java -javaagent:/c/eclipse/minerva-agent/agent/target/minerva-agent-1.0-jar-with-dependencies.jar=/c/example ... (if /c/example contains instrumenter-config.json)

Configuration (JSON)

{
	"filter": {
		"type": (required, string :: filter type name),
		"version": (required, string :: filter version),
		"config": (optional, JSON element :: filter configuration)
	},
	"generator": {
		"type": (required, string :: generator type name),
		"version": (required, string :: generator version),
		"config": (optional, JSON element :: generator configuration)
	}
}

Example:

{
	"filter": {
		"type": "sym-ref-tables",
		"version": "1.0",
		"config": "/c/daytrader/application-data/tables"
	},
	"generator": {
		"type": "println",
		"version": "1.0"
	}
}

Filter Configuration (Minerva Analyzer symTable/refTable)

"filter": {
	"type": "sym-ref-tables",
	"version": "1.0",
	"config": (string :: directory containing symTable/refTable JSON files)
}

Example:

"filter": {
	"type": "sym-ref-tables",
	"version": "1.0",
	"config": "/c/daytrader/application-data/tables"
}

Filter Configuration (List of packages)

"filter": {
	"type": "package",
	"version": "1.0",
	"config": (array :: package name) or (string :: package name)
}

Example:

"filter": {
	"type": "package",
	"version": "1.0",
	"config": ["com.ibm.websphere.samples.daytrader"]
}

Generator Configuration (Minerva System.out/System.err instrumentation)

"generator": {
	"type": "println",
	"version": "1.0"
}

Generator Configuration (java.util.logging based instrumentation)

"generator": {
	"type": "java-util-logging",
	"version": "1.0"
}

About

Project Minerva is a set of libraries to analyze Java applications using AI and provide recommendations as a base for microservices. This binary instrumenter enables the instrumenting of a running Java application's classes and methods in order to collect data for AI refactoring consideration.

Resources

License

Stars

Watchers

Forks

Packages

No packages published